Компиляция модели

From Valve Developer Community
< Ru
Revision as of 02:44, 5 July 2024 by Nesciuse (talk | contribs) (- changed links to lang suffix redirect pages to the redirected link)
Jump to navigation Jump to search
English (en)Français (fr)한국어 (ko)Русский (ru)中文 (zh)Translate (Translate)
Другая вариация на тему, делалась на основе Compiling Model Basics: Compiling_Models:ru. Содержание, в общем и целом, не совпадает. Эта же статья пока не переведена

В статье описано, как компилировать модели с помощью studiomdl для внутриигрового использования. Прежде чем начать, вам понадобятся какие-нибудь файлы SMD, которые вы и будете компилировать. Если у вас их еще нет, прочтите статью об Экспорте моделей.

Tip.pngСовет:Слово "studio" в названии отсылает нас к временам создания Half-Life 1, когда для создания моделей Valve использовала пакет 3D Studio Max.

Формат QC

Помимо файла в формате SMD с данными о модели, вам понадобится файл формата QC, который - в чем-то похоже на файл материала VMT - описывает как нужно интерпретировать данные из SMD-файла. При подготовке к компиляции вы потратите большую часть времени именно на него.

QC - это просто текстовый файл с расширением .qc. Его можно создать где угодно и назвать как вам нравится. Лучше, однако, хранить свои данные организованно, и держать SMD и QC в одной папке, которую разумно будет назвать так же, как будущий файл модели.

Порядок компиляции

При настройке компиляции важнейшим шагом является выбор правильной переменной VPROJECT. Вот как это можно сделать:

  1. Глобально, указав свою игру/мод в выпадающем списке SDK launcher'а
  2. Только для программы 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 }
Tip.pngСовет:Используемый по умолчанию путь для файлов SMD совпадает с расположением QC. Если что-либо находится в другой папке, вы в любой команде можете указать относительные, или же явно прописанные пути.

Ниже приведен краткий обзор каждой из команд. Чтобы просмотреть страницы с более подробной информацией, щелкните по именам команд. 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'ом на плече, а другое без.
Tip.pngСовет:Более сложные модели используют вместо $body код $model
$staticprop
Информирует studiomdl о том, что у модели нет движущихся частей; в результате можно осуществить некоторые весьма важные оптимизации. Если вы собираетесь использовать модель с помощью prop_static, то эту команду использовать необходимо, - однако, она не запретит использовать модель где-то еще (на самом деле, большинство моделей на физике тоже используют $staticprop)
$surfaceprop
Определяет, как поверхность реагирует на другие объекты. Также помогает определить вес модели (когда используется команда для его расчёта).
Note.pngПримечание:Такая же команда есть в материалах. Если у модели они не совпадут, то будет выбрана версия из QC. Не до конца ясно, зачем функциональность дублируется, и поверхность описывается как в материалах, так и в файле для импорта модели...
$cdmaterials
Директория, из которой studiomdl возьмет материалы для модели. Не забудьте, что имена материалов должны совпадать с теми, которые вы назначили в 3D-пакете при моделировании. Само же имя директории нужно указать относительно папки <директория с модом>/materials/.
$sequence
Несмотря на то, что эта модель используется с $staticprop и не анимируется, движку Source для правильной работы потребуется "пустая" idle-анимация. Такая анимация должна состоять из одного кадра, откуда следует, что свойство fps ни на что не будет влиять (но оно все равно будет при проигрывании).
$collisionmodel
Указывает SMD, который будет использоваться для рассчета столкновений в движке. Если collision-модели нет, то объекты будут пролетать модель насквозь (что в некоторых случаях и является желаемым результатом).
Tip.pngСовет:Если вы собираетесь анимировать модель столкновений, используйте $collisionjoints.
$concave
Модель для столкновений должна быть выпуклой, но можно создавать и невыпуклые формы комбинируя несколько выпуклых. Команда $concave указывает, что именно это вам и нужно - в противном случае все collision-меши будут обернуты одной выпуклой оболочкой.

Приведённый образец описания можно использовать для своей модели (если не нужно анимаций). Так что вставьте имена своих SMD'шек и попробуйте импортировать модель сами.

Compiling more advanced models

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

See also