Форум PSCD.ru

Игровые приставки и Эмуляция => Ромхакинг и программирование => Уроки / Документация => Тема начата: SPOT от 22 ноября 2016, 14:32

Название: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 22 ноября 2016, 14:32
В этой теме я постараюсь раскрыть формат хранения 3D моделей в игре Vigilante 8 для Sony PlayStation.
 
Хранение вершин, нормалей, полигонов 3D модели (http://pscd.ru/forum/index.php?/topic/589-ustroistvo-3d-modelei-v-igre-vigilante-8-psx/?p=6585)
Устройство «архива» с 3D моделью (XOBFBIN) (http://pscd.ru/forum/index.php?/topic/589-ustroistvo-3d-modelei-v-igre-vigilante-8-psx/?p=6586)
 
Vigilante 8 3D To TMD (http://pscd.ru/forum/index.php?/topic/589-ustroistvo-3d-modelei-v-igre-vigilante-8-psx/?p=6713)- программа для просмотра 3D моделей
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 22 ноября 2016, 14:32
Хранение вершин, нормалей, полигонов 3D модели
 
Буду не всё разжёвывать, так как времени немного.
 
Работать мы будем с файлом VEHICLES.EXP. Находится он в папке SHELL образа игры Vigilante 8 (http://pscd.ru/games/psx/v/1276-vigilante-8.html). В этом файле хранятся 3D модели и текстуры автомобилей из меню выбора авто.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-25454700-1479818149.png)
Первая модель, это модель автомобиля 67 Rattler. Данные первой модели с $2E по $455E.
 
Полигоны хранятся с $10E по $D62.
 
Точки (Вершины, нормали) – с $D62 по $11EA
 
Того получается
Полигонов: 145 (примерно)
Точек: 145
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-69731900-1479818139.png)
Точка занимает 8 байт.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-90275400-1479818139.png)
Устройство примерно следующие. Сначала идут координаты X, Y, Z затем стопбайт (хотя он не используется - визуальный). Каждая из координат занимает 2 байта.
Устройство точек точно такое же, как и в моделям TMD.
Скорее всего сначала идёт блок вершин, а потом блок нормалей.
 
С полигонами всё намного сложнее. Придётся рассмотреть много вариантов.
Полигоны записаны в «блоке». То есть там есть информация как о полигонах, так видимо и о текстурах.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-10265800-1479818140.png)
Первый, так называемый, «блок» занимает 24 байта.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-30474700-1479818140.png)
Информация о полигоне идёт через 4 байта с начала блока и занимает 6 байт.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-94341800-1479818148.png)
Полигон представляет собой треугольник.
 
Теперь немного о самих блоках.
Первые 4 байта информация которая поможет нам понять, как будет устроен блок. Следующие 6 байт - это полигон. Все остальные байты, судя по всему информация о текстурах.
 
Рассмотрим варианты.
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-52812100-1479818140.png)
XX XX XX 09 - Данная структура говорит нам о том, что следующий блок будет через 20 байт.
Красной полосой обозначены 20 байт, зелёной – следующий информационный блок.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-69057800-1479818140.png)
XX XX XX 05 - Данная структура говорит нам о том, что следующий блок будет через 16 байт.
Цвета и полоски на картинки не несут смысловой нагрузки.
 
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-87372900-1479818140.png)
XX XX XX 08 – Данная структура говорит нам о том, что следующий блок будет через 12 байт.
Красной полосой обозначены 12 байт, зелёной – следующий информационный блок.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-12054400-1479818141.png)
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 байт.
 
 
Мог где-то запутаться, но примерно как-то так.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 22 ноября 2016, 14:33
Устройство «архива» с 3D моделью (XOBFBIN)
 
Работать мы будем с файлом VEHICLES.EXP. Находится он в папке SHELL образа игры Vigilante 8 (http://pscd.ru/games/psx/v/1276-vigilante-8.html).
 
Будем работать с архивом (банком), который содержит в себе 3D модели колёс и плоскостей.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-24380100-1480685911.png)
Начало архива: $44542
Конец архива: $4E352
Количество моделей в архиве: 12
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-47219700-1480685911.png)
00 00 9E 08 – размер архива с 3D моделями. Размер составляет 40456 байт (9E 08), данные хранятся в неперевёрнутом виде. Отсчёт идёт после этих 4 байт с размером ($4454A).
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-71831500-1480685911.png)
C0 00 00 00 – Количество 3D моделей в архиве. В нашем случае в архиве хранится 12 моделей.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-95405000-1480685911.png)
6С 01 00 00 – Указатель через сколько байт будут интересующие нас данные о 3D моделях. Отсчёт идёт с $44556.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-12024300-1480685912.png)
Переходим на $446C2.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-29053200-1480685912.png)
Здесь в начале идёт 12 указателей на 3D модели. Отсчёт начинается с $446C2.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-45005700-1480685912.png)
94 2B 00 00 – указатель на информацию о текстурах.  Отсчёт начинается с $446C2.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-65217700-1480685912.png)
Переходим по первому указателю (34 00 00 00) в $446F6.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-89947600-1480685912.png)
Здесь 28 байт занимает «служебная» информация о модели.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-07274000-1480685913.png)
18 00 00 00 – количество вершин (точек) в 3D модели. В нашем случае это 24 точки.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-60378700-1480686298.png)
EC 01 00 00 – указатель на точки (вершины). Отсчёт начинается с $446F6.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-76642200-1480686298.png)
12 00 00 00 – количество нормалей (точек) в 3D модели. В нашем случае это 18 точки.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-00092900-1480686299.png)
AC 02 00 00 – указатель на точки (нормали). Отсчёт начинается с $446F6.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-17199300-1480686299.png)
14 00 00 00 – количество полигонов в 3D модели. В нашем случае это 20 полигонов.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-35730400-1480686299.png)
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-61438000-1480686299.png)
1C 00 00 00 – указатель на полигоны. Отсчёт начинается с $446F6.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-81406200-1480686299.png)
0A 00 – Размер (масштаб) 3D модели
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-1-0-02789900-1480686300.png)
86 00 – не удалось установить
 
Для наглядности изображение первой модели из данного архива.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 22 ноября 2016, 16:51
Там сверху в Хранение вершин, нормалей, полигонов 3D модели (http://pscd.ru/forum/index.php?/topic/589-ustroistvo-3d-modelei-v-igre-vigilante-8-psx/?p=6585)  не совсем корректные данные правильней будет так:

a=0x10e;

...

if(traceL[a+3]==0x09){aaPl=24;}
if(traceL[a+3]==0x05){aaPl=20;}
if(traceL[a+3]==0x0C){aaPl=20;}
if(traceL[a+3]==0x08){aaPl=16;}
if(traceL[a+3]==0x04){aaPl=12;}

...

a+= aaPl;
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 22 ноября 2016, 17:16
Проверил, всё именно так как написано в сообщение выше.
 
Авто: '70 Clydesdale
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-81868000-1479827689.png)
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-32693900-1479827689.png)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 25 ноября 2016, 22:53
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-35713800-1480107149.png)
Нашёл модель laydion2.TMD, вставил в V8. На скринах смотрится так себе, в живую намного лучше.
 
(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-42816900-1480107150.png)(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-67554200-1480107150.png)(http://pscd.ru/forum/uploads/monthly_11_2016/post-95-0-20838600-1480107151.png)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: PSXDev от 26 ноября 2016, 14:34
Вот это круто, подобного для PSX, по-моему, ещё никто не делал.
Не просто заменили одну 3D модель на другую, а создали совершенно новую. Очень сложный процесс, на мой взгляд. Хорошо, что есть такие талантливые люди.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: TTEMMA от 26 ноября 2016, 18:39
Цитата: PSXDev от 26 ноября 2016, 14:34Вот это круто, подобного для PSX, по-моему, ещё никто не делал.
Сильное заявление, есть много примеров, где творили ещё больше.
К примеру, Leo2236 разработал утилиту для Resident Evil, которая умеет делать с локациями почти всё.
http://lgt.createaforum.com/new-board-17/rdtexplorer-a-tool-to-edit-rdt-files/
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: PSXDev от 26 ноября 2016, 20:47
Цитата: TTEMMA от 26 ноября 2016, 18:39 

Цитата: PSXDev от 26 ноября 2016, 14:34Вот это круто, подобного для PSX, по-моему, ещё никто не делал.
Сильное заявление, есть много примеров, где творили ещё больше.

 
Речь, конечно же, идёт о ру ретро сцене. И это исключительно моё мнение. Не стоит здесь разводить риторику не по теме.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 02 декабря 2016, 15:56
Добавил информацию Устройство «архива» с 3D моделью (XOBFBIN) (http://pscd.ru/forum/index.php?/topic/589-ustroistvo-3d-modelei-v-igre-vigilante-8-psx/?p=6586)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 03 декабря 2016, 16:08
Кое-что выяснил по текстурам.
 
Работаем с файлом HOOVRDAM.EXP.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-40745800-1480773969.png)
Рассмотрим первый полигон ящика со знаком вопроса.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-66103200-1480773969.png)
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-16398400-1480773969.png)
Последние два байта (0C 00) – номер текстуры. В данном случае это 13 текстура поскольку отсчёт ведётся от нуля.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-96529700-1480773969.png)
Размер исходного изображения (40x40) в пикселях , пока точно как там всё устроено установить не удалось.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-19281200-1480773970.png)
Для примера
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-86686600-1480773968.png)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 03 декабря 2016, 16:22
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-96529700-1480773969.png)
Если кто-то может что-то прояснить по этому поводу буду благодарен. Там ещё как-то с их помощью что ли можно крутить текстуры.
 
Что-то мне подсказывает, что это UV-преобразование (Развёртка). Но как она устроена...
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 04 декабря 2016, 11:45
Разобрался.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-25494900-1480844440.png)
Это координаты трёх точек. Условно можно считать, что первый байт это X, а второй - Y.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-16398400-1480773969.png)
Изображение ящика 40x40
 
Координаты представлены в пикселях.
Первая точка (0, 39)
Вторая точка (0, 0)
третья точка (39, 0)
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-84175700-1480844438.png)
Отсчёт ведём от верхнего левого угла.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-04251400-1480844439.png)
Из трёх точек составляем треугольник.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-26871700-1480844439.png)
Стрелка указывает направление.
 
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-99618900-1480844439.png)
И ещё один пример для большего понимания.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-76289700-1480844439.png)
Изображение зеленого ящика 48x48
Первая точка (0, 0)
Вторая точка (47, 0)
третья точка (47, 47)
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-51011500-1480844439.png)
 
P.S. В данном методе максиальный размер текстуры 256x256. Возможно в каких-то методах этот размер больше.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 04 декабря 2016, 12:37
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-99810000-1480847709.png)
Обнаружил, что первые три байта это палитра RGB.
 
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-04732400-1480847814.png)
Пример
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-80463500-1480847709.png)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: Diablo от 04 декабря 2016, 12:53
Молодец, настолько подробного и понятного разбора данных 3D игры для PSX, да и не только, ещё никто никогда не делал. Продолжай в том же духе.
Некогда бы не подумал, что 3D графика строится треугольниками, особенно квадраты.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: PSXDev от 04 декабря 2016, 12:56
Если вам удалось заменить текстуру деревянного ящика 40x40, на ящик зелёный военный 48x48.
Можно ли говорить о том, что размер картинки (самой текстуры) не учитывается, а если это так, то выходит, что можно повысить качество текстур? Например, сделав их в HD.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: Alon от 04 декабря 2016, 13:57
(http://pscd.ru/forum/uploads/monthly_12_2016/post-5-0-35000100-1480852579.png)
Раз можно менять цвета, то может разрабы хотели сделать такую функцию как и во второй части v8. Или даже сделали, но она недоступна.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 04 декабря 2016, 15:23
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-10852500-1480857651.png)
Написал программу Vigilante 8 3D To TMD. С её помощью можно просмотреть 3D моделей из игр Vigilante 8 (http://pscd.ru/games/psx/v/1276-vigilante-8.html).  Если быть более точным, то это не просмотрщик, а конвертер из формата 3D моделей V8 в TMD.
 
Скачать Vigilante 8 3D To TMD:

 
Программа сохраняет 3D  модели из игры V8 в *.TMD, после чего их можно просмотреть, например в MilkShape 3D.
(http://pscd.ru/forum/uploads/monthly_12_2016/post-95-0-01843100-1480857650.png)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: DenGame от 26 февраля 2017, 13:16
Рад что кто то продолжает мое дело), хорошее дело делаешь, мне так лень было писать документацию подробную, я к стати вылаживал распаковщик моделей и скрипт для 3д макса чтоб модели грузить (просматривать) единственное не хватило знаний Max scriptа чтоб текстуры наложить на модели
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: DenGame от 26 февраля 2017, 13:30
На счет палитры она вроде если память не изменяет используется для моделей без текстур, и вроде для моделей в далеке.
Вот бы какой программист написал программу для просмотра моделей, а то я совсем программирование забросил, я бы поддержал подсказками об структуре моделей.
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: DenGame от 26 февраля 2017, 13:53
К стати в FORM файле (где хранятся модели) после XOBFBIN и всей информации идет описание моделей их данные
Это для second offence, но мне кажется что и в первой части тоже самое

Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 26 февраля 2017, 15:30
Цитата: DenGame от 26 февраля 2017, 13:53К стати в FORM файле (где хранятся модели) после XOBFBIN и всей информации идет описание моделей их данные
Это для second offence, но мне кажется что и в первой части тоже самое
(http://pscd.ru/forum/public/style_images/master/attachicon.gif)44556.PNG (http://pscd.ru/forum/index.php?app=core&module=attach&section=attach&attach_rel_module=post&attach_id=4422)
(http://pscd.ru/forum/public/style_images/master/attachicon.gif)645754745.PNG (http://pscd.ru/forum/index.php?app=core&module=attach&section=attach&attach_rel_module=post&attach_id=4423)
А конкретно что за данные?
Что за программа на втором скрине?
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: DenGame от 26 февраля 2017, 16:13
где что будет находиться (координаты) колеса кузов, оружие (вроде)  и остальные данные. на втором скрине Notepad++ это я таблицу составлял когда разбирался что за что отвечает))))
(https://pp.vk.me/c617928/v617928992/156d/kOtxHpO5ptA.jpg)
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: DenGame от 05 марта 2017, 20:09
Вот к стати кое что вспомнил про полигоны можешь дополнить свою документацию


 
Это те значения (2 байта) которые стоят перед координатами текстуры
Там что ли градиент используется, так и не понял
Название: Re: Устройство 3D моделей в игре Vigilante 8 [PSX]
Отправлено: SPOT от 06 марта 2017, 12:26
DenGame, Есть данные по другим ID?