Состояние разработки 0.97
|
|
GatesofAmalgam | Дата: Среда, 05.12.2012, 03:00 | Сообщение # 271 |
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 158
Награды: 0
Статус: Offline
| Во, чего нам в SE не хватало так это процедурно генерирующихся женщин.
i5 2500k@4.0ггц - 24гб RAM - GTX 570, 1280мб - SSD 240гб Intel 520 - Win7x64
|
|
| |
SpaceEngineer | Дата: Среда, 05.12.2012, 03:28 | Сообщение # 272 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Последние обновления:
Кнопка [End] поворачивает камеру горизонтально Импорт моделей кораблей в формате OBJ с материалами и множественными текстурами Кэш для текстур и моделей
Я доделал кэш для текстур и моделей (кораблей). Теперь можно использовать одну и ту же текстуру для разных моделей, и каждая уникальная текстура будет храниться в видеопамяти только один раз. И в отличие от SE 0.96, теперь можно использовать много копий одного корабля (т.е. сделать флот шаттлов, звездолётов и т.д.), и его модель будет храниться в видеопамяти тоже только один раз - каждая копия корабля будет использовать одну и ту же модель. Кэши текстур и моделей теперь включены в менеджер памяти SE, так что SE теперь автоматически выгружает старые текстуры и модели, когда надо освободить память для загрузки новых ресурсов (текстур планет, моделей галактик, других кораблей и т.д.).
Скриншоты показывают "флот" всех моделей, с которыми сейчас дебажу SE. Большой корабль AmID91'a скопирован 4 раза. Его модель содержит почти миллион полигонов и использует 104 Mb видеопамяти, однако она хранится в памяти только один раз, так что эти 4 корабля использует только 104 Мб. Весь флот использует 258 Mb для моделей и 152 Мб для текстур - теперь вы видите, как важно избегать хранения нескольких копий текстуры/модели в памяти.
Размеры моделей будут значительно уменьшены, когда я сделаю конструктор кораблей. Сейчас каждый топливный бак, каждое сопло двигателя, каждая опорная балка в модели сделаны из уникальных полигонов. Но в конструкторе можно будет собирать корабли из нескольких десятков основных модулей, и каждый модуль будет иметь свою собственную модель, хранящиеся в памяти только один раз.
Следующий шаг - сделать возможность динамического добавления и удаления космических кораблей. Я пока сделаю простой интерфейс с кнопками "создать корабль здесь" и "уничтожить корабль".
Хорошие новости для моддеров - теперь SE поддерживает импорт моделей из OBJ формата библиотекой материалов (MTL) - т.е. теперь можно использовать несколько текстур на модель, и не нужно делать атлас текстур (хотя полезно иметь одну текстуру вместо десятка). Можно даже не использовать текстуры в некоторых частях модели, а обойтись цветными материалами, и иодель все еще будет красивая (одна из машинок на скриншотах не использует текстуры).
Большие корабли:
Малые корабли. Машинки это просто тест нового кода импорта моделей. Странная штуковина из двух сфер и кубов - это тоже (одна) тестовая модель - она показывает, что сглаживание нормалей работает правильно (одна сфера гладкая, на другой видны плоские треугольники).
|
|
| |
BamBam | Дата: Среда, 05.12.2012, 03:44 | Сообщение # 273 |
Исследователь
Группа: Пользователи
Украина
Сообщений: 177
Награды: 1
Статус: Offline
| Круто Экономия видеопямяти тоже очень хорошо, правда все равно смотрю кушает памяти нехило, требовательная игра становится к ресурсам, но она того стОит
p.s. А джипы, джипы то будут?
когда придумывал ник моя фантазия умерла
Сообщение отредактировал BamBam - Среда, 05.12.2012, 03:46 |
|
| |
Montesuma | Дата: Среда, 05.12.2012, 08:42 | Сообщение # 274 |
Первооткрыватель
Группа: Пользователи
Российская Федерация
Сообщений: 539
Награды: 3
Статус: Offline
| Круто!! Даёшь звезду смерти!!!
Quote (BamBam) p.s. А джипы, джипы то будут?
Ага, но тогда это уже будет GTA SE или SE GTA
Если череп смеется - значит у него есть на то причины. Слова Ванталы
|
|
| |
SHW | Дата: Среда, 05.12.2012, 11:08 | Сообщение # 275 |
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
| Замечательно. А с картами нормалей для моделей не разбирались больше? А то я не знаю, что сделать со своими кораблями, чтобы у них не было видно границ полигонов в SE.
Win7 Pro x64 Intel Core2Quad 2.5GHz 4GiB RAM NVidia GForce 9800 1 GiB
|
|
| |
oleg999 | Дата: Среда, 05.12.2012, 11:12 | Сообщение # 276 |
Первооткрыватель
Группа: Пользователи
Российская Федерация
Сообщений: 424
Награды: 2
Статус: Offline
| Montesuma, да GTA SE с неограниченным миром
|
|
| |
The_Maksimka | Дата: Среда, 05.12.2012, 11:59 | Сообщение # 277 |
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 27
Награды: 0
Статус: Offline
| Quote (oleg999) Montesuma, да GTA SE с неограниченным миром Потом с помощью кода, на машине летать с планеты на планету
Сообщение отредактировал The_Maksimka - Среда, 05.12.2012, 12:00 |
|
| |
SpaceEngineer | Дата: Среда, 05.12.2012, 12:57 | Сообщение # 278 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Quote (SHW) Замечательно. А с картами нормалей для моделей не разбирались больше? А то я не знаю, что сделать со своими кораблями, чтобы у них не было видно границ полигонов в SE. Пока не исправил. Проблема наблюдаются при импорте из OBJ с вырожденными треугольниками, две вершины которых имеют одинаковые текстурные координаты (s1=s2 или t1=t2) - тогда не получается правильно построить тангенциальный вектор. OBJ не сохраняет тангенциальные вектора, в этом и проблема.
|
|
| |
SHW | Дата: Среда, 05.12.2012, 14:29 | Сообщение # 279 |
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
| Quote (SpaceEngineer) OBJ не сохраняет тангенциальные вектора, в этом и проблема. Да, есть такая проблема. В том движке, что я использую, тангенсоиды суммируют по всем полигонам, которые шарят одну вершину. Но и тут возникают проблемы с группами размытия, отражениями и разрывами в текстурных координатах. Я для этого специально разбивал модельки на куски по нормалям и UV Seam-ам, тогда проблемы исчезли.
Кстати, при импорте в движок Unity, мне пришлось инвертировать зелёный канал карты нормалей, чтобы глюков не было (то есть V координата у них видимо переворачивается при импорте из obj).
Хотелось бы, чтобы в новой версии проблема была решена, а то при добавлении спекуляра корабли с картой нормалей вообще превращаются в лютый писец. Я могу скинуть код, который используется для расчёта тангенсоид, разбиения меша, а так же шейдеры для рендеринга в тех примерах, что я выкладывал.
Win7 Pro x64 Intel Core2Quad 2.5GHz 4GiB RAM NVidia GForce 9800 1 GiB
|
|
| |
SpaceEngineer | Дата: Среда, 05.12.2012, 20:26 | Сообщение # 280 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Quote (SHW) Я могу скинуть код, который используется для расчёта тангенсоид, разбиения меша, а так же шейдеры для рендеринга в тех примерах, что я выкладывал. Давай, может поможет.
|
|
| |
SHW | Дата: Четверг, 06.12.2012, 10:27 | Сообщение # 281 |
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
| Класс геометрии, функция computeTangents считает таненсоиды. Шейдеры + функция для разбиения геометрии. Отдельно, так как это не часть движка. Если при загрузке obj сразу делить его на правильные куски, эта функция не понадобится. Кстати, тангенсоида в этом движке храниться в виде вектора + знак бинормали (в четвёртой компоненте). А сама бинормаль считается в вершинном шейдере.
Win7 Pro x64 Intel Core2Quad 2.5GHz 4GiB RAM NVidia GForce 9800 1 GiB
|
|
| |
SpaceEngineer | Дата: Четверг, 06.12.2012, 18:20 | Сообщение # 282 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Quote (SHW) Кстати, тангенсоида в этом движке храниться в виде вектора + знак бинормали (в четвёртой компоненте). А сама бинормаль считается в вершинном шейдере. У меня также, но все же со знаком по-видимому что-то не то.
UPD: проблемы по-видимому возникают с вырожденными вершинами. В твоем коде нет проверки, что tan1[vertexIndex] может быть нулевым вектором, и normalize даст бесконечность.
В свою очередь, tan1 может быть нулевым, потому что если вот тут в занменателе будет ноль: r = 1.0 / ( s1 * t2 - s2 * t1 ); - я просто выхожу из функции handleTriangle, не прибавляя sdir и tdir к tan1 и tan2, иначе там будут бесконечности.
|
|
| |
SHW | Дата: Пятница, 07.12.2012, 09:50 | Сообщение # 283 |
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
| На своих модельках я проверял получаемые тангенсоиды. Никаких проблем не было. Вырожденные вершины крайне редкая ситуация (в нормальных моделях такого вообще не должно быть). Да, и если где-то получалась бесконечность, то глюки были бы заметны, а у меня их нет.
Возможно, как в Unity3D, проблема в интерпретации знаков текстурных координат. Или где-то перепутаны U и V. Попробую поэкспериментировать с ними (инвертировать каналы, менять их местами).
Win7 Pro x64 Intel Core2Quad 2.5GHz 4GiB RAM NVidia GForce 9800 1 GiB
Сообщение отредактировал SHW - Пятница, 07.12.2012, 09:51 |
|
| |
SHW | Дата: Пятница, 07.12.2012, 11:19 | Сообщение # 284 |
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
| Не похоже, что проблема в знаках текстурных координат. Пробовал разные комбинации. Вот тут, например, вершина явно одна и та же, но почти у всех прилегающих полигонов получилась своя тангенсоида. Для сравнения, та же моделька (и текстуры) в Юнити: из-за инвертированной V видны швы UV координат, но вершины смежных полигонов имеют одну и ту же тангенсоиду.
Добавлено (07.12.2012, 11:19) --------------------------------------------- Вы нормали сами считаете, или загружаете?
Win7 Pro x64 Intel Core2Quad 2.5GHz 4GiB RAM NVidia GForce 9800 1 GiB
Сообщение отредактировал SHW - Пятница, 07.12.2012, 11:25 |
|
| |
SpaceEngineer | Дата: Воскресенье, 09.12.2012, 00:39 | Сообщение # 285 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Нормали загружаю. Сейчас вроде стало лучше, но на некоторых моделях тангенсоиды инвертируются большими блоками, а не отдельными верщинами. На шаттле например одна половина флюзеляжа инвертирована.
|
|
| |