|
|
|
#11 |
|
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
В аттаче версии с загрузкой полных моделей. Можно загружать him, sim, так-же и отдельные меши (msh). Меши могут быть как бинарные, так и текстовые.
Вжные моменты: 1) Текстуры могут быть как TGA, так и IMF 2) Текстуры грузятся из текущей директории 3) Если при загрузке путь содержит "\3do\plane\", то при загрузке эта директория сканируется и собирается список всех доступных для модели скинов (которые лежат в директориях summer, winter и т.д.). Можно создавать свои директории с любым именем и кидать туда свои скины. Главное, чтобы они были: a) TGA/IMF b) содержали три версии для лодов (skin1o, skin1p, skin1q) Если кроме этого для нулевого лода в директории есть и tgb, то для него будет использован он. Скины можно переключать. Также можно переключать различные уровни повреждения (ели оно доступно для модели). Немного о текстурировании. Оно всё ещё не полное. Во-первых, не устанавливаю для материала его хар-ки (отражающую способность, яркость и т.д.). Во-вторых, не использую мультитекстурирование, соответственно декали (эмблемы, места под знаки и номера дефолтные, обычно чёрные фрагменты текстур). Третий момент - из-за того, что помимо описания в him правила сборки ещё задаются и в классе модели, иногда при отображении возникают некоторые артефакты. Например, щиток не выдвинут, но модель отрисовывается как будто с выдвинутым щитком, но без него. С этим ничего не сделать, придётся терпеть так, автоматически разбирать классы и строить полную модель я не буду, иначе придётся писать всю игру. Ну, почти всю. ![]() Ещё один момент, который является следствием того, что все правила сборки сразу недоступны, это z-fighting (дрожание текстур с некоторых частях модели). Кратко, что это такое и почему возникает: Предствте, что у вас есть два полигона, которые находятся на одинаковом расстоянии от вас. Пусть один красный, а другой - синий. Какой мы увидим? Если они перпендикулярны оси взгляда, то тот, который нарисовали последним. Но если мы начнём их поворачивать, то из-за конечной глубины z-буффера и конечной точности вычислений на определённых углах у нас одна текстура будет пробиваться через другую. Это очень на пальцах, чтоб не заграмождать. Из-за того, что в моделях встречаются фрагменты находящиеся на одинаковых позициях, но с разными текстурами и мы не знаем, какой их них должен быть чейчас показан этот эффект присутствует при отображении. С этим тож, без разбора класса, ничего особенно не сделать. Может позже сделаю возможность отключать отображение отдельных мешей. Но пока так. Ну и при отображении возможны некоторые артефакты связанные с блендингом. Во-первых - при отрисовке я не сортирую полигоны, а во-вторых - мне непонятен физ. смысл одного параметра в материале (tfBlendAdd). Во общем, где-то что-то может просвечивать когда не надо, или на оборот, не просвечивать. ![]() Ещё добавил пару опций. Во-первых, отрисовку нормалей. А во-вторых - возможность закраски полигонов цветными треугольниками. Это, как раз, для выявления в модели мест, где возможно возникнавение z-fighting'а и нахождения кривоватых мешей. Такие действительно есть, например, дублирующиеся полигоны, когда они в абсолютно одинаковой позиции. Если оключить текстурирование, включить цветные полигоны и отображение только каркаса, то при вращении модели хорошо видно мерцающие рёбра там, гду высока вероятность возникнавения z-fighting'а. Ещё сделал сохранение положения и размера окра, а также опцый отображения. По записи. Запись сразу всей модели в текстовые меши и в obj (каждый меш пишется в отдельный файл). В obj пока только в раздельные файлы (также, каждому obj свой mtl). Запись всей модели в один файл сделаю познее, сейчас, как уже говорил, свободного времени практически нет. Текстуры и mat-ы не пишу, может потом и сделаю, но там надо копировать игровую структуру директорий, а это чревато перезаписыванием того, что не надо. Пока так, там посмотрим. Ещё включил анизатропную фильтрацию текстур и сглаживание (если карта расширение поддерживает). Вроде всё, но может чего забыл. Проверяйте и раппортуйте здесь битьём в бубен.
|
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|