CG in Games tosyk's blog

31Окт/103

Converting 3d model from Risen

Русский

В этой статье я подробно расскажу как конвертировать 3d модель персонажа вместе с привязаным к ней скелетом из игры Risen в GMax, либо 3ds Max версии 2008.


Статья расчитана на пользователей знакомых с работой в 3ds Max и не описывает такие моменты как, например, текстурирование объектов, настройка материалов и т.п.

Для  конвертирования нам потребуются следующие инструменты:

  • GMax либо 3ds Max (я использую 2008 х32)
  • Risenaut (программа для распаковки архивов игры) Автор: Nico Bendlin [скачать] [страница]
  • xmac2obj v0.4 (программа для конвертирования 3d моделей *._xmac в *.obj) Автор: Baltram [скачать] [страница]
  • gw::OBJ Importer (плагин для 3ds Max) [страница]
  • importXmacRiggingAndSkinning.ms (скрипт для 3ds Max) Автор: Baltram [скачать] [страница]
  • RisenDDS (программа для конвертирования *._ximg в *.dds) Автор: Nico Bendlin [скачать] [страница]

Итак, приступим:

1. Распаковка ресурсов. Ресурсы упакованы в архивы с расширением *.pak, для начала нужно их распаковать. Модели и текстуры находятся в двух архивах. Откроем программу Risenaut.
первый animations.pak. В нём содержатся игровые объекты, монстры, персонажи, оружие и т.д в формате *._xmac. Находится он по адресу:

<ваш путь установки>\Risen\data\common\animations.pak
следующим нужно извлечь текстуры в формате *._ximg из архива images.pak. Он находится по адресу:

<ваш путь установки>\Risen\data\compiled\images.pak
Для распаковки я использовал настройки программы Risenaut по-умолчанию. После распаковки этих архивов все необходимые для конверта файлы будут находится в папках:

<ваш путь установки>\Risen\data\common\animations
<ваш путь установки>\Risen\data\compiled\images
2. Конвертирование 3d модели. Для примера я возьму файл Ani_Hero_Armor_Don._xmac, который находится по аресу:

<ваш путь установки>\Risen\data\compiled\animations\_emfx36\Humans\Bodys\Ani_Hero_Armor_Don._xmac

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

В результате получаем поддтверждение об успешном конвертировании файла в чёрном окне и папку с названием сконвертированной модели:
В папке

<ваш путь установки>\Risen\data\compiled\animations\_emfx36\Humans\Bodys\Ani_Hero_Armor_Don\

находим файлы:

Ani_Hero_Armor_Don.mtl - информация о материале
Ani_Hero_Armor_Don.obj - геометрия файла

Теперь нужно импортировать 3d модель в 3ds Max. Для этого установим (скопируем) необходимый скрипт importXmacRiggingAndSkinning.ms в папку:

<ваш путь установки>\Autodesk\3ds Max 2008\Scripts\Startup\

После установки запускаем 3ds Max и открываем Utilities -> MAXScript -> Utilities и видим новый пункт:

Risen XMAC importИспользуя плагин для 3ds  Max импортируем файл Ani_Hero_Armor_Don.obj из

<ваш путь установки>\Risen\data\compiled\animations\_emfx36\Humans\Bodys\Ani_Hero_Armor_Don\

Я рекомендую использовать не стандартный плагин, а gw::OBJ Importer. Он более корректно импортирует объекты из *.obj. На картинке ниже настройки для импортирования:После окончания процесса импорта модель появится в 3ds Max:Импортированный объект в сцене имеет имя default,нужно переименовать его в соответствии с именем импортируемого файла (иначе дальнейшая привязка скелета будет невозможной), в нашем случае это Ani_Hero_Armor_Don.obj, таким образом имя будет Ani_Hero_Armor_Don.

Теперь нужно на модель импортировать скелет. В списке Utilities выбираем Risen XMAC import:и жмём на кнопку Import... выбираем файл Ani_Hero_Armor_Don._xmac из

<ваш путь установки>\Risen\data\compiled\animations\_emfx36\Humans\Bodys\

Открываем. Ждём. И получаем результат (кости я раскрасил сам, для наглядности):Как можно заметить модель полностью привязана к скелету и готова к анимации (по словам Baltram, его скрипт полностью сохраняет оригинальные веса и расположение костей, и не генерирует новые):Описанным выше способом импортирую голову из файла

<ваш путь установки>\Risen\data\compiled\animations\_emfx36\Heads\Bodys\Ani_Hero_Head_Gybrush_01._xmac

и получаю:

3. Конвертирование текстур. Для этого нужно использовать программу RisenDDS. Делается это таким же образом, что и в случае с моделями: перетаскиванием оригинального *._ximg на файл RisenDDS.exe:При этом программа ничего не ответит, она просто создаст файл в формате *.dds в папке с исходным файлом.

Для моделей выбранных для этой статьи нужно использовать соответствующие текстуры, для  Ani_Hero_Armor_Don._xmac это:

Ani_Hero_Armor_Don_BodyCloth_Diffuse_S1._ximg
Ani_Hero_Armor_Don_BodyCloth_Normal_S1._ximg
Ani_Hero_Armor_Don_BodyLeather_Diffuse_S1._ximg
Ani_Hero_Armor_Don_BodyLeather_Normal_S1._ximg
Ani_Hero_Armor_Hands_Diffuse_S1._ximg
Ani_Hero_Armor_Hands_Normal_S1._ximg
Ani_Hero_Armor_Hands_Specular_S1._ximg

которые можно найти по адресу:

<ваш путь установки>\Risen\data\compiled\images\Animation\Human\

для головы использовать эти текстуры:

Ani_Hero_Head_Gybrush_01_Diffuse_S1._ximg
Ani_Hero_Head_Gybrush_01_Normal_S1._ximg
Ani_Hero_Head_Gybrush_01_Specular_S1._ximg
Ani_Hero_Head_Eyes_01_Diffuse_01._ximg
Ani_Hero_Head_Eyes_01_Normal_S1._ximg
Ani_Hero_Head_Eyes_01_Specular_S1._ximg
Ani_Hero_Head_Eyes_01_Cube_S1._ximg
Ani_Hero_Head_Mouth_01_Diffuse_S1._ximg
Ani_Hero_Head_Mouth_01_Specular_S1._ximg

которые находятся по адресу:

<ваш путь установки>\Risen\data\compiled\images\Animation\Heads\

Примечание:
Название текстуры, которая принадлежит объектам можно узнать из *.mtl файла, который получается при конвертировании *._xmac файлов.

4. Заключение. В этой главе опишу некоторые тонкости. Сугубо лично/спорно/ИМХО.

- модель изначально повёрнута на 180 градусов по оси Z. Не понятно с чем это связано, но лучше конечно её повернуть на место.

- так же модель немного великовата - 2,04 метра. Уменьшаем до 1,82 метра.

- карты нормалей (Normal Map) представлены зелёным цветом - переводим в нормальный (сине-фиолетовый), сохраняем в *.png (в этом формате не теряется качество).

5. Визуализация. Для просмотра модели я использую щейдеры. Что помогает примерно оценить как модель выглядит в игре в реальном времени. Результат:

Комментарии (3) Пинги (0)
  1. А как ты делаешь «карты нормалей (Normal Map) представлены зелёным цветом — переводим в нормальный (сине-фиолетовый)» ?

  2. использую экшн-срипт для фотошоп http://www.mediafire.com/?mgpfwiirb5epqlc

  3. Спасибо.


Leave a comment

Нет обратных ссылок на эту запись.