Difference between revisions of "Compiling a model:ru"

From Valve Developer Community
Jump to: navigation, search
(QC-команды)
(QC-команды)
Line 65: Line 65:
 
:{{tip|Более сложные модели используют вместо [[$body:ru|$body]] код <code>[[$model (QC):ru|$model]]</code>}}
 
:{{tip|Более сложные модели используют вместо [[$body:ru|$body]] код <code>[[$model (QC):ru|$model]]</code>}}
 
;<code>[[$staticprop:ru|$staticprop]]</code>
 
;<code>[[$staticprop:ru|$staticprop]]</code>
:Информирует studiomdl, что у модели нет движущихся частей, что дает возможность осуществить несколько важных оптимизаций. Команда необходима если вы собираетесь использовать модель с помощью [[prop_static]], но она не запретит использовать модель где-то еще (и в самом деле, большинство моделей на физике тоже используют $staticprop)
+
:Информирует studiomdl о том, что у модели нет движущихся частей; в результате можно осуществить некоторые весьма важные оптимизации. Если вы собираетесь использовать модель с помощью [[prop_static]], то эту команду использовать необходимо, - однако, она не запретит использовать модель где-то еще (на самом деле, большинство моделей на физике тоже используют $staticprop)
 
;<code>[[$surfaceprop:ru|$surfaceprop]]</code>
 
;<code>[[$surfaceprop:ru|$surfaceprop]]</code>
:Определяет, как поверхность реагирует на другие объекты. Также помогает определить вес модели (когда используется команда для его расчета).
+
:Определяет, как поверхность реагирует на другие объекты. Также помогает определить вес модели (когда используется команда для его расчёта).
 
:{{note|Такая же команда есть в [[material|материалах]]. Если у модели они не совпадут, то будет выбрана версия из QC. Не до конца ясно, зачем функциональность дублируется, и поверхность описывается как в материалах, так и в файле для импорта модели...}}
 
:{{note|Такая же команда есть в [[material|материалах]]. Если у модели они не совпадут, то будет выбрана версия из QC. Не до конца ясно, зачем функциональность дублируется, и поверхность описывается как в материалах, так и в файле для импорта модели...}}
 
;<code>[[$cdmaterials:ru|$cdmaterials]]</code>
 
;<code>[[$cdmaterials:ru|$cdmaterials]]</code>
Line 77: Line 77:
 
:{{tip|Если вы собираетесь анимировать модель столкновений, используйте <code>[[$collisionjoints:ru|$collisionjoints]]</code>.}}
 
:{{tip|Если вы собираетесь анимировать модель столкновений, используйте <code>[[$collisionjoints:ru|$collisionjoints]]</code>.}}
 
;<code>[[$concave:ru|$concave]]</code>
 
;<code>[[$concave:ru|$concave]]</code>
:Модель для столкновений должна быть [[Wikipedia:convex|выпуклой]], но можно создавать и [[Wikipedia:concave|невыпуклые]] формы из нескольких выпуклых. Команда $concave указывает, что именно это вам и нужно - иначе все collision-меши будут обернуты одной выпуклой оболочкой.
+
:Модель для столкновений должна быть [[wikipedia:ru:Выпуклое_тело|выпуклой]], но можно создавать и ''невыпуклые'' формы комбинируя несколько выпуклых. Команда $concave указывает, что именно это вам и нужно - в противном случае все collision-меши будут обернуты одной выпуклой оболочкой.
  
Приведенный образец описания можно использовать для своей модели (если не нужно анимаций). Так что вставьте имена своих SMD'шек и попробуйте импортировать модель.
+
Приведённый образец описания можно использовать для своей модели (если не нужно анимаций). Так что вставьте имена своих SMD'шек и попробуйте импортировать модель сами.
  
 
== Compiling more advanced models ==
 
== Compiling more advanced models ==

Revision as of 15:46, 2 November 2008

Другая вариация на тему, делалась на основе Compiling Model Basics: Compiling_Models:ru. Содержание, в общем и целом, не совпадает. Эта же статья пока не переведена


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

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

Template:Otherlang:ru Template:Otherlang:ru:en