Компиляция модели
В статье описано, как компилировать модели с помощью studiomdl для внутриигрового использования. Прежде чем начать, вам понадобятся какие-нибудь файлы SMD , которые вы и будете компилировать. Если у вас их еще нет, прочтите статью об Экспорте моделей .
Формат QC
Помимо файла в формате SMD с данными о модели, вам понадобится файл формата QC , который - в чем-то похоже на файл материала VMT - описывает как нужно интерпретировать данные из SMD-файла. При подготовке к компиляции вы потратите большую часть времени именно на него.
QC - это просто текстовый файл с расширением .qc
. Его можно создать где угодно и назвать как вам нравится. Лучше, однако, хранить свои данные организованно, и держать SMD и QC в одной папке, которую разумно будет назвать так же, как будущий файл модели.
Порядок компиляции
При настройке компиляции важнейшим шагом является выбор правильной переменной VPROJECT . Вот как это можно сделать:
- Глобально, указав свою игру/мод в выпадающем списке SDK launcher'а
- Только для программы studiomdl, запустив ее с параметром
-game "<полный путь к директории с вашим gameinfo.txt >"
Что касается работы с QC-файлами для моделей, то вам очень, правда - очень пригодится продвинутый текстовый редактор, который поддерживает выделение синтаксиса цветом и который сможет запускать studiomdl - без ручной работы с командной строкой или bat-файлами. На текущий момент существует два таких редактора:
Скачайте редактор и правила подсветки синтаксиса, настройте исполнение studiomdl - и все, можно приступать к работе!
Сложный способ
Если вы не хотите или не можете использовать ни один из редакторов (перечислены выше), то компилировать QC-файлы придется, перетаскивая и кидая их на studiomdl.exe. Программу можно найти в папке sourcesdk/bin/orangebox/bin/
(если нужно, замените orangebox/ на ep1/).
Легче это будет делать, если для автоматизации создать в каком-нибудь легко доступном месте на компьютере .cmd-файл. Это просто переименованный .txt с каким-нибудь таким текстом:
"%sourcesdk%/bin/orangebox/bin/studiomdl" %1 pause
Киньте на него ваш файл с описанием, как кидали бы на сам исполняемый файл (studiomdl.exe) - по своей сути этот .cmd нечто вроде ярлыка.
QC-команды
- Чтобы увидеть полный список документированных QC-команд, посмотрите Category:QC Commands .
Вот QC-файл для неанимированного статичного prop'а:
$modelname "props_sdk/myfirstmodel.mdl" $body mybody "myfirstmodel-ref.smd" $staticprop $surfaceprop combine_metal $cdmaterials "models/props_sdk" $sequence idle "myfirstmodel-idle.smd" loop fps 15 $collisionmodel "myfirstmodel-phys.smd" { $concave }
Ниже приведен краткий обзор каждой из команд. Чтобы просмотреть страницы с более подробной информацией, щелкните по именам команд. Here is a brief summary of what each of those commands does. For more detail, click on the names.
$modelname
- Определеяет имя и местоположение основного файла будущей модели - относительно папки
<имя мода>/models/
. При компиляции будет создано еще несколько файлов, и их имя будет образовано от указанного здесь значения. $body
- Указывает SMD, содержащий информацию о вершинах , UV-развертке , скелете и envelope'ах модели. Это необходимо, чтобы у модели было какое-то представление в движке.
- Имя ('mybody') дают из-за того, что у модели может быть несколько "тел", как например у метрокопа , у которого их два: одно с manhack'ом на плече, а другое без.
$staticprop
- Информирует studiomdl о том, что у модели нет движущихся частей; в результате можно осуществить некоторые весьма важные оптимизации. Если вы собираетесь использовать модель с помощью prop_static , то эту команду использовать необходимо, - однако, она не запретит использовать модель где-то еще (на самом деле, большинство моделей на физике тоже используют $staticprop)
$surfaceprop
- Определяет, как поверхность реагирует на другие объекты. Также помогает определить вес модели (когда используется команда для его расчёта).
- Примечание:Такая же команда есть в материалах . Если у модели они не совпадут, то будет выбрана версия из QC. Не до конца ясно, зачем функциональность дублируется, и поверхность описывается как в материалах, так и в файле для импорта модели...
$cdmaterials
- Директория, из которой studiomdl возьмет материалы для модели. Не забудьте, что имена материалов должны совпадать с теми, которые вы назначили в 3D-пакете при моделировании. Само же имя директории нужно указать относительно папки
<директория с модом>/materials/
. $sequence
- Несмотря на то, что эта модель используется с
$staticprop
и не анимируется, движку Source для правильной работы потребуется "пустая" idle-анимация. Такая анимация должна состоять из одного кадра, откуда следует, что свойствоfps
ни на что не будет влиять (но оно все равно будет при проигрывании). $collisionmodel
- Указывает SMD, который будет использоваться для рассчета столкновений в движке. Если collision-модели нет, то объекты будут пролетать модель насквозь (что в некоторых случаях и является желаемым результатом).
- Совет:Если вы собираетесь анимировать модель столкновений, используйте
$collisionjoints
. $concave
- Модель для столкновений должна быть выпуклой , но можно создавать и невыпуклые формы комбинируя несколько выпуклых. Команда $concave указывает, что именно это вам и нужно - в противном случае все collision-меши будут обернуты одной выпуклой оболочкой.
Приведённый образец описания можно использовать для своей модели (если не нужно анимаций). Так что вставьте имена своих SMD'шек и попробуйте импортировать модель сами.
Compiling more advanced models
- Для компиляции физических моделей используйте тег
prop_data
- Для компилчции моделей персонажей используйте Compiling a character model
- Для компиляции viewmodel используйте Compiling a viewmodel
- Для компиляции машин используйте Compiling a vehicle model
- Общая помошь по компилированию Category:QC Commands
Samples
Valve provide numerous sample models in the SDK for you to learn from, including several fully-articulated characters and players. They can be found at:
sourcesdk_content\cstrike\modelsrc
sourcesdk_content\hl2\modelsrc
sourcesdk_content\hl2mp\modelsrc
sourcesdk_content\generic\modelsrc
(a walking animation for Valve's default skeleton)
Common errors
- Costly collision model
- Duplicate weightlist pelvisonly
- Short conversion out of range
- WARNING: (4768124) : ERROR: 'EXCEPTION ACCESS VIOLATION' (assert: 1)
- If you receive "EXCEPTION_ACCESS_VIOLATION" without an error code, try compiling with HLMV running.
See also
- QC
- Category:QC Commands
- studiomdl
- Studiocompiler , a graphical interface for studiomdl
- GUIStudioMDL , another graphical interface
- Highlighting and Compiling QCs with ConTEXT
- Notepad++ VDF languages