Vampire: The Masquerade — Bloodlines. Как импортировать в 3ds Max модели с анимациею.


Vampire: The Masquerade — Bloodlines (далее для краткости — VTMB) — одна из самых первых игр на движке Source. Она была выпущена в один день с Half-Life 2, для которой этот движок и разрабатывался. Однако есть информация о том, что в VTMB использовалась не самая свежая версия движка Source. По этой причине многие форматы файлов несколько отличаются от тех, что в ходу в Half-Life 2 и других играх на движке Source, и многие программы, созданные для работы с файлами игр на движке Source, либо не подходят вовсе, либо работают с оговорками. Поэтому импорт моделей из Vampire: The Masquerade — Bloodlines значительно отличается от импорта моделей из других игр на движке второй “Халвы”, в связи с чем я решил рассмотреть случай VTMB отдельно.
В целом принципы схожи, но в ряде случаев придётся использовать другой, менее удобный софт, ссылки на который здесь приведены и рассказано, как с оным работать. Рекомендую также ознакомиться с моей статьёй об импорте моделей из игр на движке Source для общего пониманяи процесса (ссылка на статью появится здесь, когда я её наконец завершу).
Распаковка архивов *.vpk
Файлы игры лежат в архивах с расширением *.vpk. Они лежат в папке Путь-к-Steam\SteamApps\common\Vampire The Masquerade - Bloodlines\Vampire\ И из них нам нужно будет достать непосредственно файлы моделей и текстур для дальнейшей работы.
В статье рассматривается работа с файлами официальной версии игры Vampire: The Masquerade — Bloodlines (для краткости VTMB) на Steam. Соответственно, если у вас пиратская копия, то ситуация может отличаться. Например, часто в “пиратках” файлы игры не запакованы в архивы, а лежат открыто. В таком случае вам не будет не нужно ничего делать с архивами (ввиду их отсутствия), сразу можете переходить к работе непосредственно с файлами моделей и текстур. Но бывают и пиратские копии, где файлы запакованы в архивы. В любом случае внимательно читайте инструкцию, включайте голову и действуйте по ситуации.
Архивы VTMB, хоть и имеют то же расширение *.vpk, что и у других игр на движке Source, имеют другой формат, и GCFScape их не “переварит”. Вам нужна другая программа того же назначения — Quick and Dirty Bloodlines Tools. Можете скачать её, конечно, отдельно, но она есть в составе набора Bloodlines SDK. Рекомендую вам скачать именно его, поскольку из него нам понадобятся ещё несколько программ.
Bloodlines SDK — это набор утилит для работы с файлами игры
Vampire: The Masquerade — Bloodlines различного назначения, которые какой-то добрый человек собрал все в одном месте. На всякий случай я приложил прямо сюда
Bloodlines SDK той версии, которой я пользовался, когда писал данный текст, чтобы не потерялся. Вы также можете скачать этот набор программ
с сайта автора, возможно, там есть версия поновее.
Когда запустите Bloodlines SDK, он попросит указать ему путь к игре. Нажмите “Отмена”, мы всё найдём сами.

Далее он предупредит, что не знает путь к игре, поэтому не всё будет работать корректно. Ничего страшного, нажмите “Отмена”.

Далее он предложит распаковать файлы игры (во, пристал!). Это мы планируем сделать далее вручную, поэтому отказываемся снова.

Когда наконец появится список утилит, дважды щёлкните на VPK Tool. Под этим названием скрывается Quick and Dirty Bloodlines Tools (основной частью которого VPK Tool и является).

pack000.vpk, открытый в программе Quick and Dirty Bloodlines Tools
В появившемся окне нажмите сверху на VPK Extractor и далее на кнопку Open File. Вам предложат выбрать архив. Найдите их в папке Путь-к-Steam\SteamApps\common\Vampire The Masquerade - Bloodlines\Vampire\ и откройте один из них, чтобы поглядеть, что там к чему.
Сразу скажу, что Quick and Dirty Bloodlines Tools далеко не так удобны для работы с архивами, как GCFScape, но, раз последний не работает, делать нечего.
А неудобство вот какое: файлы в “размазаны” по архивам, вы не знаете в каком из *.vpk находится нужный вам файл. GCFScape, во-первых, при открытии архива сам “подцеплял” архивы, находящиеся в той же папке, со сходными именами, и показывал список файлов сразу из всех архивов, во-вторых, он отрисовывал древовидную структуру файлов и папок в архиве, а в Quick and Dirty Bloodlines Tools ни того, ни другого нет, он просто показывает весь список “в кучу”. Это ещё больше усложняет поиск нужных файлов. Если щёлкнуть правой кнопкой по зоне с названиями файлов и в выскочившем меню выбрать Find..., вы, конечно, можете найти файл по имени, но это только если вы знаете хотя бы часть имени того, что ищете. А если нет, было бы куда удобнее найти файл, ориентируясь по папкам, но этого, повторюсь, здесь нет.
Поэтому есть два варианта: либо при помощи Find... выискивать нужные файлы во всех архивах по очереди, либо, что лучше, и если у вас есть достаточно свободного места на жёстком диске, скопировать архивы куда-нибудь в укромное место (чтоб распакованные файлы не мешались в файлах Steam) и там распаковать их целиком. Предлагаю воспользоваться именно вторым способом.
- В папке с игрой выделите все файлы с расширением *.vpk.
- Скопируйте их куда-нибудь в специально созданную папку.
- Откройте первый архив при помощи Quick and Dirty Bloodlines Tools, как рассказано выше.
- Щёлкните по самому первому файлу в списке, чтобы он оказался выделен.
- Пролистайте список при помощи полосы прокрутки справа в самый низ.
- Зажав клавишу Shift, щёлкните на самом последнем файле. Выделяется все файлы списка.
- На любом месте списка щёлкните правой кнопкой мыши и выберите в выскочившем меню пункт Extract. Полоса прогресса начнёт заполняться, и вскоре все файлы архива распакуются на жёсткий диск в папку, где этот архив и лежал.
- Откройте теперь следующий архив и повторяйте пункты 4 - 8, пока не распакуете абсолютно всё (у меня некоторые архивы в конце давали ошибку, но, вроде, без них обошлось).
- Удалите копии *.vpk-архивов, чтобы сэкономить место на жёстком диске.
Распаковка (декомпиляция) *.mdl
Теперь у вас есть файлы игры в распакованном виде на жёстком диске, и вы можете, путешествуя по папкам, найти нужное, ориентируясь по их названиям. Например, модели персонажей находятся в папке models\character\npc\, а текстуры к ним в materials\models\character\npc\, вполне логично.
Например, я решил вытащить модельку, лежащую в папке models\character\npc\unique\santa_monica\jeanette. Вот какие файлы лежат там:

Мы видим здесь файл jeanette.mdl. С этим файлом сейчас и будем работать.
*.mdl-файл — это тоже архив. В нём, содержится файл с расширением *.qc, который является текстовым и содержит в себе настройки модели, и файлы с расширением *.smd. А в оных и содержится информация о сетках и анимациях.
Распаковку файлов *.mdl принято называть декомпиляциею.
В каждом *.mdl, как правило, есть *.smd с названием, так или иначе содержащим слово reference, ref, REF или типа того. Это файл, в котором заключена информация о сетке (проще говоря, это и есть сама модель!), остальные же *.smd — это либо некие служебные файлы, либо анимации к ней.
Для работы с *.mdl-файлами я обычно рекомендую использовать программу Crowbar. Он подходит для работы с файлами *.mdl как, собственно, Half-Life 2, так и многих других игр на движке Source. Но, к сожалению, в Vampire: The Masquerade — Bloodlines модели имеют несколько иной формат, поэтому Crowbar тут не годится. Зато годится программа MDL 2 SMD, которая содержится в уже упомянутом выше Bloodlines SDK. В списке утилит дважды щёлкните по пункту Model Decompiler, чтобы запустить её.

Вас предупредят, что программа-де ещё бета, и особо рассчитывать не приходится. Ну, что ж поделать, нажимаем, OK.

Появится окошко декомпайлера (см. скриншот ниже). В нём слева внизу нажмите на кнопку Add Files (1) и выберите ваш *.mdl-файл. Как вы видите на скриншоте, я выбрал файл jeanette.mdl. Появится структура папок и файлов, где вам нужно выделить ваш файл (2). Убедитесь, что справа вверху переключатель (3) стоит в положении Each model’s source folder (это чтобы в C:\Temp срач не разводить). Теперь справа нажимайте на Decompile Selected (4). Начнётся процесс декомпиляции. Через какое-то время он завершится, и появится зелёная надпись “success!” (5).

Если вы сделали, как сказано выше, модель распакуется в ту же папку, что и сам *.mdl-файл. Давайте посмотрим, что новенького появилось в нашей папке.

Появился *.qc-файл а также много файлов с расширением *.smd. Среди них мы видим файл JeanetteR2_REF.smd. Судя по всему, это и есть модель. Во-первых, в нём содержится слово REF, во-вторых, он тут самый “жирный” (2790 КБ).
Импорт *.smd-файлов в 3ds Max
В предыдущем разделе мы получили набор *.smd-файлов выбранной модели и решили, с каким из них мы будем работать. Давайте рассмотрим процесс импортм *.smd-файлов в 3ds Max.
В старину на Руси для импорта *.smd-файлов в 3ds Max использовался Cannonfodder’s SMD Importer, который был бинарным плугином, работал быстро и старался как-то восстановить группы сглаживания из нормалей. Но, знаете ли, бинарные плугины — палка о двух концах: они работают куда быстрее максскриптов, но стоит выйти новой версии “Макса”, и все плугины дружно “отваливаются”. А если на плугин автор положил болт и исходников миру не явил, про такой плугин можно смело забывать. Так и произошло с Cannonfodder’s SMD Importer: на современных версиях 3ds Max он не работает…
Для импорта *.smd-файлов в 3ds Max я предлагаю пользоваться скриптом импорта из состава Wall Worm Model Tools.

Wall Worm Model Tools — это набор скриптов для 3ds Max, написанных на языке MaxScript и предназначенных для импорта и экспорта моделей в формате движков Source (Half-Life 2) и GoldSource (Half-Life 1).
Я приложил прямо сюда архив с версией, которой пользуюсь в данный момент, чтобы не потерялся. Но я рекомендую вам скачать его
с сайта разработчиков, поскольку там могли появиться более свежие версии.
Набор бесплатен, но имеется также и платная версия, которая имеет более широкий функционал и, по заверениям разработчиков, за счёт компиляции в бинарный формат, более высокую скорость работы. Скажу честно, не проверял.
Разработчики отмечают, что набор утилит предназначен в первую очередь для экспорта моделей, а с импортом там всё не так хорошо. На данный момент
Wall Worm Model Tools — единственный способ импортировать
*.smd-файлы в 3ds Max. Так что, каким бы он глючным ни был, выбора у нас нет. Однако радует, что на данный момент этот набор утилит развивается разработчиками, регулярно выходят новые версии, активен форум.
В частности, что мне очень не нравилось, при импорте в сетке похеривалась инфа о нормалях. Так вот, давеча скачал новую версию, и там этот вопрос решён! А то я уже собрался рассказывать, как это чинить. Надеюсь, и с остальными глюками разберутся! А пока что я рассмотрю возникающие в связи с этим проблемы и предложу свои варианты их решения.
Установка Wall Worm Model Tools на 3ds Max 2016
Разработчики Wall Worm рекомендуют всегда использовать самую последнюю версию 3ds Max. Я делаю всё на примере 3ds Max 2016.
Чтобы установить Wall Worm Model Tools, проделайте следующие действия:
- Скачайте архив с утилитами (ссылки даны выше).
- Распакуйте архив.
- Откройте папку с вашим 3ds Max.
Проще всего это сделать так: Щёлкните правой кнопкой по ярлычку и выберите “Расположение файла”.

- Откроется папка с “Максом”.

Найдите в ней папку scripts и откройте.
- В папку scripts скопируйте папку WallWorm.com из распакованного архива программы. Поскольку копирование происходит в системную папку, вам нужно обладать правами администратора и согласиться на запись.

- Запустите 3ds Max.
- Выберите пункт меню Scripting → Run Script (в более старых версиях MAXScript → Run Script)

- Откроется папка со скриптами “Макса”. Сюда мы только что копировали папку WallWorm.com. Зайдите в неё, а в там найдите файл install.ms и откройте его.
- Вам будет предложено ознакомиться с EULA. Необходимо согласиться.

- Через несколько секунд вам сообщат об успешной установке и откроют Web-страницу со списком последних изменений, которую можно закрыть.

- Теперь вам предлагается указать настройки для WallWorm. Предлагаю закрыть это окно, ничего в нём не меняя. Если вы по какой-то причине захотите его увидеть вновь, сделать это вы сможете, выбрав пункт меню Wall Worm → WallWorm Settings (самый нижний).

- Wall Worm Model Tools установлены. Теперь у вас в меню должен появиться пункт “Wall Worm”. Проверьте, чтобы он там был.

Импорт сетки при помощи Wall Worm Model Tools в 3ds Max 2016
Теперь у вас установлен Wall Worm Model Tools на 3ds Max 2016, пришло время импортировать зариггенную сетку. Для этого выберите в меню Wall Worm → Wall Worm Importers → SMD and QC Importer

Появится окно с настройками импорта. В нём изначально всё стоит как положено, ничего пока менять не надо. Но можете свериться с моим скриншотом. Если всё так, нажимайте Import QC or SMD

Вам предложат выбрать файл. Выберите JeanetteR2_REF.smd, который мы извлекали выше. Чтобы увидеть в списке *.smd-файлы, выберите этот тип файлов в выпадающем меню:

Результат импорта
Как только вы откроете файл, начнётся процесс импорта. Скрипт задумается на какое-то время (на моём компьютере это пара десятков секунд), а потом выдаст, наконец, результат. Результатом будет сглаженная и заскиненная модель в T-позе с костями. Плюс материалы в редакторе материалов (без назначенных в них текстур, как с этим бороться я расскажу ниже). Плюс надпись (объект типа “Текст”) с названием модели (её можно сразу удалить). Окошко SMD and QC Importer можете тоже закрыть. В итоге у нас останется сама сетка и кости.
Слияние вершин
У импортнутой только что модели есть проблема: у каждого полигона собственный набор вершин. Соответственно, если десять полигонов сходятся в одной точке, то вершин там будет десять, а не одна, как положено. В импортёре есть галка “Weld Vertices”, но она, зараза такая, не работает. В связи с этим я рекомендую сделать слияние.
- Выделите сетку
- Перейдите на вкладку Modify
- В списке выберите Editable Poly
- В появившемся предупреждении ответьте утвердительно

- Перейдите на уровень редактирования Vertex (проще всего это сделать, нажав на клавиатуре циферку 1)
- Выделите все вершины (можно рамочкой, но лучше через клавиатурное сокращение Ctrl+A, гарантированно ничего не пропустите). Вершины выделятся красным.
- Нажмите на прямоугольничек рядом с Weld.
- Появится настройка параметров прямо в сцене. Укажите наименьший порог (0.01, особое внимание, НЕ 0.1). Посмотрите на цифры Before и After. Вторая цифра должна быть сильно меньше первой.
- Нажмите на галочку, изменения вступят в силу

- Можете снять выделение
Всё, вот теперь у нас есть сетка с костями.
Сохраните их пока, настало время заняться текстурами.
Конвертация и импорт текстур
Поиск текстур и конвертация
Для начала нужно найти, где лежат текстуры в игровом формате.
Как правило, они лежат в папке materials\models\ и далее путь такой же, как до модели.
Откройте файл с расширением *.qc, чтобы выяснить это наверняка.
Найдите в нём строчки, начинающиеся с $cdmaterials. В них и будет путь до текстур относительно папки materials.

Всё как я говорил: основные текстуры в папке materials по тому же пути, что и модель, и ещё несколько дополнительных в паре других мест.
Отправляйтесь по указанным путям. Вот я зашёл в папку materials/models/character/npc/unique/Santa_Monica/Jeanette/, что же мы тут видим?

Куча файлов с расширениями *.tth, *.ttz, *.vmt.
*.vmt — настройки материала (в т.ч. название файла текстуры).
*.tth, *.ttz — собственно сама текстура, состоящая из двух файлов.
В оригинальном Half-Life 2 текстуры хранились в формате *.vtf. Для открытия этих файлов используется программа VTFEdit. Поскольку ранее (я надеюсь) вы установили Bloodlines SDK, у вас уже эта программа есть.
В Vampire: The Masquerade — Bloodlines за каким-то хреном вместо *.vtf текстура состоит из двух файлов *.tth и *.ttz. Когда вы дважды кликаете по одному из этих двух файлов, запускается встроенный конвертер Bloodlines SDK, конвертирует *.tth и *.ttz в *.vtf, затем открывает последний в VTFEdit. А кажется, что “оно сразу”.
Вот такая “игла в яйце”!
Для начала нам нужно конвертировать все текстуры в формат TGA. Это можно сделать при помощи программы VTFEdit. Если вы установили Bloodlines SDK, она у вас есть.
- Двойным щелчком открывайте *.tth или *.ttz-файл.
- Текстура откроется в VTFEdit. Теперь выберите пункт меню File → Export (а ещё лучше — используйте сочетание клавиш Ctrl+E.
- Не забудьте указать, что вам нужен именно формат *.tga!
- Сохраните файл

- Повторяйте пункты 1-4 для всех нужных текстур.
Хорошо. Теперь наряду с файлами *.tth, *.ttz и *.vmt в папке с текстурами появились ещё *.tga-файлы. Теперь давайте загрузим их в 3ds Max.
Импорт текстур
Сцена с загруженной сеткой JeanetteR2_REF.smd без текстур с костями в T-позе
Вы, надеюсь, ещё не закрыли 3ds max с импортированной в него сеткой? Если закрыли, то откройте снова, она нам нужна. Сейчас будем на неё текстурки лепить. Если вы сделали всё, как я предлагал выше, с помощью моего скрипта это будет дело одной кнопки.

Разработчики Wall Worm демонстрировали возможность импортировать модель сразу с текстурами. Для этого-де они должны быть сконвертированы в *.tga и сложены в соответствующую папку в materialsrc (которую вам предлагалось указать в окне настроек, которое я посоветовал закрыть по причине ниже).
Так вот, чёрт его знает, как заставить это работать. Я уже пробовал и materialsrc скрипту указывать, и в корень tga’шки класть, и в исходниках искал, где это дело задействовано. Исходники там очень большие, поэтому я физически не смог прочитать всё (и не ставил такой цели).
Может быть, это когда-то работало, а теперь не работает. Может, в VTMB модели содержат информацию о текстурах как-то не так, что конкретно эта часть не работает. Уж простите, задачу решил как смог. Если кто-то разобрался и может мне объяснить, ЧЯДНТ, с радостью прочитаю это в комментариях или в email.
В-общем, я принял решение написать свой скрипт, который выставляет диффузные карты на место. Значит, как он работает: вы указываете ему папку с содержащимися там файлами *.vmt и *.tga. Скрипт ищет *.vmt-файлы, имена которых совпадают с именами материалов в сцене. Если находит, парсит, находит в них переменную $basetexture, а в ней уже — имя текстуры. Дело в том что бывают несколько материалов с разными именами но с одинаковой текстурой. Но если *.vmt-файла не окажется, то в качестве текстуры берётся соответствующая *.tga’ха.
Ситуация, значит, такая: после импорта уже создались материалы, а вот карты текстур в них не указаны. Вы можете, конечно, вручную в Material Editor’е указывать файлы, ведь текстуры в формате *.tga мы уже научились извлекать выше. Если бы мы для примера взяли модельку попроще, где текстура всего одна, с этим бы проблем не было, но тут модель сложная, текстур на ней много, и это утомительно. А кроме того по названию материала не всегда можно определить, какому материалу какая текстура нужна. Название файла текстуры, как правило, совпадает с названием материала, но не всегда. Точная информация содержится в файлах *.vmt. Вот пример касательно данной модели: в ней есть материалы с названиями jeanette_hair_6, jeanette_hair_7, jeanette_hair_8, jeanette_hair_9. А текстур с такими именами нет. Открываем соответствующие *.vmt’шники, смотрим: "$baseTexture" "models/character/npc/unique/Santa_Monica/Jeanette/Jeanette_hair_2". Только по имени материала этого не определишь.
Поэтому я написал скрипт, который я назвал SMD Materials Fix, который всю эту рутину сделает за нас. Скачайте его по ссылке справа и откройте в 3ds Max через пункт меню Scripting → Run Script (в более старых версиях MAXScript → Run Script).
Щёлкните по единственной кнопке. Сцена с моделью в этот момент должна быть открыта, разумеется.

Вам предложат выбрать папку с текстурами. Выберите папку с *.vmt- и *.tga-файлами, которые вы извлекали недавно и откройте любой файл оттуда. В скором времени (если в указанной папке все нужные файлы есть) вы увидите результат — материалы с текстурами (чтобы скрыть кости, щёлкните на сетке правой кнопкой мыши и выберите пункт Hide Unselected):

Повторите конвертацтию в *.tga текстур из других папок, указанных в *.qc, и вы получите полностью затекстуренную модель. Советую сохранить сцену.
К сожалению, зрачки персонажей не являются частью рефренсной сетки, они в игре создаются движком. Поэтому в 3ds Max вы их не увидите.
Загрузка анимаций
К данному момент у нас уже должна быть сцена в 3ds Max с затекстуренной и зариггенной моделью.
Осталось последнее — анимации.
Анимации тоже хранятся в *.smd-файлах, которые лежат в *.mdl-файлах модели. Но не всегда. В нашем случае они лежат в другом *.mdl-файле.
Давайте откроем jeanette.qc и посмотрим, что там:

Где-то в середине файла есть ссылка на npc_allsequences.mdl и путь к ней.
Эта *.mdl не содержит сеток, но зато содержит в себе все (почти) анимации для женских персонажей. В игре есть и аналогичный файл для мужских персонажей.
Декомпилируйте этот *.mdl-файл в набор *.qc и *.smd-файлов. Как это сделать, рассмотрено выше.
А там снова ссылки на *.mdl-файлы, находящиеся в этой же папке. Декомпилируем, к примеру, move_and_ranged.mdl и, наконец, увидим *.smd-файлы с анимациями. Их много, семсот с чем-то штук:

Ну а далее всё просто:
- Выберите в меню уже знакомый нам Wall Worm → Wall Worm Importers → SMD and QC Importer.
- Проследите, чтобы стояла галка Animated Model
- Откройте интересующий вас *.smd-файл с анимациею.

Например, я импортировал move_and_ranged_run_0.smd.
Выделите все объекты (нажатием клавиш Ctrl+A). На шкале анимации вы увидите, что ключи находятся в позициях с 72 до 90.

Нажмите на Time Configuration внизу справа и укажите Start Time т End Time 72 и 90 соответственно, затем нажмите OK.

Теперь ключи анимации находятся в нужных местах, и анимация работает.
Вы можете заметить, что юбка персонажа неправильно зариггена. Как вы помните, в самой игре её анимация рассчитывалась при помощи физики, а не ключевой анимацией. В остальном импорт успешен.
Надеюсь, вы дочитали до конца, и у вас всё получилось. Я специально выбрал очень сложный пример, чтобы рассмотреть все аспекты. Конечно, в игре есть и более простые модели, где всего одна текстура и нет анимации, там всё на порядок проще.
Приведу напоследок памятку порядка импорта моделей:
Резюме
Чтобы импортировать модели из Vampire: The Masquerade — Bloodlines в 3ds Max вам понадобятся:
- Копия игры Vampire: The Masquerade — Bloodlines
- Установленный на компьютере 3ds Max желательно более новой версии.
- Bloodlines SDK
- Скрипт SMD Materials Fix
- Wall Worm Model Tools, установленный на 3ds Max
Краткий порядок действий:
- Распакуйте *.vpk-архивы при наличии оных
- Декомпилируйте интересующие *.mdl а набор *.qc и *.smd
- При помощи Wall Worm SMD and QC Importer (галка Animated Model должна быть убрана) загрузите сетку из *.smd-файла в 3ds Max
- Выполните слияние вершин
- Конвертируйте необходимые текстуры *.tth и *.ttz в *.tga
- При помощи скрипта SMD Materials Fix примените текстуры к модели
- При помощи Wall Worm SMD and QC Importer (галка Animated Model должна быть включена) загрузите анимацию из *.smd-файлав 3ds Max
- Сместите ключи анимации по необходимости
Теперь вы знаете, как импортировать модели с текстурами и анимациями из Vampire: The Masquerade — Bloodlines в 3ds Max. Если у вас есть идеи, чем улучшить данную страницу, вы можете написать мне на email или в комментариях внизу.
You can leave a comment with "Facebook":
Не забывайте оставлять комментарии при помощи "ВКонтакте":