Перейти к содержимому


Фотография

Устройство 3D моделей в игре Vigilante 8 [PSX]

Устройство 3D Устройство 3D моделей Vigilante 8 PSX 3D модели Vigilante 8 3D модели Ромхакинг

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 24

#1 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 22 November 2016 - 14:32

В этой теме я постараюсь раскрыть формат хранения 3D моделей в игре Vigilante 8 для Sony PlayStation.

 

Хранение вершин, нормалей, полигонов 3D модели

Устройство «архива» с 3D моделью (XOBFBIN)

 

Vigilante 8 3D To TMD - программа для просмотра 3D моделей


  • 6

#2 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 22 November 2016 - 14:32

Хранение вершин, нормалей, полигонов 3D модели

 

Буду не всё разжёвывать, так как времени немного.

 

Работать мы будем с файлом VEHICLES.EXP. Находится он в папке SHELL образа игры Vigilante 8. В этом файле хранятся 3D модели и текстуры автомобилей из меню выбора авто.

 

post-95-0-25454700-1479818149.png

Первая модель, это модель автомобиля 67 Rattler. Данные первой модели с $2E по $455E.

 

Полигоны хранятся с $10E по $D62.

 

Точки (Вершины, нормали) – с $D62 по $11EA

 

Того получается

Полигонов: 145 (примерно)

Точек: 145

 

post-95-0-69731900-1479818139.png

Точка занимает 8 байт.

 

post-95-0-90275400-1479818139.png

Устройство примерно следующие. Сначала идут координаты X, Y, Z затем стопбайт (хотя он не используется - визуальный). Каждая из координат занимает 2 байта.

Устройство точек точно такое же, как и в моделям TMD.

Скорее всего сначала идёт блок вершин, а потом блок нормалей.

 

С полигонами всё намного сложнее. Придётся рассмотреть много вариантов.

Полигоны записаны в «блоке». То есть там есть информация как о полигонах, так видимо и о текстурах.

 

post-95-0-10265800-1479818140.png

Первый, так называемый, «блок» занимает 24 байта.

 

post-95-0-30474700-1479818140.png

Информация о полигоне идёт через 4 байта с начала блока и занимает 6 байт.

 

post-95-0-94341800-1479818148.png

Полигон представляет собой треугольник.

 

Теперь немного о самих блоках.

Первые 4 байта информация которая поможет нам понять, как будет устроен блок. Следующие 6 байт - это полигон. Все остальные байты, судя по всему информация о текстурах.

 

Рассмотрим варианты.

post-95-0-52812100-1479818140.png

XX XX XX 09 - Данная структура говорит нам о том, что следующий блок будет через 20 байт.

Красной полосой обозначены 20 байт, зелёной – следующий информационный блок.

 

post-95-0-69057800-1479818140.png

XX XX XX 05 - Данная структура говорит нам о том, что следующий блок будет через 16 байт.

Цвета и полоски на картинки не несут смысловой нагрузки.

 

 

post-95-0-87372900-1479818140.png

XX XX XX 08 – Данная структура говорит нам о том, что следующий блок будет через 12 байт.

Красной полосой обозначены 12 байт, зелёной – следующий информационный блок.

 

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 байт.

 

 

Мог где-то запутаться, но примерно как-то так.

Прикрепленные изображения

  • p1.png
  • p2.png
  • p3.png
  • p4.png
  • p5.png
  • p6.png
  • p7.png
  • p8.png
  • p9.png
  • p10.png
  • polig.png
  • PSOGL2_002.png

  • 6

#3 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 22 November 2016 - 14:33

Устройство «архива» с 3D моделью (XOBFBIN)

 

Работать мы будем с файлом VEHICLES.EXP. Находится он в папке SHELL образа игры Vigilante 8.

 

Будем работать с архивом (банком), который содержит в себе 3D модели колёс и плоскостей.

 

post-1-0-24380100-1480685911.png

Начало архива: $44542

Конец архива: $4E352

Количество моделей в архиве: 12

 

post-1-0-47219700-1480685911.png

00 00 9E 08размер архива с 3D моделями. Размер составляет 40456 байт (9E 08), данные хранятся в неперевёрнутом виде. Отсчёт идёт после этих 4 байт с размером ($4454A).

 

post-1-0-71831500-1480685911.png

C0 00 00 00Количество 3D моделей в архиве. В нашем случае в архиве хранится 12 моделей.

 

post-1-0-95405000-1480685911.png

6С 01 00 00 – Указатель через сколько байт будут интересующие нас данные о 3D моделях. Отсчёт идёт с $44556.

 

post-1-0-12024300-1480685912.png

Переходим на $446C2.

 

post-1-0-29053200-1480685912.png

Здесь в начале идёт 12 указателей на 3D модели. Отсчёт начинается с $446C2.

 

post-1-0-45005700-1480685912.png

94 2B 00 00 – указатель на информацию о текстурах.  Отсчёт начинается с $446C2.

 

post-1-0-65217700-1480685912.png

Переходим по первому указателю (34 00 00 00) в $446F6.

 

post-1-0-89947600-1480685912.png

Здесь 28 байт занимает «служебная» информация о модели.

 

post-1-0-07274000-1480685913.png

18 00 00 00количество вершин (точек) в 3D модели. В нашем случае это 24 точки.

 

post-1-0-60378700-1480686298.png

EC 01 00 00указатель на точки (вершины). Отсчёт начинается с $446F6.

 

post-1-0-76642200-1480686298.png

12 00 00 00количество нормалей (точек) в 3D модели. В нашем случае это 18 точки.

 

post-1-0-00092900-1480686299.png

AC 02 00 00указатель на точки (нормали). Отсчёт начинается с $446F6.

 

post-1-0-17199300-1480686299.png

14 00 00 00количество полигонов в 3D модели. В нашем случае это 20 полигонов.

 

post-1-0-35730400-1480686299.png

 

post-1-0-61438000-1480686299.png

1C 00 00 00указатель на полигоны. Отсчёт начинается с $446F6.

 

post-1-0-81406200-1480686299.png

0A 00Размер (масштаб) 3D модели

 

post-1-0-02789900-1480686300.png

86 00 – не удалось установить

 

Koleso.png

Для наглядности изображение первой модели из данного архива.

Прикрепленные изображения

  • p1.png
  • p2.png
  • p3.png
  • p4.png
  • p5.png
  • p6.png
  • p7.png
  • p8.png
  • p9.png
  • p10.png
  • p11.png
  • p12.png
  • p13.png
  • p14.png
  • p15.png
  • p16.png
  • p17.png
  • p18.png

  • 5

#4 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 22 November 2016 - 16:51

Там сверху в Хранение вершин, нормалей, полигонов 3D модели  не совсем корректные данные правильней будет так:

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;

  • 4

#5 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 22 November 2016 - 17:16

Проверил, всё именно так как написано в сообщение выше.

 

Авто: ’70 Clydesdale

post-95-0-81868000-1479827689.png

post-95-0-32693900-1479827689.png

Прикрепленные изображения

  • 70 clydesdale.png
  • clady 3D.png

  • 5

#6 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 25 November 2016 - 22:53

post-95-0-35713800-1480107149.png

Нашёл модель laydion2.TMD, вставил в V8. На скринах смотрится так себе, в живую намного лучше.

 

post-95-0-42816900-1480107150.pngpost-95-0-67554200-1480107150.pngpost-95-0-20838600-1480107151.png

Прикрепленные изображения

  • modelTMD.png
  • v8 1.png
  • v8 2.png
  • v8 3.png

  • 5

#7 PSXDev

PSXDev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений

Отправлено 26 November 2016 - 14:34

Вот это круто, подобного для PSX, по-моему, ещё никто не делал.

Не просто заменили одну 3D модель на другую, а создали совершенно новую. Очень сложный процесс, на мой взгляд. Хорошо, что есть такие талантливые люди.


  • 0

#8 TTEMMA

TTEMMA

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 122 сообщений
  • ГородСмоленск

Отправлено 26 November 2016 - 18:39

Вот это круто, подобного для PSX, по-моему, ещё никто не делал.

Сильное заявление, есть много примеров, где творили ещё больше.

К примеру, Leo2236 разработал утилиту для Resident Evil, которая умеет делать с локациями почти всё.

http://lgt.createafo...edit-rdt-files/


  • 0

#9 PSXDev

PSXDev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений

Отправлено 26 November 2016 - 20:47

 

Вот это круто, подобного для PSX, по-моему, ещё никто не делал.

Сильное заявление, есть много примеров, где творили ещё больше.


 

Речь, конечно же, идёт о ру ретро сцене. И это исключительно моё мнение. Не стоит здесь разводить риторику не по теме.


  • 0

#10 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 02 December 2016 - 15:56

Добавил информацию Устройство «архива» с 3D моделью (XOBFBIN)


  • 5

#11 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 03 December 2016 - 16:08

Кое-что выяснил по текстурам.

 

Работаем с файлом HOOVRDAM.EXP.

 

post-95-0-40745800-1480773969.png

Рассмотрим первый полигон ящика со знаком вопроса.

 


post-95-0-66103200-1480773969.png

post-95-0-16398400-1480773969.png

Последние два байта (0C 00) – номер текстуры. В данном случае это 13 текстура поскольку отсчёт ведётся от нуля.

 

post-95-0-96529700-1480773969.png

Размер исходного изображения (40x40) в пикселях , пока точно как там всё устроено установить не удалось.

 

post-95-0-19281200-1480773970.png

Для примера

post-95-0-86686600-1480773968.png

Прикрепленные изображения

  • box.png
  • HOOVRDAM_000004_120b.png
  • p1.png
  • p2.png
  • p3.png
  • p4.png

  • 6

#12 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 03 December 2016 - 16:22

post-95-0-96529700-1480773969.png

Если кто-то может что-то прояснить по этому поводу буду благодарен. Там ещё как-то с их помощью что ли можно крутить текстуры.

 

Что-то мне подсказывает, что это UV-преобразование (Развёртка). Но как она устроена...


  • 4

#13 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 04 December 2016 - 11:45

Разобрался.

 

post-95-0-25494900-1480844440.png

Это координаты трёх точек. Условно можно считать, что первый байт это X, а второй - Y.

 

post-95-0-16398400-1480773969.png

Изображение ящика 40x40

 

Координаты представлены в пикселях.

Первая точка (0, 39)

Вторая точка (0, 0)

третья точка (39, 0)

 

post-95-0-84175700-1480844438.png

Отсчёт ведём от верхнего левого угла.

 

post-95-0-04251400-1480844439.png

Из трёх точек составляем треугольник.

 

post-95-0-26871700-1480844439.png

Стрелка указывает направление.

 

 

post-95-0-99618900-1480844439.png

И ещё один пример для большего понимания.

 

post-95-0-76289700-1480844439.png

Изображение зеленого ящика 48x48

Первая точка (0, 0)

Вторая точка (47, 0)

третья точка (47, 47)

 

post-95-0-51011500-1480844439.png

 

P.S. В данном методе максиальный размер текстуры 256x256. Возможно в каких-то методах этот размер больше.

Прикрепленные изображения

  • box1.png
  • box2.png
  • box3.png
  • box4.png
  • HOOVRDAM_000004_123b.png
  • p1.png
  • p2.png

  • 5

#14 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 04 December 2016 - 12:37

post-95-0-99810000-1480847709.png

Обнаружил, что первые три байта это палитра RGB.

 

post-95-0-04732400-1480847814.png

Пример

post-95-0-80463500-1480847709.png

Прикрепленные изображения

  • Box RGB.png
  • RGB.png
  • p2.png

  • 4

#15 Diablo

Diablo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 379 сообщений

Отправлено 04 December 2016 - 12:53

Молодец, настолько подробного и понятного разбора данных 3D игры для PSX, да и не только, ещё никто никогда не делал. Продолжай в том же духе.

Некогда бы не подумал, что 3D графика строится треугольниками, особенно квадраты.


  • 0

#16 PSXDev

PSXDev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений

Отправлено 04 December 2016 - 12:56

Если вам удалось заменить текстуру деревянного ящика 40x40, на ящик зелёный военный 48x48.

Можно ли говорить о том, что размер картинки (самой текстуры) не учитывается, а если это так, то выходит, что можно повысить качество текстур? Например, сделав их в HD.


  • 0

#17 Alon

Alon

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 462 сообщений

Отправлено 04 December 2016 - 13:57

post-5-0-35000100-1480852579.png

Раз можно менять цвета, то может разрабы хотели сделать такую функцию как и во второй части v8. Или даже сделали, но она недоступна.

Прикрепленные изображения

  • RGB V8.png

  • 0

#18 SPOT

SPOT

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 600 сообщений

Отправлено 04 December 2016 - 15:23

post-95-0-10852500-1480857651.png

Написал программу Vigilante 8 3D To TMD. С её помощью можно просмотреть 3D моделей из игр Vigilante 8.  Если быть более точным, то это не просмотрщик, а конвертер из формата 3D моделей V8 в TMD.

 

Скачать Vigilante 8 3D To TMD:

Прикрепленный файл  Vigilante 8 3D To TMD.7z   377.98К   523 Количество загрузок:

 

Программа сохраняет 3D  модели из игры V8 в *.TMD, после чего их можно просмотреть, например в MilkShape 3D.

post-95-0-01843100-1480857650.png

Прикрепленные изображения

  • Vigilante 8 3D To TMD.png
  • Gruz.png

  • 2

#19 DenGame

DenGame

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 26 February 2017 - 13:16

Рад что кто то продолжает мое дело), хорошее дело делаешь, мне так лень было писать документацию подробную, я к стати вылаживал распаковщик моделей и скрипт для 3д макса чтоб модели грузить (просматривать) единственное не хватило знаний Max scriptа чтоб текстуры наложить на модели


  • 0

#20 DenGame

DenGame

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 26 February 2017 - 13:30

На счет палитры она вроде если память не изменяет используется для моделей без текстур, и вроде для моделей в далеке.

Вот бы какой программист написал программу для просмотра моделей, а то я совсем программирование забросил, я бы поддержал подсказками об структуре моделей.


  • 0





Темы с аналогичным тегами Устройство 3D, Устройство 3D моделей, Vigilante 8, PSX, 3D модели Vigilante 8, 3D модели, Ромхакинг

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Рейтинг@Mail.ru Яндекс.Метрика