Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Разбор формата *.object
Pavel_Blend
сообщение 02.06.2014, 23:11
Сообщение #1


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Пишу импортёр *.object для блендер 3д. У меня не получается нормальные текстурные координаты получить. ЮВи вершины расположены нормально, но соединены не в том порядке в котором должны быть. Подскажите, что за данные находятся в блоках 0x7777-0x910-0x1008 и 0x7777-0x910-0x1012. Координаты вершин находятся в 0x1012, но их сразу импортировать нельзя. Нужны какие то действия, чтобы отсортировать в нужном порядке эти координаты. Но что именно, я не знаю. Помогите разобраться.


--------------------
Перейти в начало страницы
 
Shoкer
сообщение 02.06.2014, 23:56
Сообщение #2


Кандидат Игровых Наук
******************

Репутация:   2153  
Группа: Участник
Сообщений: 3488
Награды: 4
Регистрация: 27.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


http://stalkerin.gameru.net/wiki/index.php...0%BE%D0%B2_SDK)
http://stalkerin.gameru.net/wiki/index.php....BE.D1.82_excid

https://yadi.sk/d/Mp6jVkV25LrXI - скрипты импорта\экспорта object для 3Ds Max 2010, можешь в исходниках подглядеть.

PS: Никто тут плагины экспорта\импорта под SketchUP 2014 (Язык Ruby) случаем писать не умеет? Я б деловое предложение предложил бы. laugh.gif

Сообщение отредактировал Shoкer - 03.06.2014, 00:00


--------------------
Мне просто нравятся синие буквы под сообщением.
Перейти в начало страницы
 
Pavel_Blend
сообщение 03.06.2014, 17:03
Сообщение #3


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


А здесь на сайте есть, кто в блендере моделит?


--------------------
Перейти в начало страницы
 
MegaNub
сообщение 03.06.2014, 17:25
Сообщение #4


Продвинутый геймер
********

Репутация:   15  
Группа: Участник
Сообщений: 322
Награды: 3
Регистрация: 01.05.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 03.06.2014, 17:03) *
А здесь на сайте есть, кто в блендере моделит?


Очень редкий для ST редактор, может единицы, а так на врятли. Переходи на 3Ds Max или Maya.
Перейти в начало страницы
 
Pavel_Blend
сообщение 03.06.2014, 20:51
Сообщение #5


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Я скачал исходники конвертера бардака. В файле todo.txt нашёл: "? импорт/экспорт .object/.skl [blender]"
Т.е. Бардак планировал писать плагины для блендера? Никто не знает?


--------------------
Перейти в начало страницы
 
MegaNub
сообщение 03.06.2014, 21:02
Сообщение #6


Продвинутый геймер
********

Репутация:   15  
Группа: Участник
Сообщений: 322
Награды: 3
Регистрация: 01.05.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 03.06.2014, 20:51) *
... Бардак ...

На сколько мне известно о нём давно уже ничего не слышно.
Перейти в начало страницы
 
abramcumner
сообщение 03.06.2014, 21:05
Сообщение #7


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 03.06.2014, 21:51) *
Я скачал исходники конвертера бардака. В файле todo.txt нашёл: "? импорт/экспорт .object/.skl [blender]"
Т.е. Бардак планировал писать плагины для блендера? Никто не знает?

Планировал. Будешь ждать пока Бардак напишет? smile.gif
Перейти в начало страницы
 
MegaNub
сообщение 03.06.2014, 21:22
Сообщение #8


Продвинутый геймер
********

Репутация:   15  
Группа: Участник
Сообщений: 322
Награды: 3
Регистрация: 01.05.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


Извиняюсь, вопрос несколько относится к оффтопу, вопрос может показаться тупым, но всё же косается разбора форматов: вот как Вы, все те кто написал различные утилиты, конвертеры и другие программы для работы с форматами игр ST и Metro, вскрываете эти самые форматы? Допустим есть тот же формат (*.object) или (*.ogf), пример может выбрал не из легких, или формат игровых архивов (*.db), (*.vfs*) для Metro, с чего начинается анализ неизвестного формата, как его вскрыть? Как вы определяете чанки, если это "чанковый" формат (в HEX?), как определяете что в них содержится, их размер и как с ними работать? Скиньте линки на статьи, форумы и(или) любую другую информацию как это делается, буду признателен за поддержку. Заранее спасибо.

Сообщение отредактировал MegaNub - 03.06.2014, 21:25
Перейти в начало страницы
 
Pavel_Blend
сообщение 03.06.2014, 23:09
Сообщение #9


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 03.06.2014, 22:05) *
Планировал. Будешь ждать пока Бардак напишет?

Я хотел поинтересоваться. Просто было бы легче некоторые моменты понять. От одного человека слышал, что у бардака были зачатки плагина, но он его не дописал вроде бы. Не сходилось у него что-то.
Кстати, получилось у меня нормальные юви координаты получить.

MegaNub, http://www.render.ru/books/show_book.php?book_id=470


--------------------
Перейти в начало страницы
 
Pavel_Blend
сообщение 19.06.2014, 22:27
Сообщение #10


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Выкладываю скрипт для импорта object в Blender 2.67b:

Скачать (Яндекс диск)

Поддерживаются только статические. readme в архиве.



--------------------
Перейти в начало страницы
 
Neo][
сообщение 05.07.2014, 11:57
Сообщение #11


The One
****************

Репутация:   744  
Группа: Участник
Сообщений: 2715
Награды: 5
Регистрация: 05.12.2005




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(MegaNub @ 04.06.2014, 00:22) *
с чего начинается анализ неизвестного формата, как его вскрыть?

С анализа программы которая знает формат. Билды сталкера отлично работают под дебаггером + в билдах есть отладочная инфа, помогающая при декомпиляции


--------------------
Перейти в начало страницы
 
Pavel_Blend
сообщение 15.02.2018, 22:52
Сообщение #12


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Neo][ @ 05.07.2014, 12:57) *

С анализа программы которая знает формат.

А что значит анализ? Это дизассемблирование движка билда и просмотр кода? И вообще, как бардак узнавал про форматы?

Сообщение отредактировал Pavel_Blend - 15.02.2018, 22:53


--------------------
Перейти в начало страницы
 
Молния в вакууме
сообщение 15.02.2018, 23:02
Сообщение #13


Почти Игроман
*********

Репутация:   187  
Группа: Участник
Сообщений: 647
Награды: 4
Регистрация: 05.05.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 15.02.2018, 22:52) *
А что значит анализ? Это дизассемблирование движка билда и просмотр кода?

Именно.

Цитата(Pavel_Blend @ 15.02.2018, 22:52) *
И вообще, как бардак узнавал про форматы?

Есть подозрение, что у него был доступ к исходникам движка, уж больно сильно его конвертер местами похож.
Перейти в начало страницы
 
Pavel_Blend
сообщение 15.02.2018, 23:06
Сообщение #14


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Neo][ @ 05.07.2014, 12:57) *

Билды сталкера отлично работают под дебаггером + в билдах есть отладочная инфа, помогающая при декомпиляции

а как в билдах включить режим дебагга? И где отладочная информация находится? В консоли и логах?


--------------------
Перейти в начало страницы
 
Молния в вакууме
сообщение 15.02.2018, 23:09
Сообщение #15


Почти Игроман
*********

Репутация:   187  
Группа: Участник
Сообщений: 647
Награды: 4
Регистрация: 05.05.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Pavel_Blend, запустить билд под дебагером, x86dbg например, найти интересующее место в коде и изучать как оно работает. Я надеюсь ты знаешь язык ассемблера.
Перейти в начало страницы
 
autistic
сообщение 15.02.2018, 23:55
Сообщение #16


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(saas @ 16.02.2018, 01:09) *
Я надеюсь ты знаешь язык ассемблера.

Если что - я знаю. Чем смогу - помогу 3д художнику.


--------------------
nop
Перейти в начало страницы
 
v2v3v4
сообщение 16.02.2018, 09:01
Сообщение #17


Опытный Игрок
****

Репутация:   5  
Группа: Участник
Сообщений: 65
Награды: 2
Регистрация: 03.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Исходный код в сети, что вы в самом то деле...
Перейти в начало страницы
 
Trollz0r
сообщение 16.02.2018, 14:55
Сообщение #18


Почти Мастер
***********

Репутация:   1357  
Группа: Участник
Сообщений: 1155
Награды: 5
Регистрация: 28.05.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(saas @ 15.02.2018, 21:02) *
Есть подозрение, что у него был доступ к исходникам движка, уж больно сильно его конвертер местами похож.
Не, он же писал, что код сохранения пысовских форматов стянут с пыс. А учитывая тот факт, что ковырять сталкир он начал ещё в 2006 году (если не раньше), можно сделать вывод, что бинарники наверняка были от дебажных билдов.
Уж если бы были исходники, то он бы реализовал экспорт анимации камеры.

Цитата(v2v3v4 @ 16.02.2018, 07:01) *
Исходный код в сети
Интересно, Лохотрон уже знает?


--------------------
Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
---------------
------------
----------
--------
------
----
--
Перейти в начало страницы
 
Молния в вакууме
сообщение 16.02.2018, 15:21
Сообщение #19


Почти Игроман
*********

Репутация:   187  
Группа: Участник
Сообщений: 647
Награды: 4
Регистрация: 05.05.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Shadovs @ 16.02.2018, 14:55) *
Уж если бы были исходники, то он бы реализовал экспорт анимации камеры.

Загрузчик и сохранялка .anm файлов в библиотеке xray_re есть.
Перейти в начало страницы
 
jamakasi
сообщение 16.02.2018, 20:05
Сообщение #20


Доктор Игровых Наук
*******************

Репутация:   544  
Группа: Участник
Сообщений: 3657
Награды: 9
Регистрация: 12.07.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 15.02.2018, 22:52) *
И вообще, как бардак узнавал про форматы?

Как в анекдоте есть 3 путя:
1) Наличие исходников, дальше найти нужный участок кода и тупо скопипастить.
2) Дизасм кода как отметил Neo][ и курение асмы или перегон в псевдокод СИ и курение его, дальше только воссоздать алгоритм.
3) Курить формат хэксом, строить предположения и проверять их.

По поводу 3го варианта, как это обычно происходит:
- ясен пень что все будет выглядеть как куча байтов.
- мы знаем что чаще всего быйты были получены из конкретных типов. К примеру int =4 байта.
- включаем внимательность и немного работаем калькулятором, глаз цепляется за последовательности int int int, делаем предположение что это может быть координата вершины
- отсюда вытекает закономерный вопрос а сколько их там будет подряд? Значит гдето перед ними или в самом начал\конце файла будет число которое это укажет
- пробуем на глаз определить конец этих последовательностей(лучше конечно посчитать сколько раз подряд идут int).
- к примеру на предыдущем шаге мы получили число 100, пробуем предположить что это x y z вершин, делим 100\3 =33.3, не подходит т.к. число должно быть целым, предполагаем что это x y z d значит 100/4 = 25 уже лучше, запомним это число т.к. будем искать его упоминание. Так же можно на всякий случай предположить что мы ошиблись и тип short а значит всего 2 байта т.е. 100/2 = 50 вершин x y. Возможно это и другой тип данных. К слову на этом этапе проще всего попытаться представить числа на бумаге если думаешь что это координаты.
- ищем эти числа перед последовательностьй, вначале\конце файла. Предположим что нашли.
- проверяем полученное на другом файле, если число координат скажем перед началом последовательностей совпало то УРА, мы нашли где лежат вершины.
- дальше по схожему алгоритму ищем предположительно другие последовательности (нормали, текстурные координаты, текстурную развертку и много друго что может там оказаться)
- постепенно неизвестных последовательностей и байтов стало намного меньше и получилось нечто такое "int неизвестно, int число вершин последовательность_вершин, char[] название_анимации последовательность_кадров_анимации".
- зная это уже можем писать конвертер.
* Из сложностей:
1) типов данных может быть много
2) не факт что они идут последовательно
3) байты бывают little и big endian
4) данные могут быть шифрованы\сжаты начиная от чего то стандартного типа zlib и заканчивая чем то своим и сложным
5) данные могут быть не полные, когда смещения начала\конца\числа последовательности хранятся гдето отдельно или захардкожены в программе
6) не всегда известно что ожидать внутри файла, к примеру зная что это точно модель то можно точно сказать что в файле точно есть как минимум координаты вершин.
7) внутри может быть целая структура из структур
8) возможно что то забыл.

Что удобнее 2 или 3й вариант, ну ОТЦЫ знают асму и си и естественно отлично представляют структуры и на глаз переводя ричность\битность а значит разберут формат раз в 5 быстрее чем лохи только с 3м вариантом. При этом может быть и обратный эффект, если библиотек\ехе много и они обфусцированы и защищены то на декомпиляция от интереса уйдет намного больше времени чем чистый 3й вариант. Тоже относится и к 1му варианту, в зависимости от глубины кода по проге может оказаться что скопипастить не получится а в лучшем случае удасться узнать какието мелкие моменты которые проще забрать, или же наоборот окажется проще не разбираться с кодом а наткнуться на нечто типа dump\unpack\extract и останется всеголишь его вызвать.
Перейти в начало страницы
 

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25.04.2024, 06:34