вернуться на beanet.ru вернуться к списку проектов вернуться на главную страницу сборника

Тема: Команды, используемые в файле QC копилка


Ключевые слова: компиляция модели параметры команды qc

См. также:
Список используемых понятий, сокращений и обозначений

перейти к общему списку

Примечание: это пополняемая «копилка» сведений (не является законченной статьей).

Замечание: текстура в Source входит в состав материала (включающего также свойства поверхности, шейдеры и пр.). Понятие текстуры корректно будет употреблять для обозначения рисунка материала, а не заменять ею понятие материала.


Содержание:



Базовые команды


$modelname "<путь к *.mdl-файлу относительно каталога /models>"
Задаёт будущее имя Source-модели, причём указанный путь (каталог) должен существовать. Наличие данной команды обязательно.

Ссылки: $modelname:ru

$body <имя> "<путь к *.smd-файлу референсной геометрии относительно файла QC>"
Включает в модель референсную геометрию (информацию о вершинах, используемых материалах, скелетной структуре модели – основу для остальных *.smd-файлов). Для отображения модели необходимо обязательное наличие хотя бы одной такой команды (или $model – см. далее).
<имя> обычно задаётся в виде <имя модели>_ref

Если модель включает несколько референсных геометрий (референсных сеток), используются body-группы (Body Groups).

Ссылки: Reference mesh, $body:ru

$model "<имя>" "<путь к *.smd-файлу референсной геометрии относительно файла QC>"
Включает в модель часть референсной геометрии и применяется только для сложных моделей (в остальных случаях, включая любые статические модели с $staticprop, используется $body). В частности, используется для моделей с лицевой анимацией.
<имя> – уникальный идентификатор.

Обратите внимание, что команда с аналогичным именем применяется в *.vmt-файле, но в ином смысле. Там она означает, что данный материал предназначен только для использования на модели (используется в виде $model 1). Таким образом, существуют две одноимённые команды, но для совершенно разных целей (в зависимости от контекста).

Ссылки: Reference mesh, $model (QC)




Назначение материалов (текстур и свойств поверхности) модели


$cdmaterials "<путь к каталогу 1>/" ["<путь к каталогу 2>/" и т.д.]
Указывает расположение каталога [каталогов], где находятся материалы для компилируемой модели, относительно каталога <путь установки мода>/materials.
Обратите внимание, что вложенные папки игнорируются, а имена файлов текстур определяются по соответствующим параметрам <имя> команд $body или $model.
Текстуры для моделей рекомендуется помещать в отдельную папку models (внутри каталога <путь установки мода>/materials).
Наличие данной команды обязательно.

Ссылки: $cdmaterials:ru

$surfaceprop <имя свойства поверхности>
Задаёт свойства всей поверхности модели, одним ключевым словом задавая сразу все важные детали: звук столкновения, эффект попадания пули, физические и другие свойства.
Возможные значения определены в файле surfaceproperties_manifest.txt в папке /scripts мода, а также в файлах, на которые там есть ссылки.
Аналогичная команда используется в *.vmt-файле материала (параметры те же). Т.к. она не связана с шейдерами, то может использоваться в описании любого материала. Обратите внимание, что приоритет свойства поверхности выше у файла QC (перед аналогичным у используемых в модели материалах).

Ссылки: $surfaceprop:ru
Ссылки (eng): Material surface properties

$jointsurfaceprop <имя кости> <имя свойства поверхности>
Задаёт свойство поверхности отдельной кости (bone) модели и её дочерних объектов.
Для создания блоков *.qc-файлов с корректным назначением свойств поверхности можно использовать Просмотрщик моделей (Model Viewer) для предварительно откомпилированной модели.

Ссылки (eng): $jointsurfaceprop

$renamematerial <текущий> <новый>
Позволяет использовать <новый> материал вместо заданного в *.smd-файле ссылочной геометрии <текущего> материала.

Ссылки (eng): $renamematerial

$texturegroup "<имя множества скинов>"
{
    { "<имя скина 0>" }
    { "<имя скина 1>" }
     …
}
Здесь <имя скина 0> – материал по умолчанию, <имя скина 1> и т.д. – альтернативные материалы. Параметр <имя множества скинов> задаётся произвольно (буквы и цифры без пробелов).
Если данная команда отсутствует, тогда имя *.vmt-файла текстуры для этой модели должно совпадать с именем текстуры, которая наложена UV-методом на модель в *.smd-файле ссылочной геометрии (т.е. фактически на исходной модели в 3D-редакторе).

Задаёт набор заменяемых материалов, чтобы можно было использовать несколько «скинов» модели (в Просмотрщике моделей появляется список skin 0, skin 1 и т.д.). Типичный пример – модель двери имеет несколько «скинов», определяющих ее окраску.
Подразумевается, что все альтернативные текстуры расположены на модели одинаковым образом (как и текстура по умолчанию).

Возможен расширенный вариант команды:
$texturegroup "<имя множества скинов>"
{
	{ "<скин_0_материал_1>" "<скин_0_материал_2>" }
	{ "<скин_1_материал_1>" "<скин_1_материал_2>" }
            …
}
Здесь каждая пара <скин_M_материал_N> работает аналогично команде $renamematerial.

Ссылки (eng): $texturegroup




Определение анимаций


$sequence <имя анимации> <путь к *.smd-файлу скелетной анимации относительно файла QC> [<стандартные опции>]
Определяет скелетную анимацию. Можно задавать как простую одиночную анимацию, так и расширенную анимацию с использованием дополнительных возможностей скелетной анимации в Source.

У любой модели, даже у статической, должна быть хотя бы одна анимация (обычно это idle). На самом деле, создавать анимацию для каждой модели необязательно: просто сделайте экспорт «пустой» анимации (не анимируя модель) – этого достаточно для формально задаваемой $sequence.

Возможные <стандартные опции>:


loop
циклическое повторение.
hidden
не отображать в списке анимаций (если используется только в составе другой анимации).
fps <число с п.т.>
переопределяет число кадров анимации в секунду.
<список осей координат через пробел>
убирает движение корневой кости анимации вдоль соответствующих осей (X, Y или Z). Если перед названием оси добавить букву L (LX, LY или LZ), первую половину анимации движение выполняется, затем следует возврат в исходную позицию. Это удобно, если анимация модели была сделана с ее перемещением в пространстве (так проще); однако центр любой исходной модели для сборки *.mdl-файла должен всегда оставаться на месте. Фактическое перемещение модели в пространстве необходимо определять через команду $animation (см. далее).
Например, пусть сделана анимация человека, идущего по прямой. При переносе модели в Source перемещение по прямой убирается, и человек будет «шагать на месте». Но если в конечной анимации человек должен всё же именно пройти по прямой, в файл QC добавляется команда $animation с соответствующими параметрами.
activity <имя активности> <вес (число с п.т.)>
ставит активность в соответствие анимации. <Имя активности> должно распознаваться соответствующим кодом данного NPC. Возможно назначение нескольких анимаций для одной активности, при этом <вес> определяет, насколько часто будет использоваться данная анимация (по сравнению с остальными для указанной активности). Если активности соответствует только одна анимация, <вес> задается равным 1 (единица).
Допустимо опускать слово activity в синтаксисе команды, если <имя активности> определено в виде ACT_*. Таким образом, синтаксис <вес (число с п.т.)> выполняет ту же самую команду (только неявно).
autoplay
определяет безусловное выполнение анимации, независимо от остальных. Удобно для задания анимации дыхания и других подобных движений.
Если таких анимаций несколько, они наслаиваются в том же порядке, в котором они определены в файле QC.

Замечание: не рекомендуется задавать эту команду для анимаций, которые также проигрываются нормальным образом (по вызову из скрипта или кода NPC). В противном случае данная анимация будет проигрываться дважды, либо с нарушением движений NPC.





Статьи (рус):
Статьи (eng):

перейти к общему списку

Номер статьи: 33

Сборник полезной информации по созданию модификаций на движке Valve Source Engine (игры Half-Life 2, Episode One, Episode Two)