This project is read-only.

X-Ray game asset converter


актуально для ревизии 9515

Введение

Программа 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). Тестировалась только на Windows XP SP2/SP3.

Установка

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

Для работы с остальными функциями утилиты настройка не требуется.

Первый запуск после любых изменений в настройках желательно всегда делать с ключом -ro (работа без записи на диск).

Преобразование .ogf в .object

Команда:
 converter [-ogf] [-object] <оригинал> [-out <результат>]

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

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

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

Команда:
 converter [-ogf] -bones <оригинал> [-out <результат>]

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

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

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

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

Замечания:
  • анимация сохраняется в виде ступенчатых кривых и никакого преобразования в сплайны не производится (а надо бы).

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

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

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

Замечания/проблемы:
  • нельзя задать анимацию, в имени которой используются пробелы;
  • см. выше про форму задания кривых.

Преобразование .dm в .object

Команда:
 converter [-dm] [-object] <оригинал> [-out <результат>]

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

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

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

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

Примеры:
 converter -level default:l01_escape -out l01_escape -mode le
 converter -level 1844:military_game -out military_game -mode le

Ключ -mode задаёт режим работы:
maya - декомпилировать только геометрию карты;
le - декомпилировать в формат LE;
le2 - декомпилировать в формат LE (для l12_stancia_2);
raw - декомпилировать в формат LE (отладочный режим).

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

Отладочные параметры: -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 <архив> [-1114|-2215|-2945|-2947ru|-2947|-xdb]

Команда для упаковки:
 converter -pack <папка> [-2947ru|-2947ww|-xdb]

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

Команда:
 converter -dds2tga [-with_solid] [-with_bump]

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

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

Команда:
 converter -ogg2wav 

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

Last edited May 16, 2011 at 11:38 AM by RedPython, version 2

Comments

No comments yet.