ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
Состояние разработки 0.97
GatesofAmalgamДата: Среда, 05.12.2012, 03:00 | Сообщение # 271
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 158
Награды: 0
Статус: Offline
Во, чего нам в SE не хватало так это процедурно генерирующихся женщин. biggrin

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) - т.е. теперь можно использовать несколько текстур на модель, и не нужно делать атлас текстур (хотя полезно иметь одну текстуру вместо десятка). Можно даже не использовать текстуры в некоторых частях модели, а обойтись цветными материалами, и иодель все еще будет красивая (одна из машинок на скриншотах не использует текстуры).

    Большие корабли:



    Малые корабли. Машинки это просто тест нового кода импорта моделей. Странная штуковина из двух сфер и кубов - это тоже (одна) тестовая модель - она показывает, что сглаживание нормалей работает правильно (одна сфера гладкая, на другой видны плоские треугольники).

    Прикрепления: 5875568.jpg (285.7 Kb) · 4491177.jpg (143.5 Kb)


  • BamBamДата: Среда, 05.12.2012, 03:44 | Сообщение # 273
    Исследователь
    Группа: Пользователи
    Украина
    Сообщений: 177
    Награды: 1
    Статус: Offline
    Круто smile Экономия видеопямяти тоже очень хорошо, правда все равно смотрю кушает памяти нехило, требовательная игра становится к ресурсам, но она того стОит smile

    p.s. А джипы, джипы то будут? biggrin


    когда придумывал ник моя фантазия умерла

    Сообщение отредактировал BamBam - Среда, 05.12.2012, 03:46
    MontesumaДата: Среда, 05.12.2012, 08:42 | Сообщение # 274
    Первооткрыватель
    Группа: Пользователи
    Российская Федерация
    Сообщений: 539
    Награды: 3
    Статус: Offline
    Круто!! Даёшь звезду смерти!!!

    Quote (BamBam)
    p.s. А джипы, джипы то будут?


    Ага, но тогда это уже будет GTA SE или SE GTA biggrin biggrin biggrin


    Если череп смеется - значит у него есть на то причины.
    Слова Ванталы
    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 с неограниченным миром biggrin
    The_MaksimkaДата: Среда, 05.12.2012, 11:59 | Сообщение # 277
    Нет аватара
    Космический турист
    Группа: Пользователи
    Российская Федерация
    Сообщений: 27
    Награды: 0
    Статус: Offline
    Quote (oleg999)
    Montesuma, да GTA SE с неограниченным миром

    Потом с помощью кода, на машине летать с планеты на планету smile


    Сообщение отредактировал 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)
    ---------------------------------------------
    Вы нормали сами считаете, или загружаете?
    Прикрепления: 2238202.jpg (106.2 Kb) · 2105868.jpg (61.4 Kb)


    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
    Нормали загружаю. Сейчас вроде стало лучше, но на некоторых моделях тангенсоиды инвертируются большими блоками, а не отдельными верщинами. На шаттле например одна половина флюзеляжа инвертирована.

    Поиск:

    >