Всех с праздниками!
В аттаче новая версия. Что нового:
- Переделал немного отрисовку.
- Добавил опцию автоматической корректировки геометрии оверлеев (см. описание ниже)
- Добавил опцию игнорирования неизвесных секций (см. описание ниже)
- Пофиксил некоторое кол-во мелких баг. Может и новых добавилось.
Теперь немного подробнее о новых опциях.
Автоматическая коррекция геометрии оверлеев делает следующее:
Если опция включена, то при загрузке моделей для оверлеев я проверяю совпадение геометрии оверлея с подстилающей поверхностью, и если она не совпадает, то корректирую геометрию оверлеея таким образом, чтоб вершины полигонов оверлея совпадали с вершинами полигонов подстилающей (координаты вершин и нормали). Делаю просто, без тесселяций и прочих сложных наворотов, просто смотрю координаты в некотором диапазоне. Поиск совпадений осуществляю в небольшом диапазоне отклонений, иначе можно цеплять левые треугольники. Для чего это вообще надо? Всё просто. На многих моделях оверлеи имеют огличную от подстилающей геометрию. В результате у нас нормиали смотрят по другому, вершины лежат в других координатах и при отрисовке оверлей ложится на подстилающую не так, как должен. В результате могут появлятся визуальные баги в отрисовке. В частности, это касатся дырок, например, в плоскостях/фюзеляже, когда пробита обшивка. Долго возился с тем, чтоб такие повреждения нормально рисовались, но так и не добился нормального результата и в результате сделал эту фичу. Отклонения также могут влиять на освещение фрагментов модели из-за того, что нормали оверлея смотрят по другому, чем у подстилающей. После коррекции они совпадают и оверлей будет освещаться также, как и поверхность под ним.
Как-то так. Опция отключаемая. Когда отключена, то никаких изменений в модель не вносится. Если опция включена и для оверлея не смог найти фрагмент подстилающей, то ругаюсь об этом в лог.
При отключенном текстурировании оверлеи с совпадающей геометрией крашу в оттенки зелёного, с не совпадающей в оттенки красного.
Игнорирование неизвестных секций:
Сделал эту опцию по просьбе carsmaster-а. Если опция включена, то при обнаружении неизвестной мне секции в меше продолжаю открытие модели (только в лог ругаюсь о том, что секция мне неизвестная). Для чего это надо? Есть такая игра, WWII, там очень похожие меши моделей, но в них присутствуют отличные от Ил2 секции. Для чего они нужны я не разбирался, но теперь можно открывать модели и из этой игры. Правда не знаю, как оно будет работать, у меня есть только одна моделька из этой игры и она открывается. Ещё момент - в WWII структура каталогов с материалами и текстурами похоже немного другая и по этому текстуры нормально не подхватываются. Плюс слой два там для bump-а используется, поддержки которого у меня по понятным причинам нет.
Но в любом случае, можно какие-то модельки теперь попробовать по открывать. Может пригодится для чего.
Ну и о логе, о котором чуть выше обсуждалось. Решил его не приделывать. Можно и без этого обойтись, просто нет свободного времени абсолютно. Можно получить весь лог так:
Правая кнопка на окне лога ->В меню "выделить всё"->"Копировать"->Открыть Блокнот->"Вставить"->Профит.
Вроде всё. Совершенно точно о чём-то забыл по причине длинной паузы.
Надеюсь, что по ходу дела вспомниццо.
Версия 1.02 (билд 311)
UPD: вот, вспомнил уже!
В WWII текстуры хоть и имеют расширение tga, но по факту там dds. Чтоб они нормально подхватывались их нужно в tga конвертить.