Разбор форматов, Тема для обсуждения различных форматов игровых файлов |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Разбор форматов, Тема для обсуждения различных форматов игровых файлов |
20.04.2020, 01:00
Сообщение
#101
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
Обнаружил для себя такую интересную особенность в формате OGF3, который используется в билдах до осени 2004.
Как известно координаты вершин там задаются в пространстве кости, и при этом был вариант с влиянием 2 костей на вершину. Вершины этого варианта были заметно толще тех что использовали одну кость (64 байта против 36), и если верить сорцам конвертера бардака содержали ещё тангенты и бинормали, что как-то нелогично, с одной костью нет, с двумя есть. И вот я полез в шейдеры билда 1850, а там... Код struct v_model_skinned_2 { float4 p0 : POSITION0; // (float,float,float,1) - quantized float4 p1 : POSITION1; // (float,float,float,1) - quantized float4 n0 : NORMAL0; // (nx,ny,nz,weight) float3 n1 : NORMAL1; // (nx,ny,nz) int4 tc : TEXCOORD0; // (u,v, w=m-index0, z=m-index1) }; Оказывается там хранится две позиции и две нормали Для каждой кости своя. Дичь какая-то. |
 
|
|
|
|
25.04.2020, 19:28
Сообщение
#102
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Это ж билды. Наверняка что-то тестовое. Что-нибудь навроде мировая и видовая, типа того.
|
 
|
|
09.06.2020, 11:30
Сообщение
#103
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Я когда-то давно делал импорт omf в блендер. Всё вроде бы работало, но тщательно не тестировал. В общем сегодня начал переписывать omf импорт и осознал одну вещь:
в omf файле нет имён костей. Имена костей нужно брать из скелета ogf модели. Но вот если у меня модель в формате object и я хочу накинуть на неё анимацию из omf? И если вдруг мой object редактировался в блендере, то анимация из omf будет не правильной, так как порядок костей нарушен. То есть omf файл требует, чтобы кости были в определённом порядке, так как в самом omf, как уже писал, нет имён костей. Так вот вопрос: получается импорт omf не реализовать без косяков и без ограничений? Из ограничений есть следующее: импортировать анимации omf можно только в том случае, если скелет вообще не редактировался. А если добавить вспомогательные IK кости (которые не экспортируются в object), то порядок костей собъётся и сделать экспорт в omf не получиться. И как вообще в 3д максе со скриптами от den-stash'а обстоят дела? Если изменить порядок следования костей, то как поведёт себя импорт omf? UPDATE: хотя я забыл про чанк с Bone parts (который присутствует в каждой omf если я не ошибаюсь). Может из него можно извлечь имена костей. Надо смотреть. Сообщение отредактировал Pavel_Blend - 09.06.2020, 11:37 -------------------- |
 
|
|
09.06.2020, 12:12
Сообщение
#104
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
И как вообще в 3д максе со скриптами от den-stash'а обстоят дела? Если изменить порядок следования костей, то как поведёт себя импорт omf? Не будет работать. Скелет должен быть в едином древе, как в оригинале в таком же порядке, и никаких левых костей. Это касается общих омф, а если модель индивидуальна - то пожалуйста извращайтесь, лишьбы вертексы не улетали. Сообщение отредактировал Diesel - 09.06.2020, 12:24 |
 
|
|
09.06.2020, 12:23
Сообщение
#105
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Не будет работать. Скелет должен быть в едином древе, как в оригинале в таком же порядке, и никаких левых костей. понятно. А как свои анимации добавлять в существующие omf? Это нужно сохранять скелет в исходном виде? Просто в блендере трудно сохранить скелет в исходном виде. Нужно добавлять дополнительные кости для ИК и прочих вещей. А нельзя взять имена костей из boneparts чанка (S_SMPARAMS=0xF) и забить на порядок следования костей? Использовать имена костей и сопоставлять их с существующим скелетом. -------------------- |
 
|
|
09.06.2020, 12:26
Сообщение
#106
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Pavel_Blend, делай новые омф, персональные. За исключением нпс однако, там движково именные кости двигаются ( скорее всего это не отразится на анимации).
Сообщение отредактировал Diesel - 09.06.2020, 12:29 |
 
|
|
09.06.2020, 12:33
Сообщение
#107
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Diesel, мне как бы делать омф не нужно. Я хочу сделать в блендере импорт/экспорт омф и добавление анимаций в уже существующие омф (как это сделано в скриптах для макса). Моя цель не сделать омф, а предоставить инструменты редактирования омф для мододелов. Пока не получается это сделать. Хотя я делал раньше, но там код кривой и баганутый:
сделать по нормальному не получается. -------------------- |
 
|
|
09.06.2020, 12:35
Сообщение
#108
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Pavel_Blend, я даже в Максе не могу отступить ни влево - ни вправо, от нормы, иначе всё идёт в разнос в огф, которые питаются из общих омф.
Сообщение отредактировал Diesel - 09.06.2020, 12:37 |
 
|
|
09.06.2020, 15:06
Сообщение
#109
|
|
Продвинутый геймер Репутация: 16 Группа: Участник Сообщений: 222 Награды: 3 Регистрация: 28.06.2016 |
Pavel_Blend, есть там всё, вы невнимательно формат OMF смотрели. Тем более OMF это всего лишь хранилище для анимаций, контейнер так сказать. Как вы собираетесь анимации из него вытаскивать если они лежат там не в чистом виде? Хотите перенести функционал конвертора прямо в плагин? В Максе кстати анимацию можно подгрузить для отдельной кости, так что вероятно внутри skl тоже содержится информация о костях на которые анимация влияет.
|
 
|
|
09.06.2020, 15:49
Сообщение
#110
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Pavel_Blend, есть там всё, вы невнимательно формат OMF смотрели. я уже нашёл. Внутри чанка с bone parts (S_SMPARAMS=0xf) есть имена костей, но только в том случае, если версия omf не старая. В старых omf (вроде бы такие omf есть в ТЧ, но нужно проверять) будут только индексы костей. Тем более OMF это всего лишь хранилище для анимаций, контейнер так сказать. ну это ничего не меняет . Контейнер, не контейнер. Как вы собираетесь анимации из него вытаскивать если они лежат там не в чистом виде? так же, как и обычный skls. Я уже это делал, но в своём старом кривом аддоне. Нужно переписать в актуальном аддоне blender-xray и без косяков. В omf данные хранятся в более компактном виде (по сравнению с skls занимают меньше битов) и всё. В Максе кстати анимацию можно подгрузить для отдельной кости, так что вероятно внутри skl тоже содержится информация о костях на которые анимация влияет. Ну это понятно. Я досконально skl не изучал (так как импорт skl писал не я), но в нём точно есть информация о костях, так это ведь исходный формат без сжатия и потери данных. -------------------- |
 
|
|
09.06.2020, 17:08
Сообщение
#111
|
|
Продвинутый геймер Репутация: 16 Группа: Участник Сообщений: 222 Награды: 3 Регистрация: 28.06.2016 |
Pavel_Blend, при декомпиляции, кстати, новый skl получается раз в десять меньшего размера чем исходный(
|
 
|
|
09.06.2020, 17:13
Сообщение
#112
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Что-то я сейчас пытался пытался и не получилось имена костей правильно извлечь. Имена костей раскиданы в другом порядке, чем анимации костей. То есть в чанке с параметрами кости перетасованы и отличаются от порядка костей в чанке с анимациями. Видимо единственный способ это основываться на индексе кости. А это значит, что никакого правленого скелета, только оригинальный. Значит не зря в скриптах для 3д макса так же всё основывается на индексе кости, а не на имени.
-------------------- |
 
|
|
09.06.2020, 20:57
Сообщение
#113
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Сделал импорт omf:
Только вот работает он почему то медленнее чем старый импорт. Не знаю причину этого. Что можно интересного с omf придумать? Ну я пока хочу сделать возможность экспорта анимаций в уже существующий omf (режим добавления анимаций, а не перезапись), как в макс скриптах. -------------------- |
 
|
|
09.06.2020, 23:56
Сообщение
#114
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Что можно интересного с omf придумать? Ну я пока хочу сделать возможность экспорта анимаций в уже существующий omf (режим добавления анимаций, а не перезапись), как в макс скриптах. Добавить, изменить, удалить анимацию. Перегнать в skls и т.д. Чтобы не лазить в конвертер бардака лишний раз. -------------------- |
 
|
|
10.06.2020, 17:40
Сообщение
#115
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Фух, кое-как написал экспортёр в omf. Не думал, что так трудно будет. Пока все ошибки найдёшь и поймёшь какие матрицы на что умножать... Если бы автор аддона не написал бы импорт/экспорт в skls, то я бы точно бы не сделал omf плагин. Так как смотрел в skls как сделано и повторил в omf экспортёре. И формат omf довольно простой. Вся трудность заключалась в том, как интерпретировать данные из файла и правильно загрузить в блендер. Просто система анимации в блендере отличается от сталкеровской. Там трансформации отсчитываются от других начал. В блендере вроде бы идёт расчёт относительно bind pose скелета, а в сталкере относительно начала координат, если я ничего не путаю. Я сам до конца не понял.
Кстати, хочу написать небольшую статью про формат omf. Как допишу, выложу на вики. Может кому пригодиться. -------------------- |
 
|
|
10.06.2020, 18:16
Сообщение
#116
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Написал статью:
stalker wiki -------------------- |
 
|
|
10.06.2020, 18:36
Сообщение
#117
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
Офигеть, как сильно формат похож на метрошные анимации.
https://www.gameru.net/forum/index.php?show...t&p=1676694 |
 
|
|
10.06.2020, 22:25
Сообщение
#118
|
|
Продвинутый геймер Репутация: 16 Группа: Участник Сообщений: 222 Награды: 3 Регистрация: 28.06.2016 |
Pavel_Blend, кстати, надо бы проверить будет аддон, может получится что через блендер анимации из OMF дёргаются гораздо лучше чем с конвертора
|
 
|
|
10.06.2020, 22:36
Сообщение
#119
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Мне бы ещё написать документацию для аддона. Просто я думаю, что многие возможности не используются. Например, кто-нибудь знал о существовании браузера skls в аддоне? Можно смотреть анимации из skls без необходимости их импортировать:
Без документации много возможностей упускаются из виду. Я снимал видео, но они устарели. -------------------- |
 
|
|
11.06.2020, 23:56
Сообщение
#120
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Pavel_Blend, кстати, надо бы проверить будет аддон, может получится что через блендер анимации из OMF дёргаются гораздо лучше чем с конвертора сегодня получилось экспортировать рабочий omf в игру. Экспорт пока не полноценный, поэтому кости дёргаются в разы сильнее, чем оригинал. И такой вопрос: если взять оригинальную анимацию omf (от gsc) и сконвертировать её в skls с помощью конвертера, а потом с помощью actor editor экспортировать обратно в omf, то будет ли потеря качества анимаций? Станут ли кости сильнее дёргаться. Просто я сейчас сравнил и не заметил разницы. Что там что там есть незначительное дрожание. Сообщение отредактировал Pavel_Blend - 11.06.2020, 23:56 -------------------- |
 
|
|
Текстовая версия | Сейчас: 28.04.2024, 05:14 |