Difference between revisions of "Compiling a model:ru"

From Valve Developer Community
Jump to: navigation, search
(Compile environment: - translated)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{otherlang2
 +
|en=Compiling_a_model
 +
|fr=Compiling_a_model:fr
 +
|zh-cn=Compiling_a_model:zh-cn
 +
}}
 
{{template:toc-right}}
 
{{template:toc-right}}
 
<div style="text-align:center;font-size:1.25em;margin:1em; border:solid 1px black;">'''Другая вариация на тему, делалась на основе Compiling Model Basics: [[Compiling_Models:ru]]. Содержание, в общем и целом, не совпадает. Эта же статья пока не переведена'''</div>
 
<div style="text-align:center;font-size:1.25em;margin:1em; border:solid 1px black;">'''Другая вариация на тему, делалась на основе Compiling Model Basics: [[Compiling_Models:ru]]. Содержание, в общем и целом, не совпадает. Эта же статья пока не переведена'''</div>
Line 38: Line 43:
 
Киньте на него ваш файл с описанием, как кидали бы на сам исполняемый файл (studiomdl.exe) - по своей сути этот .cmd нечто вроде ярлыка.
 
Киньте на него ваш файл с описанием, как кидали бы на сам исполняемый файл (studiomdl.exe) - по своей сути этот .cmd нечто вроде ярлыка.
  
== QC commands ==
+
== QC-команды ==
  
:'''''For a list of all documented QC commands''', see [[:Category:QC Commands]].''
+
:'''''Чтобы увидеть полный список документированных QC-команд''', посмотрите [[:Category:QC Commands]].''
  
Here is a QC file for a non-animated, static prop:
+
Вот QC-файл для неанимированного статичного prop:
  
 
  [[$modelname]] "props_sdk/myfirstmodel.mdl"
 
  [[$modelname]] "props_sdk/myfirstmodel.mdl"
Line 54: Line 59:
 
  [[$collisionmodel]] "myfirstmodel-phys.smd" { [[$concave]] }
 
  [[$collisionmodel]] "myfirstmodel-phys.smd" { [[$concave]] }
  
{{tip|The default location for SMDs is the same folder as the QC file. You can specify relative or absolute paths with any command if something is stored in a different folder.}}
+
{{tip|Используемый по умолчанию путь для файлов SMD совпадает с расположением QC. Если что-либо находится в другой папке, вы в любой команде можете указать относительные, или же явно прописанные пути.}}
  
Here is a brief summary of what each of those commands does. For more detail, click on the names.
+
Ниже приведен краткий обзор каждой из команд. Чтобы просмотреть страницы с более подробной информацией, щелкните по именам команд. Here is a brief summary of what each of those commands does. For more detail, click on the names.
  
;<code>[[$modelname]]</code>
+
;<code>[[$modelname:ru|$modelname]]</code>
:Defines the name and location of the  model's core output file relative to <code><mod folder>/models/</code>. Several other files will be created as well, with variations of this value as their name.
+
:Определеяет имя и местоположение основного файла будущей модели - относительно папки <code><имя мода>/models/</code>. При компиляции будет создано еще несколько файлов, и их имя будет образовано от указанного здесь значения.
;<code>[[$body]]</code>
+
;<code>[[$body:ru|$body]]</code>
:Defines the SMD that contains the [[vertex]], [[UV map]], [[skeleton]] and [[envelope]] data for the model. Without this, your model will have no physical appearance.
+
:Указывает SMD, содержащий информацию о [[vertex|вершинах]], [[UV map|UV-развертке]], [[skeleton|скелете]] и [[envelope|envelope'ах]] модели. Это необходимо, чтобы у модели было какое-то представление в движке.
:A name ('mybody') is given because it is possible for a model to have several bodies - like the [[npc_metropolice|metrocop]], who has one with a [[npc_manhack|manhack]] attached and one without.
+
:Имя ('mybody') дают из-за того, что у модели может быть несколько "тел", как например у [[npc_metropolice|метрокопа]], у которого их два: одно с [[npc_manhack|manhack'ом]] на плече, а другое без.
:{{tip|More complex models use <code>[[$model (QC)|$model]]</code> instead of $body.}}
+
:{{tip|Более сложные модели используют вместо [[$body:ru|$body]] код <code>[[$model (QC):ru|$model]]</code>}}
;<code>[[$staticprop]]</code>
+
;<code>[[$staticprop:ru|$staticprop]]</code>
:Tells studiomdl that the model has no moving parts, allowing it to perform several important optimisations. It is required if the model is to be used with [[prop_static]], but does not prevent it from being used elsewhere! (Indeed, most models that are to be physically-simulated use the command as well.)
+
:Информирует studiomdl о том, что у модели нет движущихся частей; в результате можно осуществить некоторые весьма важные оптимизации. Если вы собираетесь использовать модель с помощью [[prop_static]], то эту команду использовать необходимо, - однако, она не запретит использовать модель где-то еще (на самом деле, большинство моделей на физике тоже используют $staticprop)
;<code>[[$surfaceprop]]</code>
+
;<code>[[$surfaceprop:ru|$surfaceprop]]</code>
:How the object's surface reacts to other entities in the world. Also helps define the weight of the object, if the QC command to calculate it is used.
+
:Определяет, как поверхность реагирует на другие объекты. Также помогает определить вес модели (когда используется команда для его расчёта).
:{{note|An identical command is used in [[material]]s. Should they clash on a model, the QC version is chosen. It isn't clear why this functionality is duplicated.}}
+
:{{note|Такая же команда есть в [[material|материалах]]. Если у модели они не совпадут, то будет выбрана версия из QC. Не до конца ясно, зачем функциональность дублируется, и поверхность описывается как в материалах, так и в файле для импорта модели...}}
;<code>[[$cdmaterials]]</code>
+
;<code>[[$cdmaterials:ru|$cdmaterials]]</code>
:The folder to load the model's material(s) from. Remember that the materials must be the same name as the ones you applied in your modelling package. The value is relative to <code><mod folder>/materials/</code>.
+
:Директория, из которой studiomdl возьмет материалы для модели. Не забудьте, что имена материалов должны совпадать с теми, которые вы назначили в 3D-пакете при моделировании. Само же имя директории нужно указать относительно папки <code><директория с модом>/materials/</code>.
;<code>[[$sequence]]</code>
+
;<code>[[$sequence:ru|$sequence]]</code>
:Even though this model is <code>$staticprop</code> and therefore not animated, Source needs an empty 'idle' animation to correctly handle it. If the animation is truly idle it will only have one frame, rendering the <code>fps</code> property meaningless (but it's included anyway in demonstration).
+
:Несмотря на то, что эта модель используется с <code>$staticprop</code> и не анимируется, движку Source для правильной работы потребуется "пустая" idle-анимация. Такая анимация должна состоять из одного кадра, откуда следует, что свойство <code>fps</code> ни на что не будет влиять (но оно все равно будет при проигрывании).
;<code>[[$collisionmodel]]</code>
+
;<code>[[$collisionmodel:ru|$collisionmodel]]</code>
:Defines the SMD that will be used to calculate [[physics]] collisions by the engine. Without a collision model, physical objects will simply fly through the model (which in some cases may be what you want).
+
:Указывает SMD, который будет использоваться для рассчета [[physics|столкновений]] в движке. Если collision-модели нет, то объекты будут пролетать модель насквозь (что в некоторых случаях и является желаемым результатом).
:{{tip|If your collision model needs to be animated, use <code>[[$collisionjoints]]</code> instead.}}
+
:{{tip|Если вы собираетесь анимировать модель столкновений, используйте <code>[[$collisionjoints:ru|$collisionjoints]]</code>.}}
;<code>[[$concave]]</code>
+
;<code>[[$concave:ru|$concave]]</code>
:A collision model must be [[Wikipedia:convex|convex]], but you can create [[Wikipedia:concave|concave]] shapes by combining more than one of them into the same model. This command tells studiomdl that this is what you intend - without it, all of your collision SMD's meshes will instead be merged into one shape that wraps them all around.
+
:Модель для столкновений должна быть [[wikipedia:ru:Выпуклое_тело|выпуклой]], но можно создавать и ''невыпуклые'' формы комбинируя несколько выпуклых. Команда $concave указывает, что именно это вам и нужно - в противном случае все collision-меши будут обернуты одной выпуклой оболочкой.
  
You will be able to use this sample to compile your own model (minus any animations), so swap in your own SMDs and see what happens.
+
Приведённый образец описания можно использовать для своей модели (если не нужно анимаций). Так что вставьте имена своих SMD'шек и попробуйте импортировать модель сами.
  
 
== Compiling more advanced models ==
 
== Compiling more advanced models ==
  
*For physically-simulated objects, see '''<code>[[Prop Data|prop_data]]</code>'''
+
*Для компиляции физических моделей используйте тег '''<code>[[Prop Data|prop_data]]</code>'''
*For characters or player models, see '''[[Compiling a character model]]'''
+
*Для компилчции моделей персонажей используйте '''[[Compiling a character model]]'''
*For [[viewmodel]]s, see '''[[Compiling a viewmodel]]'''
+
*Для компиляции [[viewmodel]] используйте '''[[Compiling a viewmodel]]'''
*For vehicles, see '''[[Compiling a vehicle model]]'''
+
*Для компиляции машин используйте '''[[Compiling a vehicle model]]'''
*For general help with compiling models, see '''[[:Category:QC Commands]]'''
+
*Общая помошь по компилированию '''[[:Category:QC Commands]]'''
  
 
== Samples ==
 
== Samples ==
Line 115: Line 120:
 
* [[Notepadpp VDF languages|Notepad++ VDF languages]]
 
* [[Notepadpp VDF languages|Notepad++ VDF languages]]
  
{{otherlang:ru}}
+
[[Category:Modeling:ru]]
{{otherlang:ru:en|Compiling_a_Model}}
+
[[Category:Tutorials:ru]]
 
 
[[Category:Modeling]]
 
[[Category:Tutorials]]
 

Latest revision as of 10:48, 27 May 2018

English Français 简体中文
Другая вариация на тему, делалась на основе 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