CG in Games tosyk's blog

5Фев/117

Converting 3d model from Soul Calibur 4

Русский / English

В статье подробно описан процесс конвертирования моделей из игры Soul Calibur 4 в 3ds Max. Сконвертированные модели имеют скелет и готовы к анимации.

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

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

  • 3ds Max (я использую 2008 х64) должно работать на версиях: 7-2011
  • SPD Unpacker v0.2.1 (распаковщик моделей из *.spd файлов) Автор: Tosyk [скачать]
  • Microsoft .NET Framework v3.5 (библиотеки для работы SPD Unpacker) Автор: Mic*oft [страница]
  • FBX Plug-in (плагин для 3ds Max для открытия *.fbx) [страница]
  • gw::OBJ Importer (плагин для 3ds Max) [страница]

1. Распаковка игровых архивов. Все ресурсы игры Soul Calibur 4 находятся на диске, в данном случае это диск для xbox360. Для распаковки ресурсов предлагаю воспользоваться этим туториалом [страница].

2. Конвертирование моделей. В этой статье я объясню как конвертировать персонажей. Однако конвертирование объектов ничем не отличается. Архивы содержащие ресурсы относящиеся к персонажам располагаются по адресу:

<путь распаковки>\Soul-Calibur-4-(xbox360)\creation\model\

И имеют префикс R_ALL_*. Например первый такой архив это:

<путь распаковки>\Soul-Calibur-4-(xbox360)\creation\model\R_ALL_00b_360.spd

В таких архивах находятся персонажи с полным набором начальной (по игровым условиям) атрибутики. Во всех остальных архивах в этой же папке находятся дополнительные аксессуары/объекты/текстуры для этих (тех, что с префиксом R_ALL_*) персонажей.
Для примера конвертирования я возьму архив с персонажем Kilik, файл с этим персонажем:

<путь распаковки>\Soul-Calibur-4-(xbox360)\creation\model\R_ALL_00c_360.spd

Распаковывать *.spd файлы удобнее всего с помощью SPD Unpacker'а который я сделал на основе двух программ:

  • xbdecompressor.exe (декомпрессор) Автор: Mic*oft
  • spd_ex.exe (распаковщик) Автор: Orez [страница]

за что авторам огромное спасибо!

Для распаковки нужно перетащить и отпустить R_ALL_00c_360.spd на c4_spd_un.exe. При этом вместо файла R_ALL_00c_360.spd будет создана папка с таким же именем (в данном случае - R_ALL_00c_360) с распакованными внутри папкой textures с текстурами (*.dds) и файлами:

  • R_ALL_00c_360_dec.fbx - 3d модель со скелетом
  • R_ALL_00c_360_dec.obj - 3d модель без скелета
  • R_ALL_00c_360_dec.mtl - файл с материалами (нужен для *.obj)
  • R_ALL_00c_360_dec_map.txt - список текстур *.dds из папки textures

Исходный файл R_ALL_00c_360.spd будет также перемещён в эту папку.

В 3ds max версии 2008 есть встроенный плагин для импорта *.fbx файлов, но для лучшей совместимости 3ds max с *.fbx файлами я рекомендую установить плагин для импорта *.fbx - запустить установщик и следовать инструкциям. В 3ds Max, запустить импортер File -> Import -> Autodesk (*.fbx) и выбрать файл. В следующем окне настроек плагина fbx нужно нажать Ok. После загрузки модели в 3ds max в окне просмотра будет это:

Предлагаю немного оптимизировать\улучшить модель:

  • убрать мерцание - выделить всё (Ctrl+A), правой кнопкой щёлкнуть на модели -> Object Properties (Свойства объекта) -> поставить галочку на пункт Backface Cull. Это избавит модель от отображения полигонов с обратной стороны, часто эти полигоны пересекаются с полигонами повёрнутыми к нам лицом, что вызывает мерцание
  • увеличить модель - выделить всё (Ctrl+A) и инструментом Scale увеличить модель на 10000%, таким образом персонаж (в данном случае Kilik) станет ростом примерно 183 см
  • размещение аксессуаров - все элементы одежды/брони у персонажей расположены в нулевой точке координат, это особенность конвертера и с этим ничего не поделать, с помощью инструмента Align перетаскиваем все аксессуары в нужные места, это очень просто сделать ориентируясь на оси объектов и правильное положение на скриншотах из интернета. Вот настройки инструмента Align, подходят для всего кроме челюсти:
  • удалить кадр анимации - выделить всё (Ctrl+A), и удалить первый кадр анимации с полосы анимации, это уменьшит отображаемое количество линий во окне просмотра, к слову сказать при импорте *.fbx в настройках импортера можно убрать галочку в разделе Animation
  • разделить модель - в одной сцене находится 2 костюма одного и того же персонажа, но имеют общий скелет, первый обычный костюм, а второй так называемый rage-костюм отличается тем, что выглядит разорванным. Для удобства работы можно выделить все элементы каждого костюма и заключить выбранное в группы

После вышеперечисленных манипуляций получим готовую модель (я скрыл кости):

Чтобы определить в каком файле какой персонаж находится предлагаю воспользоваться списком соответствий, он основан на списке, автором которого является Firsak [страница]:

Показать список соответствий »

R_ALL_001_360.spd -- Mitsurugi
R_ALL_002_360.spd -- Seong_Mi-Na
R_ALL_003_360.spd -- Taki
R_ALL_004_360.spd -- Maxi
R_ALL_005_360.spd -- Voldo
R_ALL_006_360.spd -- Sophitia
R_ALL_007_360.spd -- Siegfried
R_ALL_008_360.spd -- Rock
R_ALL_00b_360.spd -- Ivy
R_ALL_00c_360.spd -- Kilik
R_ALL_00d_360.spd -- Xianghua
R_ALL_00e_360.spd -- Lizardman
R_ALL_00f_360.spd -- Yoshimitsu
R_ALL_011_360.spd -- Nightmare
R_ALL_012_360.spd -- Astaroth
R_ALL_014_360.spd -- Cervantes de Leon
R_ALL_015_360.spd -- Raphael
R_ALL_016_360.spd -- Talim
R_ALL_017_360.spd -- Cassandra
R_ALL_01a_360.spd -- Yun-Seong
R_ALL_022_360.spd -- Setsuka
R_ALL_023_360.spd -- Tira
R_ALL_024_360.spd -- Zasalamel
R_ALL_028_360.spd -- Hilde
R_ALL_029_360.spd -- Algol
R_ALL_02a_360.spd -- Vader
R_ALL_02b_360.spd -- Yoda
R_ALL_02c_360.spd -- Apprentice
R_ALL_030_360.spd -- Amy
R_ALL_040_360.spd -- Angol-fear
R_ALL_041_360.spd -- Kamikirimusi
R_ALL_042_360.spd -- Shura
R_ALL_043_360.spd -- Ashlotte
R_ALL_044_360.spd -- Scheherazade
R_ALL_050_360.spd -- Arcturus
R_ALL_080_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_081_360.spd -- неидентифицированный персонаж, женщина
R_ALL_082_360.spd -- Jacqueline
R_ALL_083_360.spd -- Auguste
R_ALL_084_360.spd -- Lizardman
R_ALL_085_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_086_360.spd -- Valmiro
R_ALL_087_360.spd -- Algol
R_ALL_088_360.spd -- G-Mitsurugi (Dummy)
R_ALL_08f_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_101_360.spd -- Mitsurugi (добавлено 2011-04-01)
R_ALL_102_360.spd -- неидентифицированный персонаж, женщина
R_ALL_103_360.spd -- Taki
R_ALL_104_360.spd -- Maxi (добавлено 2011-04-01)
R_ALL_105_360.spd -- Voldo
R_ALL_106_360.spd -- Sofitia
R_ALL_107_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_108_360.spd -- Rock (добавлено 2011-04-01)
R_ALL_10b_360.spd -- Ivy
R_ALL_10c_360.spd -- Kilik
R_ALL_10d_360.spd -- Xianghua
R_ALL_10e_360.spd -- Lizardman
R_ALL_10f_360.spd -- Yoshimitsu
R_ALL_111_360.spd -- Nightmare
R_ALL_112_360.spd -- Astaroth (добавлено 2011-04-01)
R_ALL_114_360.spd -- Cervantes de Leon (добавлено 2011-04-01)
R_ALL_115_360.spd -- Raphael
R_ALL_116_360.spd -- Talim
R_ALL_117_360.spd -- Cassandra
R_ALL_11a_360.spd -- Yun-seong
R_ALL_122_360.spd -- Setsuka
R_ALL_123_360.spd -- Tira
R_ALL_124_360.spd -- Dverger
R_ALL_128_360.spd -- Hilde
R_ALL_129_360.spd -- Algol
R_ALL_12a_360.spd -- Vader
R_ALL_12b_360.spd -- Yoda
R_ALL_12c_360.spd -- Apprentice
R_ALL_130_360.spd -- Amy
R_ALL_140_360.spd -- Angol-fear
R_ALL_141_360.spd -- Kamikirimusi
R_ALL_142_360.spd -- Shura
R_ALL_143_360.spd -- Ashlotte
R_ALL_144_360.spd -- Scheherazade
R_ALL_150_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_180_360.spd -- неидентифицированный персонаж, женщина
R_ALL_183_360.spd -- Marienbard
R_ALL_184_360.spd -- Lizardman
R_ALL_185_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_186_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_188_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_18f_360.spd -- неидентифицированный персонаж, женщина
R_ALL_285_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_286_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_381_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_385_360.spd -- неидентифицированный персонаж, мужчина
R_ALL_485_360.spd -- неидентифицированный персонаж, мужчина

3. Текстуры и материалы. Текстуры распаковываются вместе с моделями в папку textures и имеют формат *.dds. Однако вероятно в игру Soul Calibur 4 встроен "мощный" редактор настройки цветов персонажа/костюма/аксессуаров. Разработчики разделили все вероятные места покраски элементов персонажа по отдельным каналам и файлам-маскам.

В этом разделе я расскажу как настроить материал Vray для персонажа Soul Calibur 4 так, чтобы цвета при рендере соответствовали тому, что представленно в игре. В качестве примера я взял основной элемент костюма для Ivy (Isabella Valentine):

Показать туториал по раскрашиванию »

  1. выбрать материал кликнув на него
  2. кликнуть на кнопку Standart
  3. выбрать материал Composite
  4. Клукнуть Ok
  5. в следующем окне выбрать Discard old material
  6. кликнуть на Base Material
  7. клукнуть на Diffuse Color
  8. выбрать Mix
  9. кликнуть Ok
  10. в Color #1 выберите вашу основную (диффузную) текстур (тип материала - Bitmap)
  11. в Color #2 в цветном "боксе" выберите Основной цвет, в моём случае это Золотой цвет
  12. параметр Mix Amount установите равным 70.0
  13. поднемитесь в материал Composite, кликните на None напротив Mat. 1 и выберете материал Standart
  14. для Diffuse Color выберете тип материала Mix и войдите в него
  15. в Color #1 выберите вашу основную (диффузную) текстур (тип материала - Bitmap)
  16. в Color #2 выберите тип материала Mix
  17. параметр Mix Amount установите равным 70.0 и войдите в Mix
  18. в Color #1 в цветном "боксе" выберите Белый цвет
  19. в Color #2 в цветном "боксе" выберите Дополнительный цвет, в моём случае это Пурпурный цвет
  20. в Mix Amount выберететип материала RGB Tint
  21. в Soul Calibur 4 для раскрашивания текстур используются текстуры-маски: Красный (Red) канал + Зелёный (Green) канал + Голубой (Blue) канал. В данном случае нам нужен только Красный канал, выберите белый цвет для R и чёрный цвет для G и B
  22. выберети вашу текстуру-маску для Map
  23. после Визуализации вы получите это (Жёлтый цвет можно поменять в шаге 11, Пурпурный цвет можно поменять в шаге 19):

После настройки материалов и с помощью визуализатора Vray можно получить такие рендеры:

Показать ещё рендеры »

Для того чтобы определить цвета для каждого персонажа Mario_Kart сделал скриншоты игрового редактора [скачать] [страница]. Однако стоит учесть цветовые погрешности при визуализации, потому как на цвет в случае с 3ds max влияет довольно много условий, а на цвета в игре почти ничего не влияет.
Так же для примера я публикую модель персонажа Kilik в формате *.max для 3ds max 2008 [скачать].

5. Визуализация. 3ds max и Vray.

Комментарии (7) Пинги (0)
  1. Thank you for all you do here.
    I learned a lot.

    I hope someday GooD-NTS fabricate a tool for Red Dead Redemption.

  2. Отличный туториал! Очень доходчиво, а вытаскивание моделей моделей из этой игры не легкая задача. Да еще и текстуры красить. Скажите Тоsyk ставили вы когда нибудь модель в Т позу? Допустим полученую 3d Ripper’ом?

  3. Чувак, круто сконвертировал!!!
    Я делаю модификации для ГТА СА, и очень очень очень надо модель Ivy. Плиз, плиз плиз плиз плиз плиз плиз плиз плиз!!!!! Дай мне ссылку где можно скачать эту модель, надо надо надо, хочу хочу хочу!!!!! Плиз плиз плиз плиз плиз !!!!!!

  4. Застрял на этапе конвертирования, хоть скидываю файл на экзешник, хоть дважды клацаю и открываю с помощью экзешника – на вид все проходит нормально, но на выходе получаются нормальные текстуры и модели в виде взрыва треугольников :(
    Может у меня версия игры с обновлениями или последний плагин для FBX (под макс 2010) не так полезен как предыдущие версии…
    В общем вот результат (с копией исходника): http://zalil.ru/31707078
    Посмотри пожалуйста…

  5. В общем я разобрался, скачал с xentax-а архив уже конвертированых моделей и сравнил – в моих obj и fbx, сделанных текущей версией SPD Unpacker (v0.2.1), все символы точки в десятичных числах заменены запятыми – из-за этого при открытии в редакторе получается каша на экране.
    http://clip2net.com/s/1bcQz fbx
    http://clip2net.com/s/1bcPy obj

    Конвертированые модели брал тут: http://forum.xentax.com/viewtopic.php?p=39951#p39951

  6. Мне интересна возможность експорта анимаций из игры. Прошу помощи в этом деле.

  7. Alexsandr047, приветствую
    на сколько мне известно вытащить анимацию из игры невозможно, хотя если вы спросите тут же на форуме может быть кто то уже сталкивался с экспортом анимации


Leave a comment

(required)

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