Ru/Compiling Models

__NOTOC__
В этой статье объясняется как использовать инструмент Source SDK , расположенный в папке sourcesdk/bin. Studiomdl нужен для компиляции исходных -файлов, экспортированных из пакета со скриптовым файлом в конечный файл модели , который может использоваться движком.
== Экспорт и компиляция моделей ==
Чтобы экспортировать модель из и скомпилировать ее с помощью инструментов Source SDK, нужно:
# Экспоровать файл .SMD в какую-нибудь папку внутри директории modelsrc SDK игры, для которой компилируете файл.
#: Например, если компилируете модель для Counter-Strike Source, то в папку:
#: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\cstrike\modelsrc
#: или
#: C:\Program Files\Valve\Steam\SteamApps\username\sourcesdk_content\cstrike\modelsrc
#: Где username - ваше логин в Steam.
# Создать -файл там же, где лежит .SMD. Для примера можете посмотреть QC-файлы, которые уже находятся в директории sourcesdk_content\cstrike\modelsrc.
# Убедитесь, что в Current Game на панели SDK Launcher стоит нужная игра (к примеру, Counter-Strike: Source).
# Запустите studiomdl.exe на .QC-файле. Для этого откройте командную строку Windows и наберите:
#: cd "%sourcesdk%"
#: bin\studiomdl -game <YourGameDir> ..\sourcesdk_content\cstrike\modelsrc\mymodel.qc
#: 
#: 
# Как альтернативу вызову studiomdl.exe через окно запуска команд можно создать ярлык этой программы на рабочем столе. После этого для того чтобы скомпилировать модель .QC-файлы можно перетаскивать из окна Проводника прямо на ярлык.
#: Откройте проводник Windows, зайдите в папку ..sourcesdk\bin, щелкнете правой кнопкой мыши на studiomdl.exe и выберите пункт Send To.. Desktop (create shortcut).
#: 
#: 
# Если в файлах .QC и .SMD нет ошибок, то программа создаст .MDL-файл модели в папке, прописанной в ключе $modelname в файле .QC.
# Теперь можно запустить через SDK launcher, чтобы открыть файл модели для просмотра.
== Вставка моделей на уровни ==
Модель можно поместить на карту с помощью редактора уровней Hammer, чтобы увидеть ее в игре
Чтобы поставить скомпилированную модель в Hammer'е:
# Откройте из SDK Launcher.
# Добавьте энтити с помощью Entity Tool (prop_static, prop_dynamic, prop_physics, prop_physics_multiplayer или generic_actor, в зависимости от игры и типа модели). В свойствах энтити Object Properties или World Model, зайдите в дерево модели, чтобы поместить модель. Информацию по использованию смотрите в документации Hammer'а.
== Примеры моделей ==
Существует ряд моделей для Counter-Strike: Source и Half-Life 2 в директории sourcesdk_content, которые вы можете использовать как образцы моделей. Они скомпилированы таким же способом, каким вы компилируете свои модели. Например, вы можете набрать эти команды в командной строке, чтобы скомпилировать образец держателя лампы:
 cd "%sourcesdk%"
 bin\studiomdl ..\sourcesdk_content\cstrike\modelsrc\lamp\it_lampholder1.qc
== Ошибки компиляции образцов моделей ==
===Ошибка "Duplicate weightlist pelvisonly"===
Если studiomdl высвечивает ошибку duplicate weightlist pelvisonly при компиляции модели male_06_sdk, проблема может быть во включении файла Male_Animations_sdk/WeaponsAnims_Shared_sdk.qci.
В нем есть строка $weightlist pelvisonly, идентичная строке во включенном файле male_shared_XSI_sdk.qci.
* В папке Male_Animations_sdk создайте копию файла WeaponsAnims_Shared_sdk.qci.
* Переименуйте копию в WeaponsAnims_Shared_sdk_X.qci (или дайте любое другое уникальное имя).
* Редактируйте файл WeaponsAnims_Shared_sdk_X.qci и закомментируйте строку $weightlist , вставив // в начале строки.
 //$weightlist pelvisonly ...
* Откройте для редактирования файл male_06_sdk.qc.
* Измените строку $include "../male_animations_sdk/WeaponAnims_shared_sdk.qci" на
 $include "../male_animations_sdk/WeaponAnims_shared_sdk_X.qci" //(или в соответствии с другим уникальным именем, которое вы дали раньше)
* Сохраните файл male_06_sdk.qc.
* Перекомпилируйте male_06_sdk.qc, чтобы определить, исчезла ли ошибка.
=== Ошибка"Costly collision model" ===
 По умолчанию studiomdl упрощает одной оболочкой модель для столкновений, состоящую более чем из 20 выпуклых частей (из соображений быстродействия).
 WARNING: COSTLY COLLISION MODEL!!!! (<xx> parts)
 Truncating model!!!!
 Model has 1 convex sub-parts
В некоторых примерах, однако, необходимо иметь более сложную или детализированную модель столкновений, который можно добиться использованием 20 отдельных кусочков. Чтобы отключить такое поведение программы, введите аргумент -fullcollide в studiomdl.exe при компиляции модели. Это можно сделать в командной строке так:
 studiomdl -fullcollide "path/to/model.qc"
а с помощью .bat-файла для перетаскивания -- так:
 @echo on
 cd "%sourcesdk%/bin"
 studiomdl.exe -fullcollide %1
 @pause
или же это можно сделать с помощью инструмента вроде или .
При использовании любого из этих способов на модели столкновений, которая при обычной компиляции была бы упрощена, программа выдаст:
 WARNING: COSTLY COLLISION MODEL!!!!
 Truncation DISABLED!!!!
 Model has <xx> convex sub-parts
 Collision model completed.
==="Short conversion out of range"===
Generating optimized mesh "c:\steam\steamapps\SourceMods\mod\models/your/model.sw.vtx":
ERROR: short conversion out of range XXXXX
ERROR: Aborted Processing on 'your/model.mdl'
Проблема в том, что studiomdl.exe пытается записать полоску (strip) треугольников более чем с 32767 номерами вершин. Это больше, чем поддержимает движок Source. Нужно быть в рамках ограничений движка, и вам понадобится уменьшить сложность этой части модели. 
Например, самый высокий LOD .smd для Dog'а занимает всего 1.72 мегабайта и содержит 17,433 вершины. Что дает немногим меньше 6000 полигонов. 10000 полигонов -- что-то вроде неформального максимума числа полигонов для движка Source, при котором, максимальное число вершин будет около 10000*3 (32767).
== Коды ошибок==
 * WARNING: (4768124) : ERROR: 'EXCEPTION_ACCESS_VIOLATION' (assert: 1)
Это происходит из-за того, что фигурная скобка у $shadowlod находится в той же строке что и сама команда. Исправьте:
 $shadowlod {
на
 $shadowlod
 {
== См. также ==
* 
* 
*