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


Внимание!

Это форум по извлечению ресурсов из игр: музыки, звуков, текстур, 3D-моделей...
Перед поиском ответов на форуме, рекомендуется ознакомиться с основным сайтом EXTRACTOR.ru!
[ Прочтите внимательно - правила создания тем и ответа в них ]
Все вопросы по запуску игр задавайте в другом месте: Установка и запуск игр.


Фотография

Life For Speed [.VOB]


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

#1 novichek

novichek

    Ефрейтор

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

Отправлено 28 April 2013 - 11:37

Привет !

Уже долгое время пытаюсь разобрать формат *.vob , этот формат в себе содержит трехмерную модель автомобиля для игры (настройки материалов, модель ...), вроде даже только половину модели так как модель в игре симметрична.

Что я нашел для это го формата, программа которая открывает этот формат: LFSCarImport.
Программу не получилось декомпилировать (.NET Reflector'ом) и посмотреть как она этот формат (*.vob) открывает.

Смысл разбора это го формата, что бы создать импорт и экспорт в 3дс макс. Импорт в 3дс макс уже есть но там надо делать через змоделлер и LFSCarImport.

Проблема в том что я не очень хорошо разбираюсь в бинарных файлах (правильно назвал ?), если у кого есть не много времени может могли бы написать декриптор, что бы он переводил формат из бинарного в текстовый а значение и настройки я сам разберу, ну и сам 3д меш.
То ко желательно писать код декрипторо на c#.net если возможно.

Добавлю еще несколько примеров файла:
http://rghost.ru/pri...bcfb22f49f93fb5
http://rghost.ru/pri...dec97f311f666ca
Спасибо.

#2 -=CHE@TER=-

-=CHE@TER=-

    Полковник

  • Администраторы
  • 971 сообщений
  • Пол:Мужчина

Отправлено 29 April 2013 - 13:10

В моделях не разбираюсь, но могу подкинуть пару нагугленных ссылок:
http://codepad.org/qbJBbcyJ/raw.txt - похоже на описание формата (неполное)
http://lfsaddons.host56.com/ - тут есть кое-какие утилиты

#3 novichek

novichek

    Ефрейтор

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

Отправлено 29 April 2013 - 16:48

http://codepad.org/qbJBbcyJ/raw.txt - похоже на описание формата (неполное)


Да вроде это и есть не плохой разбор того формата, не много посмотрел через хекс редактор, сов подает,(я думаю) по нему можно ориентироваться.
Сейчас самое трудное головоломка как написать хотя бы самый простой декриптор ... ищу разные примеры, так как сам полностью не писал ни разу.

Уже сам что то набросал конечно может я не так делаю но хотя бы что то. Буду пробовать разобрать, и писать в эту тему о прогрессе.
Может можете подсказать кому можно обратится по подсказкам насчёт написание кода для дескриптора данного формата желательно на c#.net но если нет возможности то и на с++ можно ?

#4 -=CHE@TER=-

-=CHE@TER=-

    Полковник

  • Администраторы
  • 971 сообщений
  • Пол:Мужчина

Отправлено 01 May 2013 - 12:19

Может можете подсказать кому можно обратится по подсказкам насчёт написание кода для дескриптора данного формата желательно на c#.net но если нет возможности то и на с++ можно ?

К сожалению, не смогу.
Могу только посоветовать статью по разбору 3D форматов (незаконченная).
В ней есть ссылка на тему форума Xentax, где более подробно разбирают один из форматов (в качестве примера).
Можно попоробовать там к кому-нибудь обратиться.

#5 novichek

novichek

    Ефрейтор

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

Отправлено 09 May 2013 - 16:15

Как и говорил что буду показывать прогресс:
Пока что разобрался с самым началом, получение всех объектов, номер материала (через хекс редактор сам проверял поменял номер материала и в игре модель меняла материал) количество объектов в файле, количество вершин и полигонов вроде получил но не совсем уверен правильно ли подобрал.
Вот что получилось:
Изображение

Сейчас самое трудное разобраться с вершинами и полигонами ...
Если брать первые 10 вершины то получается что то такое:
Vertex: 1			63	63	0	0	63	93	63	63	63	0	0	17	0	0	0	63	63	0	0	63	63	2	0	76	86	0	0	18	0	0	0
Vertex: 2			0	0	0	0	63	63	63	63	16	2	1	0	18	0	0	0	0	0	0	0	63	39	63	63	106	89	0	0	17	0	0	0
Vertex: 3			87	63	0	0	63	63	1	0	63	63	0	0	18	0	0	0	0	0	0	0	91	63	63	63	60	95	0	0	18	0	0	0
Vertex: 4			0	0	0	0	63	36	63	63	106	89	0	0	18	0	0	0	0	0	0	0	63	36	63	63	100	74	0	0	17	0	0	0
Vertex: 5			63	63	0	0	63	85	63	63	63	16	0	0	17	0	0	0	63	63	0	0	63	63	2	0	17	46	0	0	17	0	0	0
Vertex: 6			121	72	0	0	87	2	63	63	63	63	0	0	17	0	0	0	63	21	0	0	63	2	0	51	114	0	0	18	0	0	0
Vertex: 7			0	0	0	0	87	2	63	63	63	63	0	0	18	0	0	0	0	0	0	0	54	63	63	63	63	22	0	0	17	0	0	0
Vertex: 8			63	21	0	0	40	63	2	0	8	112	0	0	17	0	0	0	87	63	0	0	63	63	1	0	63	16	0	0	17	0	0	0
Vertex: 9			121	72	0	0	91	63	63	63	60	95	0	0	1	0	0	0	105	45	0	0	63	63	0	0	63	63	0	0	1	0	0	0
Vertex: 10		63	44	0	0	80	63	0	0	17	63	0	0	17	0	0	0	63	63	0	0	63	123	2	0	63	93	0	0	17	0	0	0
Vertex: 11


Кстати то описание хорошо помогло ...

#6 novichek

novichek

    Ефрейтор

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

Отправлено 21 April 2014 - 19:34

Прошло довольно много времени перед я нашол еще парочку параметров (взял большой перерыв):

image.png

 

Параметры Vertices, Faces (до сихпор не уверен насчёт этого параметра) читать надо как int16 по два байта, также и сколичеством обектов.

 

В этот раз получилось изменить позиции вертексов:

image.png

 

Вершины начинаются сразу после параметров обектов. 16 байтов в блоке, 4 байта  X ось, 4 байта Y ось, 4 байта Z ось, и еще 4 байта неизвестного/неизвестных параметров.

Единственное не понятно как вершины надо читать. Если читать как int32 тогда у первых 10 получается что то такое:

File: LFS\data\veh\XF.vob
SREOBJ
Vertices count 3435
Face count 6609
Objects found: 133
--------------------Object list--------------------
Object name	Uknown Possibly Material ID	Possibly RGBA colour values
M1_side	0	0	10	Possibly RGBA: 	9	9	9	2
mattblak	0	0	0	Possibly RGBA: 	90	67	18	0
l_rind	0	0	8	Possibly RGBA: 	18	18	18	0
shnyblak	0	0	1	Possibly RGBA: 	48	32	0	0
l_brk	0	0	8	Possibly RGBA: 	63	63	63	0
K_plte1	0	0	5	Possibly RGBA: 	118	118	118	0
Vent R B	0	0	61	Possibly RGBA: 	63	63	63	0
C1_sprU	0	0	45	Possibly RGBA: 	118	118	118	0
Vent R A	0	0	60	Possibly RGBA: 	124	124	124	0
l_head	0	0	6	Possibly RGBA: 	63	63	63	0
c1_sp2T	0	0	44	Possibly RGBA: 	63	94	25	0
K_plte2	0	0	4	Possibly RGBA: 	63	63	63	0
SUNstrp	0	0	43	Possibly RGBA: 	40	40	40	0
inside1	0	0	0	Possibly RGBA: 	63	63	63	1
WATER	0	0	24	Possibly RGBA: 	63	63	63	1
FUEL	0	0	23	Possibly RGBA: 	63	63	63	0
C1_lt_m	0	0	47	Possibly RGBA: 	63	63	63	0
NAME	0	0	22	Possibly RGBA: 	48	48	48	0
g_head	0	0	100	Possibly RGBA: 	63	63	63	0
key R	0	0	63	Possibly RGBA: 	63	63	63	0
BARS	0	0	46	Possibly RGBA: 	63	63	63	0
exhaust	0	0	15	Possibly RGBA: 	63	63	63	0
C1_top	0	0	12	Possibly RGBA: 	63	63	63	0
C1_frnt	0	0	11	Possibly RGBA: 	63	63	63	0
K_Lgrll	0	0	9	Possibly RGBA: 	28	28	28	0
K_under	0	0	0	Possibly RGBA: 	63	63	63	0
C1_back	0	0	13	Possibly RGBA: 	63	63	63	0
C1_splr	0	0	14	Possibly RGBA: 	63	63	63	1
K_miror	0	0	20	Possibly RGBA: 	124	124	124	0
L_Lfog	0	0	7	Possibly RGBA: 	63	63	63	1
K_clock	0	0	21	Possibly RGBA: 	34	42	36	0
G_WINDF	0	0	101	Possibly RGBA: 	90	67	18	0
l_find	0	0	6	Possibly RGBA: 	19	19	19	0
winframe	0	0	1	Possibly RGBA: 	95	95	95	0
l_rev	0	0	8	Possibly RGBA: 	0	0	0	0
K_BLACK	0	0	0	Possibly RGBA: 	63	63	63	0
C1_Wmr F	0	0	118	Possibly RGBA: 	0	0	0	0
sunscr5	0	0	107	Possibly RGBA: 	0	0	0	0
sunscr4	0	0	106	Possibly RGBA: 	0	0	0	0
sunscr3	0	0	105	Possibly RGBA: 	63	63	63	0
sidoorL	0	0	2	Possibly RGBA: 	0	0	0	0
sunscr 2	0	0	104	Possibly RGBA: 	63	63	63	0
dialMSKR	0	0	99	Possibly RGBA: 	0	0	0	0
sunscree	0	0	103	Possibly RGBA: 	76	79	79	0
knob	0	0	41	Possibly RGBA: 	19	19	19	1
carpet	0	0	3	Possibly RGBA: 	118	118	118	0
VentD2	0	0	59	Possibly RGBA: 	118	118	118	0
VentD1	0	0	58	Possibly RGBA: 	63	63	63	0
screw1	0	0	53	Possibly RGBA: 	34	42	36	0
G_WINDS	0	0	101	Possibly RGBA: 	63	63	63	0
cloth R	0	0	33	Possibly RGBA: 	48	48	48	0
g_fog	0	0	100	Possibly RGBA: 	63	63	63	0
C1_frnt	0	0	11	Possibly RGBA: 	63	63	63	0
M2_bont	0	0	12	Possibly RGBA: 	63	63	63	0
C2_roof	0	0	12	Possibly RGBA: 	63	63	63	0
C2_frnt	0	0	11	Possibly RGBA: 	63	63	63	0
C1_SP_T	0	0	16	Possibly RGBA: 	63	63	63	0
C1_sp_U	0	0	17	Possibly RGBA: 	63	63	63	0
C1_sp_L	0	0	18	Possibly RGBA: 	34	42	36	0
G_WINDR	0	0	101	Possibly RGBA: 	63	63	63	0
C1_fsplr	0	0	19	Possibly RGBA: 	118	118	118	0
PlasticF	0	0	25	Possibly RGBA: 	118	118	118	0
PlasticR	0	0	27	Possibly RGBA: 	118	118	118	0
PlasticT	0	0	28	Possibly RGBA: 	63	63	63	0
Coth1 T	0	0	32	Possibly RGBA: 	63	63	63	0
Pillar1R	0	0	29	Possibly RGBA: 	63	63	63	0
Pillar1T	0	0	31	Possibly RGBA: 	63	63	63	0
carpet2	0	0	36	Possibly RGBA: 	34	42	36	4
rearscrn	0	0	102	Possibly RGBA: 	41	41	41	0
Plastc3R	0	0	38	Possibly RGBA: 	46	46	46	0
Plastc3F	0	0	39	Possibly RGBA: 	46	46	46	0
Plastc3T	0	0	42	Possibly RGBA: 	29	29	29	0
Scloth1F	0	0	48	Possibly RGBA: 	29	29	29	0
Scloth1T	0	0	49	Possibly RGBA: 	53	53	53	0
Scloth2F	0	0	50	Possibly RGBA: 	53	53	53	0
Scloth2T	0	0	51	Possibly RGBA: 	95	95	95	0
Splast F	0	0	52	Possibly RGBA: 	63	63	63	0
pillarR2	0	0	30	Possibly RGBA: 	63	63	63	0
carpet2R	0	0	34	Possibly RGBA: 	63	63	63	0
carpetR2	0	0	35	Possibly RGBA: 	63	63	63	0
carpet F	0	0	37	Possibly RGBA: 	118	118	118	0
plastcF2	0	0	40	Possibly RGBA: 	118	118	118	0
cassette	0	0	54	Possibly RGBA: 	118	118	118	0
Vent1 F	0	0	55	Possibly RGBA: 	118	118	118	0
vent1 T	0	0	56	Possibly RGBA: 	118	118	118	0
vent1 T2	0	0	57	Possibly RGBA: 	118	118	118	0
plastcF3	0	0	26	Possibly RGBA: 	113	113	113	0
ASHtray	0	0	62	Possibly RGBA: 	118	118	118	0
steerC L	0	0	85	Possibly RGBA: 	118	118	118	0
SteerC R	0	0	84	Possibly RGBA: 	63	63	63	0
Key B	0	0	66	Possibly RGBA: 	85	85	85	0
carbon1F	0	0	64	Possibly RGBA: 	63	63	63	0
dialMSKL	0	0	98	Possibly RGBA: 	63	63	63	0
C8Jwld32	0	0	77	Possibly RGBA: 	63	63	63	0
C8Jwld31	0	0	76	Possibly RGBA: 	63	63	63	0
C8Jwld23	0	0	75	Possibly RGBA: 	63	63	63	0
conslGTR	0	0	83	Possibly RGBA: 	63	63	63	0
C8JwldSA	0	0	67	Possibly RGBA: 	63	63	63	0
C8JwldSB	0	0	68	Possibly RGBA: 	63	63	63	0
C8JwldSC	0	0	69	Possibly RGBA: 	63	63	63	0
Resin T	0	0	78	Possibly RGBA: 	63	63	63	0
C8JwldRA	0	0	70	Possibly RGBA: 	63	63	63	0
C8JwldRB	0	0	71	Possibly RGBA: 	63	63	63	0
C8JwldRC	0	0	72	Possibly RGBA: 	63	63	63	0
C8Jwld21	0	0	73	Possibly RGBA: 	63	63	63	0
C8Jwld22	0	0	74	Possibly RGBA: 	63	63	63	0
Resin R	0	0	79	Possibly RGBA: 	63	63	63	0
Weld8E F	0	0	93	Possibly RGBA: 	63	63	63	0
Weld8D F	0	0	92	Possibly RGBA: 	63	63	63	0
Hole8 F	0	0	95	Possibly RGBA: 	63	63	63	0
Weld8C F	0	0	90	Possibly RGBA: 	63	63	63	0
barsSHNY	0	0	86	Possibly RGBA: 	63	63	63	0
weld8B F	0	0	88	Possibly RGBA: 	63	63	63	0
weld8A F	0	0	87	Possibly RGBA: 	63	63	63	0
hole 8T	0	0	94	Possibly RGBA: 	63	63	63	0
weld8B T	0	0	89	Possibly RGBA: 	63	63	63	0
Weld8C T	0	0	91	Possibly RGBA: 	85	85	85	0
carbon1R	0	0	65	Possibly RGBA: 	63	63	63	0
GTRflorT	0	0	80	Possibly RGBA: 	63	63	63	0
gtrFlorR	0	0	82	Possibly RGBA: 	63	63	63	0
gtrFlorF	0	0	81	Possibly RGBA: 	63	63	63	0
RCholeR1	0	0	96	Possibly RGBA: 	63	63	63	0
RCholeR2	0	0	97	Possibly RGBA: 	63	63	63	0
CHweldRA	0	0	108	Possibly RGBA: 	63	63	63	0
CHweldRB	0	0	109	Possibly RGBA: 	63	63	63	0
CHweldRC	0	0	110	Possibly RGBA: 	63	63	63	0
CHweldRD	0	0	111	Possibly RGBA: 	63	63	63	0
CHweldRE	0	0	112	Possibly RGBA: 	63	63	63	0
Bolt 7	0	0	116	Possibly RGBA: 	63	63	63	0
C1_Wmr T	0	0	117	Possibly RGBA: 	87	87	72	0
metal2	0	0	114	Possibly RGBA: 	43	43	43	0
under	0	0	113	Possibly RGBA: 	63	63	63	1
Mirror	0	0	115	Possibly RGBA: 	65	0	0	0
Material count: 118
--------------------End list--------------------
Vertices:
-48048	39809	-14434	1
-50826	41233	-14115	1
-50145	41758	-8299	1
-8293	-5426	64066	1
-27766	24909	48017	1
-45251	97162	-40	1
-45158	96670	-2205	65
-44131	97405	-12266	1
-45298	97416	11014	1
-45356	94210	11975	1

Код с помощью которого читал вершины написан на Visual Basic NET

For i = 1 To 10 'vertices_count

                        Dim vert1_x As Integer = reader.ReadInt32
                        Dim vert1_y As Integer = reader.ReadInt32
                        Dim vert1_z As Integer = reader.ReadInt32



                        Dim vert_x As Single = vert1_x
                        Dim vert_y As Single = vert1_y
                        Dim vert_z As Single = vert1_z


                        Dim vert1_unk1 As Integer = reader.ReadInt32 'ukwnown flag ?

                        RichTextBox1.Text &= vbNewLine & vert_x & vbTab & vert_y & vbTab & vert_z & vbTab & vert1_unk1
                    Next

Также импортнул только вершины в 3дс макс (как и было описано раньше, некоторые обекты в модели зеркальные):

image.png

 

Буду дальше пытатся разобрать этот формат.



#7 novichek

novichek

    Ефрейтор

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

Отправлено 22 April 2014 - 12:05

Всё разобрался наконец :),прокчически год прошол ! :D

image.png

Еще надо поразбиратся с материалами, думаю скоро выложу сам исходник максскипрта для импорта моделей :)


Сообщение отредактировал novichek: 22 April 2014 - 12:21


#8 novichek

novichek

    Ефрейтор

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

Отправлено 24 April 2014 - 18:10

Как и писал раньше, выложу макс скрипт для импорта файлов в 3д редактор (3ds Max), но он пока что неполный ! Не хватает материалов и еще пару вещей, также не понятно, почему у некоторых фейсов неправельные индексы за пределами количества вершин.

 

Чтобы  запустить макс скрипт, надо будет его скопировать в редактор макс скрипта и применить горячию клавишу CTRL + E, для его запуска.

Найти редактор макс скрипта можно, нажав MAXscript -> New Script, далее, в появившееся окно скопировать скрипт.

 

Кстати мой ник танк а не новичок :), по поэтому его вписал в окно "About".

 

Spoiler