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 thoughts on “Converting 3d model from Risen”
А как ты делаешь «карты нормалей (Normal Map) представлены зелёным цветом — переводим в нормальный (сине-фиолетовый)» ?
использую экшн-срипт для фотошоп http://www.mediafire.com/?mgpfwiirb5epqlc
Спасибо.