Хранение вершин, нормалей, полигонов 3D модели
Буду не всё разжёвывать, так как времени немного.
Работать мы будем с файлом VEHICLES.EXP. Находится он в папке SHELL образа игры Vigilante 8. В этом файле хранятся 3D модели и текстуры автомобилей из меню выбора авто.
Первая модель, это модель автомобиля 67 Rattler. Данные первой модели с $2E по $455E.
Полигоны хранятся с $10E по $D62.
Точки (Вершины, нормали) – с $D62 по $11EA
Того получается
Полигонов: 145 (примерно)
Точек: 145
Точка занимает 8 байт.
Устройство примерно следующие. Сначала идут координаты X, Y, Z затем стопбайт (хотя он не используется - визуальный). Каждая из координат занимает 2 байта.
Устройство точек точно такое же, как и в моделям TMD.
Скорее всего сначала идёт блок вершин, а потом блок нормалей.
С полигонами всё намного сложнее. Придётся рассмотреть много вариантов.
Полигоны записаны в «блоке». То есть там есть информация как о полигонах, так видимо и о текстурах.
Первый, так называемый, «блок» занимает 24 байта.
Информация о полигоне идёт через 4 байта с начала блока и занимает 6 байт.
Полигон представляет собой треугольник.
Теперь немного о самих блоках.
Первые 4 байта информация которая поможет нам понять, как будет устроен блок. Следующие 6 байт - это полигон. Все остальные байты, судя по всему информация о текстурах.
Рассмотрим варианты.
XX XX XX 09 - Данная структура говорит нам о том, что следующий блок будет через 20 байт.
Красной полосой обозначены 20 байт, зелёной – следующий информационный блок.
XX XX XX 05 - Данная структура говорит нам о том, что следующий блок будет через 16 байт.
Цвета и полоски на картинки не несут смысловой нагрузки.
XX XX XX 08 – Данная структура говорит нам о том, что следующий блок будет через 12 байт.
Красной полосой обозначены 12 байт, зелёной – следующий информационный блок.
XX XX XX 04 – Данная структура говорит нам о том, что следующий блок будет через 8 байт.
Цвета и полоски на картинки не несут смысловой нагрузки.
XX XX XX 0C - Данная структура говорит нам о том, что следующий блок будет через 16 байт.
XX XX XX 2C - Данная структура говорит нам о том, что следующий блок будет через 16 байт.
XX XX XX 00 - Данная структура говорит нам о том, что следующий блок будет через 8 байт.
XX XX XX 1D - Данная структура говорит нам о том, что следующий блок будет через 20 байт.
XX XX XX 1F - Данная структура говорит нам о том, что следующий блок будет через 20 байт.
Мог где-то запутаться, но примерно как-то так.
Прикрепленные изображения