Ru/Compiling Models: Difference between revisions
m (fix category) |
m (obsolete language category) |
||
(8 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{lang|Compiling a model}} | |||
{{mergeto|Compiling_a_model:ru}} | |||
__NOTOC__ | __NOTOC__ | ||
В этой статье объясняется как использовать инструмент Source SDK <code> | В этой статье объясняется как использовать инструмент Source SDK <code>{{L|Studiomdl|studiomdl.exe}}</code>, расположенный в папке <code>sourcesdk/bin</code>. Studiomdl нужен для компиляции исходных {{L|SMD|.SMD}}-файлов, экспортированных из пакета {{LCategory|Modeling|моделирования}} со скриптовым файлом {{L|Qc|.QC}} в конечный файл модели {{L|MDL|.MDL}}, который может использоваться движком. | ||
== Экспорт и компиляция моделей == | == Экспорт и компиляция моделей == | ||
Чтобы экспортировать модель из | Чтобы экспортировать модель из {{L|XSI}} и скомпилировать ее с помощью инструментов Source SDK, нужно: | ||
# Экспоровать файл .SMD в какую-нибудь папку внутри директории <code>modelsrc</code> SDK игры, для которой компилируете файл. | # Экспоровать файл .SMD в какую-нибудь папку внутри директории <code>modelsrc</code> SDK игры, для которой компилируете файл. | ||
#: Например, если компилируете модель для Counter-Strike Source, то в папку: | #: Например, если компилируете модель для Counter-Strike Source, то в папку: | ||
Line 10: | Line 12: | ||
#: или | #: или | ||
#: <code>C:\Program Files\Valve\Steam\SteamApps\username\sourcesdk_content\cstrike\modelsrc</code> | #: <code>C:\Program Files\Valve\Steam\SteamApps\username\sourcesdk_content\cstrike\modelsrc</code> | ||
#: Где | #: Где ''username'' - ваше логин в Steam. | ||
# Создать | # Создать {{L|Qc|.QC}}-файл там же, где лежит .SMD. Для примера можете посмотреть QC-файлы, которые уже находятся в директории <code>sourcesdk_content\cstrike\modelsrc</code>. | ||
# Убедитесь, что в '''Current Game''' на панели '''SDK Launcher''' стоит нужная игра (к примеру, Counter-Strike: Source). | # Убедитесь, что в '''Current Game''' на панели '''SDK Launcher''' стоит нужная игра (к примеру, Counter-Strike: Source). | ||
# Запустите <code>studiomdl.exe</code> на .QC-файле. Для этого откройте командную строку Windows и наберите: | # Запустите <code>studiomdl.exe</code> на .QC-файле. Для этого откройте командную строку Windows и наберите: | ||
Line 19: | Line 21: | ||
#: {{note| Такой способ позволяет упростить себе жизнь с помощью переменной "sourcesdk". Эта переменная среды создается при установке Source SDK.}} | #: {{note| Такой способ позволяет упростить себе жизнь с помощью переменной "sourcesdk". Эта переменная среды создается при установке Source SDK.}} | ||
# Как альтернативу вызову <code>studiomdl.exe</code> через окно запуска команд можно создать ярлык этой программы на рабочем столе. После этого для того чтобы скомпилировать модель .QC-файлы можно перетаскивать из окна Проводника прямо на ярлык. | # Как альтернативу вызову <code>studiomdl.exe</code> через окно запуска команд можно создать ярлык этой программы на рабочем столе. После этого для того чтобы скомпилировать модель .QC-файлы можно перетаскивать из окна Проводника прямо на ярлык. | ||
#: Откройте проводник Windows, зайдите в папку <code>..sourcesdk\bin</code>, щелкнете правой кнопкой мыши на <code>studiomdl.exe</code> и | #: Откройте проводник Windows, зайдите в папку <code>..sourcesdk\bin</code>, щелкнете правой кнопкой мыши на <code>studiomdl.exe</code> и выберите пункт <code>Send To.. Desktop (create shortcut)</code>. | ||
#: <br> | #: <br> | ||
#: {{note| | #: {{note| '''Недостатком метода с ярлыком на рабочем столе''' является сложность просмотра ошибок, которые выдает <code>studiomdl.exe</code> в процессе компиляции, так как окно компиляции закроется сразу же после ошибки. Если похоже, что модель корректно не компилируется, используйте способ вызова программы из командной строки, чтобы определить, выдает ли <code>studiomdl.exe</code> какие-то ошибки в процессе компиляции.}} | ||
# Если в файлах .QC и .SMD нет ошибок, то программа создаст .MDL-файл модели в папке, прописанной в ключе <code>$modelname</code> в файле .QC. | # Если в файлах .QC и .SMD нет ошибок, то программа создаст .MDL-файл модели в папке, прописанной в ключе <code>$modelname</code> в файле .QC. | ||
# Теперь можно запустить ''' | # Теперь можно запустить '''{{L|Half-Life Model Viewer|Model Viewer}}''' через '''SDK launcher''', чтобы открыть файл модели для просмотра. | ||
== Вставка моделей на уровни == | == Вставка моделей на уровни == | ||
Line 31: | Line 33: | ||
Чтобы поставить скомпилированную модель в Hammer'е: | Чтобы поставить скомпилированную модель в Hammer'е: | ||
# Откройте | # Откройте {{L|Hammer|Hammer Editor}} из SDK Launcher. | ||
# Добавьте энтити с помощью Entity Tool (<code>prop_static</code>, <code>prop_dynamic</code>, <code>prop_physics</code>, <code>prop_physics_multiplayer</code> или <code>generic_actor</code>, в зависимости от игры и типа модели). В свойствах энтити '''Object Properties''' или '''World Model''', зайдите в дерево модели, чтобы поместить модель. Информацию по использованию ''' | # Добавьте энтити с помощью Entity Tool (<code>prop_static</code>, <code>prop_dynamic</code>, <code>prop_physics</code>, <code>prop_physics_multiplayer</code> или <code>generic_actor</code>, в зависимости от игры и типа модели). В свойствах энтити '''Object Properties''' или '''World Model''', зайдите в дерево модели, чтобы поместить модель. Информацию по использованию '''{{L|Entity Tool}}''' смотрите в документации Hammer'а. | ||
== Примеры моделей == | == Примеры моделей == | ||
Line 43: | Line 45: | ||
== Ошибки компиляции образцов моделей == | == Ошибки компиляции образцов моделей == | ||
===Ошибка "Duplicate weightlist pelvisonly"=== | ===Ошибка "Duplicate weightlist pelvisonly"=== | ||
Если studiomdl высвечивает ошибку | Если studiomdl высвечивает ошибку '''duplicate weightlist pelvisonly''' при компиляции модели <code>male_06_sdk</code>, проблема может быть во включении файла <code>Male_Animations_sdk/WeaponsAnims_Shared_sdk.qci</code>. | ||
В нем есть строка <code>$weightlist pelvisonly</code>, идентичная строке во включенном файле <code>male_shared_XSI_sdk.qci</code>. | В нем есть строка <code>$weightlist pelvisonly</code>, идентичная строке во включенном файле <code>male_shared_XSI_sdk.qci</code>. | ||
Line 70: | Line 72: | ||
studiomdl.exe -fullcollide %1 | studiomdl.exe -fullcollide %1 | ||
@pause | @pause | ||
или же это можно сделать с помощью инструмента вроде | или же это можно сделать с помощью инструмента вроде {{L|GUIStudioMDL}} или {{L|Studiocompiler}}.<br> | ||
При использовании любого из этих способов на модели столкновений, которая при обычной компиляции была бы упрощена, программа выдаст: | При использовании любого из этих способов на модели столкновений, которая при обычной компиляции была бы упрощена, программа выдаст: | ||
WARNING: COSTLY COLLISION MODEL!!!! | WARNING: COSTLY COLLISION MODEL!!!! | ||
Line 98: | Line 100: | ||
== См. также == | == См. также == | ||
* | * {{L|Qc|.QC File Basics}} | ||
* | * {{L|Studiocompiler}} | ||
* | * {{L|GUIStudioMDL}} | ||
{{ | {{ACategory|Modeling}} | ||
Latest revision as of 03:42, 22 August 2024

В этой статье объясняется как использовать инструмент Source SDK studiomdl.exe
, расположенный в папке sourcesdk/bin
. Studiomdl нужен для компиляции исходных .SMD -файлов, экспортированных из пакета моделирования со скриптовым файлом .QC в конечный файл модели .MDL , который может использоваться движком.
Экспорт и компиляция моделей
Чтобы экспортировать модель из XSI и скомпилировать ее с помощью инструментов 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.
- Создать .QC -файл там же, где лежит .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
Примечание: Такой способ позволяет упростить себе жизнь с помощью переменной "sourcesdk". Эта переменная среды создается при установке Source SDK.
- Как альтернативу вызову
studiomdl.exe
через окно запуска команд можно создать ярлык этой программы на рабочем столе. После этого для того чтобы скомпилировать модель .QC-файлы можно перетаскивать из окна Проводника прямо на ярлык.- Откройте проводник Windows, зайдите в папку
..sourcesdk\bin
, щелкнете правой кнопкой мыши наstudiomdl.exe
и выберите пунктSend To.. Desktop (create shortcut)
. Примечание: Недостатком метода с ярлыком на рабочем столе является сложность просмотра ошибок, которые выдает
studiomdl.exe
в процессе компиляции, так как окно компиляции закроется сразу же после ошибки. Если похоже, что модель корректно не компилируется, используйте способ вызова программы из командной строки, чтобы определить, выдает лиstudiomdl.exe
какие-то ошибки в процессе компиляции.
- Откройте проводник Windows, зайдите в папку
- Если в файлах .QC и .SMD нет ошибок, то программа создаст .MDL-файл модели в папке, прописанной в ключе
$modelname
в файле .QC. - Теперь можно запустить Model Viewer через SDK launcher, чтобы открыть файл модели для просмотра.
Вставка моделей на уровни
Модель можно поместить на карту с помощью редактора уровней Hammer, чтобы увидеть ее в игре
Чтобы поставить скомпилированную модель в Hammer'е:
- Откройте Hammer Editor из SDK Launcher.
- Добавьте энтити с помощью Entity Tool (
prop_static
,prop_dynamic
,prop_physics
,prop_physics_multiplayer
илиgeneric_actor
, в зависимости от игры и типа модели). В свойствах энтити Object Properties или World Model, зайдите в дерево модели, чтобы поместить модель. Информацию по использованию Entity Tool смотрите в документации 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
или же это можно сделать с помощью инструмента вроде GUIStudioMDL или Studiocompiler .
При использовании любого из этих способов на модели столкновений, которая при обычной компиляции была бы упрощена, программа выдаст:
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 {