X-Ray game asset converter

Материал из xrWiki
Версия от 20:35, 29 июля 2024; RedPython (обсуждение | вклад) (Преобразование .ogf в .object)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Программа converter предназначена для работы с форматами игры и редакторов (LE/AE). Реализует следующие функции:

  • преобразование .ogf в .object;
  • преобразование скелета из .ogf в .bones;
  • преобразование всех анимаций из .ogf или .omf в .skls;
  • преобразование отдельных анимаций из .ogf или .omf в .skl;
  • преобразование .dm в .object;
  • преобразование игровых карт в формат Level Editor;
  • распаковка и упаковка игровых архивов;
  • множественное преобразование текстур из .dds в .tga;
  • множественное преобразование звуков из .ogg в .wav/.thm.

Работает в консоли (Start -> Run -> cmd.exe).
Документация на этой страничке актуальна для версии 0.3.1

Установка[править]

Для работы с картами и MOD SDK (параметры -level, -dds2tga, -ogg2wav) нужно задать $sdk_root$ в fsconverter.ltx и положить этот файл в каталог с converter. Аналогично с путями к картам в секциях настроек профилей из файла converter.ini, который можно разместить ещё и в $sdk_root$. Либо можно использовать fs.ltx из SDK, для этого указать ключ -fs <путь_к_fs.ltx>
Для работы с остальными функциями утилиты настройка не требуется.
Первый запуск после любых изменений в настройках желательно всегда делать с ключом -ro (работа без записи на диск).

Использование[править]

Преобразование .ogf в .object[править]

Команда:

converter [-ogf] [-object] <оригинал> [-out <результат>|-dir <результат>] [-sg soc|cscop]

Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на .object
Если задан ключ -dir <результат>, то имя результирующего файла генерируется из исходного путём замены расширения на .object, файл сохраняется в папку <результат>

Ключ -sg задаёт формат групп сглаживания для выходных .object-файлов:

  • soc — формат ТЧ SDK.
  • cscop — формат ЧН/ЗП SDK.

Если ключ -sg не задан, то будет использоваться формат ТЧ.

Замечания/проблемы:

  • для OGF v3 (сборки 1098, 1114, 1154) не восстанавливается bind pose скелета (просто потому что не предусмотрена форматом), но часто её можно (и нужно) реконструировать вручную из idle-анимации.
  • для OGF v4+ (ЧН, в том числе сборка 3120) не восстанавливаются метки в анимациях (неизвестно, как они хранятся в обновлённом .object). Кроме того, SDK ТЧ игнорирует информацию о третьей и четвёртой влияющих на вершину костях.
  • нет гарантии, что у двухсторонних поверхностей правильно определится "главная" сторона, однако на практике обычно всё хорошо.

Преобразование скелета из .ogf в .bones[править]

Команда:

converter [-ogf] -bones <оригинал> [-out <результат>|-dir <результат>]

Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на .bones
Если задан ключ -dir <результат>, то имя результирующего файла генерируется из исходного путём замены расширения на .bones, файл сохраняется в папку <результат>

Преобразование всех анимаций из .ogf или .omf в .skls[править]

Команда:

converter [-ogf|-omf] -skls <оригинал> [-out <результат>|-dir <результат>]

Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на .skls
Если задан ключ -dir <результат>, то имя результирующего файла генерируется из исходного путём замены расширения на .skls, файл сохраняется в папку <результат>

Преобразование отдельных анимаций из .ogf или .omf в .skl[править]

Команда:

converter [-ogf|-omf] -skl <имя_анимации> <оригинал> [-out <результат>|-dir <результат>]

Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на .skl и добавления суффикса с именем анимации.
Если задан ключ -dir <результат>, то имя результирующего файла генерируется из имени анимации с добавлением расширения .skl, файл сохраняется в папку <результат>.

В качестве имени анимации можно указать выражение. Доступны следующие выражения:

  • all - все анимации из входного файла будут сконвертированы в .skl;
  • /регулярное выражение/ (начинается и заканчивается на прямой слеш). Конвертируются анимации, чьи имена соответствуют регулярному выражению;
  • маска файла. Маска содержит специальные символы * и ? (где * - ноль или несколько произвольных символов, ? - один произвольный символ). Конвертируются анимации, чьи имена соответствуют указанной маске.
Заметка

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

Преобразование .dm в .object[править]

Команда:

converter [-dm] [-object] <оригинал> [-out <результат>|-dir <результат>] [-info]

Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на .object
Если задан ключ -dir <результат>, то имя результирующего файла генерируется из исходного путём замены расширения на .object, файл сохраняется в папку <результат>

Заметка

Информация о границах масштабирования детальной модели теряется, однако можно её посмотреть с помощью ключа -info (вместо -object).

Преобразование игровых карт в формат SDK[править]

Команда:

converter -level <номер_сборки>:<имя_карты> [-terrain] [-with_lods] [-out <имя_сцены>] [-mode maya|le|le2|raw] [-sg soc|cscop]

Примеры:

converter -level default:l01_escape -out l01_escape -mode le
converter -level 1844:military_game -out military_game -mode maya

Ключ -mode задаёт режим работы:

  • maya — декомпилировать только геометрию карты.
  • le — декомпилировать в формат LE.
  • le2 — декомпилировать в формат LE (для l12_stancia_2).
  • raw — декомпилировать в формат LE (отладочный режим).

Ключ -with_lods обрабатывается в зависимости от значения -mode. Если он задан совместно с -mode maya, программа выдаст ещё и MU-модели. С остальными режимами его наличие заставляет converter разбивать LOD-текстуры, что необходимо для полной пересборки.

Ключ -sg задаёт формат групп сглаживания для выходных .object-файлов:

  • soc — формат ТЧ SDK
  • cscop — формат ЧН/ЗП SDK

Если ключ -sg не задан, то будет использоваться формат ТЧ.

Ключ -terrain позволяет включить в *_terrain.object только те полигоны, которые имеют текстуру, имя которой начинается с "terrain\".

Отладочные параметры: -dbgcfrm, -dbgmrg.

Замечания/проблемы:

  • Геометрия карт из 1098, 1114, 1154 часто содержит ошибки, на которых валится современный xrLC. По крайней мере часть из них диагностируется при декомпилировании и сохраняется в стандартном формате LE в файле $log$\converter_<имя_сцены>.err
  • Деревья из ранних сборок (1098-1154) нельзя использовать с современными шейдерами для крупной растительности. Следует использовать современные MU-модели.
  • Геометрия карт из сборок 2215-3312 (ТЧ) не содержит ошибок вроде нулевых треугольников или потяжек текстур, однако в редких случаях они могут появиться при пересборке с помощью xrLC на этапе оптимизации. Наблюдается, например, в шахтах лифтов на l11_pripyat.
  • Геометрия карт из сборки 3456 и выше (ЧН) наоборот, иногда содержит ошибки (с точки зрения xrLC из MOD SDK 0.4).
  • Неправильно назначается compiler shader для собранных в режиме draft карт.
  • Абажуры ламп, тайники — фиксированная геометрия, то есть изменения будут видны только после полной пересборки карты.
  • Декали (wallmark.part) восстанавливаются только в случае наличия избыточного level.wallmarks.
  • Не обрабатывается случай с пересекающимися областями звукового окружения (level.snd_env/sound_env.part). В оригинальной игре карт с таким свойством нет.
  • У моделей детальных объектов форсируется флажок two-sided для нормальной отрисовки в LE.
  • Сетка навигации ИИ (level.ai/ai_map.part) некоторых релизных карт (например, l08_yantar) утоплена в геометрии. Это не баг конвертера, а старая версия ИИ-сетки, ушедшая в релиз игры (геометрия ландшафта изменилась, а ИИ-сетку не стали править).

Распаковка и упаковка игровых архивов[править]

Команда для распаковки:

converter -unpack <архив> [-flt <фильтр>] [-11xx|-2215|-2945|-2947ru|-2947ww|-xdb] [-dir <результат>]

Ключ -flt служит для извлечения файлов по маске. Распаковываются только те файлы, чьи имена содержат подстроку <фильтр>
Примеры:

converter -unpack -xdb gamedata.db0 -flt .ogf
converter -unpack -2215 gamedata.xp0 -flt \levels\

Команда для упаковки:

converter -pack <папка> [-2947ru|-2947ww|-xdb|-xdb_ud <файл>]

Если задан ключ -dir <результат> при распаковке, то файлы будут распаковываться в <результат> папку.
Если при распаковке ключ -dir не задан, то файлы будут распакованы в папку, имя которой идентично имени архива без расширения.
Если задан ключ -xdb_ud <файл>, то при упаковке содержимое <файла> будет добавлено в специальный раздел архива. Используется при запаковке архивов ЧН и ЗП.

Заметка

Используйте ключ -xdb для распаковки архивов Чистого Неба и Зова Припяти.
Для распаковки билдов сверьтесь с отдельной страничкой.

Множественное преобразование текстур из .dds в .tga[править]

Команда:

converter -dds2tga [-with_solid] [-with_bump]

Утилита читает все .thm файлы в $textures$ и воссоздаёт .tga из .dds в $game_textures$. Уже существующие .tga файлы не перезаписываются. Ключ -with_solid предписывает обрабатывать ещё и непрозрачные текстуры, что нужно при пересборке с -gi. Ключ -with_bump предписывает обрабатывать bump-текстуры, которые указаны в .thm-файлах.

Множественное преобразование звуков из .ogg в .wav/.thm[править]

Команда:

converter -ogg2wav

Утилита воссоздаёт .wav/.thm файлы в $sounds$, используя *.ogg из $game_sounds$. Уже существующие .wav/.thm не перезаписываются.