# Создание иерархии элементов модели

## Базовая кость модели

Кость `basis` — это главная кость в иерархии любой модели техники. Она представляет собой хэлпер dummy, свойства которого содержат важную информацию о модели, включая:

* тип модели;
* путь экспорта модели в игру;
* вид и длительность основных анимаций;
* скорость вращения и размер колес (если модель содержит колеса одинакового размера, иначе, размер колес задается непосредственно в костях колес )
* параметр инверсной кинематики `IKType=revolute` c лимитами на поворот (если для модели доступна возможность вращения корпусом)

![Пример свойств кости basis](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FC916L8R8iAOHPWZ9YOOP%2FExample%20of%20Object%20Properties%20for%20the%20basis%20bone.png?alt=media\&token=48f3cef0-a5f9-4ecd-ac5a-9f29524f379b)

В иерархии элементов модели все кости основных элементов модели привязываются к кости `basis`, а все вспомогательные кости модели привязываются к костям основных элементов.

**Правила расположения и ориентации кости basis**

* Кость `basis` устанавливается в точке с координатами `X=0`, `Y=0`, `Z=0`, что обеспечивает правильное позиционирование модели в игровом пространстве.&#x20;
* В окне проекции **"Front"** модель отображается с правого борта, что следует учитывать при ее настройке.&#x20;
* Направление вектора движения кости `basis`, а следовательно, и всей модели, ориентировано по оси **X**.&#x20;

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FVM9k3UofYuBMb3h2jXVC%2FBasis%20bone.png?alt=media&#x26;token=aa4e447d-665b-4d01-98dd-ea0ecd7cc0e8" alt=""><figcaption><p>Иллюстрация ориентации кости basis в окне проекции Front</p></figcaption></figure>

Правильная ориентация кости `basis` важна для:&#x20;

* корректного позиционирования и движения модели в игре;
* отображения спрайта под выделенной моделью.

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2F3Tfw4dQpm9zAG5suLvKu%2Fselectioncircle.PNG?alt=media&#x26;token=ac3b8d22-4965-4034-8892-0cc05e90096c" alt=""><figcaption><p>Иллюстрация отображения спрайта выбора под юнитом, находящимся в управлении</p></figcaption></figure>

## Видимые кости модели техники

{% hint style="info" %}
**Видимые кости модели** - [**основные**](#osnovnye-kosti) и [**второстепенные**](#vtorostepennye-kosti) кости иерархии элементов модели, содержащие меш **компонентов** модели.
{% endhint %}

### Основные кости

{% hint style="info" %}
**Основные кости** представляют собой **родительские кости** в иерархии элементов модели, формирующие основную часть видимого меша Компонентов техники.
{% endhint %}

К основным костям относятся:

* `body`: основная кость Компонента [Корпус](sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/korpus)
* `turret`: основная кость Компонента [Башня](sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/bashnya)
* `cabin`: основная кость Компонента [Кабина](../osobennosti-nastroiki-modelei-kolesnoi-tekhniki#ierarkhiya-kostei-kabiny)
* `gun_rot`: кость механизма вертикальной наводки орудия
* `gun`: основная кость Компонента [Орудие](sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/orudie)
* `engine`: основная кость Компонента [Двигатель](sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/dvigatel)
* `track` и `wheel`: кости [трансмиссии](sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/transmissiya)

**Схема иерархии основных костей**

* `basis`
  * `body`
    * `engine`
    * `cabin`
    * tracks\weels
    * `turret`
      * `gun_rot`
        * `gun`

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FaiXLQ5tJdPe3T6hf3iiO%2F%D0%A1%D1%85%D0%B5%D0%BC%D0%B0%20%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D1%8B%D1%85%20%D0%BA%D0%BE%D1%81%D1%82%D0%B5%D0%B8%CC%86%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8%20%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B8.png?alt=media&#x26;token=db83b119-5e22-4eb9-9274-6acc38d3c439" alt=""><figcaption><p>Иллюстрация схемы привязки элементов техники</p></figcaption></figure>

### Второстепенные кости

{% hint style="info" %}
**Второстепенные кости** включают элементы меша компонентов техники и чаще всего связаны с деталями модели.&#x20;
{% endhint %}

К второстепенным костям относятся:

* `detail` \[визуальные детали]
* `shield` \[дополнительные листы бронирования]
* `enumerator` \[номер боевой машины]
* `cover`/`door` \[люки и двери]
* кости подвески

**Второстепенные кости** обычно линкуются к **основным костям**, визуальной частью которых они являются.&#x20;

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FaC6iPBpzzGZDD1Gak2YY%2F%D0%92%D1%82%D0%BE%D1%80%D0%BE%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D1%81%D1%82%D0%B8.png?alt=media&#x26;token=c8aa08ae-7fe0-4fb7-88f8-7b0b4fdddba5" alt=""><figcaption><p>Пример второстепенных костей для кости Корпус</p></figcaption></figure>

### Свойства костей

Свойства костей прописываются в окне **Object Properties:**

<table data-header-hidden><thead><tr><th width="280">Параметр</th><th>Описание</th></tr></thead><tbody><tr><td><code>poly</code></td><td>Определяет видимость кости. <br>Если в свойствах кости параметр <code>poly</code> отсутствует, кость становится невидимой.</td></tr><tr><td><code>ID=&#x3C;значение></code></td><td>Идентификатор компонента техники.<br>Значение параметра ID позволяет идентифицировать кость, как Компонент или часть Компонента техники. </td></tr><tr><td><code>Animation=&#x3C;имя></code></td><td>Список анимаций, если предусмотрены.</td></tr><tr><td><code>IKType=revolute</code><br><code>IKType=socket</code><br><code>IKSpeed=&#x3C;значение></code><br><code>IKLimit=&#x3C;значение></code></td><td>Параметры инверсной кинематики.<br>Позволяют кости работать по законам инверсной кинематики, устанавливают скорость и лимиты поворота кости по ИК.</td></tr></tbody></table>

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2Fm2xrng9fD4aqwi2McoEv%2Fmodel%20component.png?alt=media&#x26;token=2bb0d555-52ac-46c2-8476-65a157ea78cb" alt=""><figcaption><p>Иллюстрация свойств для кости turret (основной кости компонента "Башня")</p></figcaption></figure>

### Значения ID для Компонентов техники

<table data-header-hidden><thead><tr><th width="233">Значение id</th><th>Описание</th></tr></thead><tbody><tr><td><code>body</code></td><td>Корпус</td></tr><tr><td><code>engine</code></td><td>Двигатель</td></tr><tr><td><code>cabin</code></td><td>Кабина машины</td></tr><tr><td><code>turret</code></td><td>Башня</td></tr><tr><td><code>gun</code></td><td>Орудие</td></tr><tr><td><code>trackleft</code><br><code>trackright</code></td><td>Левый и правый траки</td></tr><tr><td><code>wheelright&#x3C;N></code><br><code>wheelleft&#x3C;N></code></td><td>Правые и левые колеса (<code>&#x3C;N></code> - порядковый номер колеса)</td></tr></tbody></table>

Значение идентификатора (`ID`) у **второстепенных костей**, как правило, совпадает со значением идентификатора **основных костей**, визуальной частью которых они являются, и к которым они привязаны по иерархии.

{% hint style="warning" %}
Несмотря на совпадение названий, **кость** не является эквивалентом **компонента техники**. \
**Компонент техники** может состоять из нескольких костей, имеющих разные названия, но при этом одинаковое значение параметра `ID`. Совокупно кости с одинаковым `ID` формируют в игре определенный **компонент техники**.\
**Примеры:**

* кости `turret`, `cover` и `detail`, в свойствах которых прописано `ID=turret` формируют в игре компонент **Башня**.&#x20;
* кости `body`, `cover` и `detail`, в свойствах которых прописано `ID=body` формируют в игре компонент **Корпус**.&#x20;
{% endhint %}

### Виды анимаций для основных костей Компонентов

* `break` — анимация поломки Компонента;
* `repair` — анимация ремонта х-модели Компонента.

***

Подробнее про настройку иерархии элементов видимых костей можно узнать из статей:

<table data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><a href="sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/korpus">korpus</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2Fe4zhCDNn4bxGalemJUmY%2FBody.png?alt=media&#x26;token=cb1b2749-dda0-40f2-aa2c-9984921b1bdb">Body.png</a></td></tr><tr><td><a href="sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/bashnya">bashnya</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2Fd4Z7A7mcU5bhP73OLmdf%2FTurret.png?alt=media&#x26;token=d33396c9-f450-43c0-9517-d44ceba9273e">Turret.png</a></td></tr><tr><td><a href="sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/orudie">orudie</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FJorcOA2z2HWZkVTAMq1z%2FGun.png?alt=media&#x26;token=576044df-e624-468d-92c2-1f2eeca3de77">Gun.png</a></td></tr><tr><td><a href="sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/dvigatel">dvigatel</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FaoTgML43Q8PAhS9SwfZF%2FEngine.png?alt=media&#x26;token=b2d60289-cf7c-4277-a9ad-5f04323d39b0">Engine.png</a></td></tr><tr><td><a href="sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/vtorostepennye-kosti">vtorostepennye-kosti</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FaC6iPBpzzGZDD1Gak2YY%2F%D0%92%D1%82%D0%BE%D1%80%D0%BE%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D1%81%D1%82%D0%B8.png?alt=media&#x26;token=c8aa08ae-7fe0-4fb7-88f8-7b0b4fdddba5">Второстепенные кости.png</a></td></tr><tr><td><a href="sozdanie-ierarkhii-vspomogatelnykh-kostei-i-volyumov-modeli/transmissiya">transmissiya</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FSAKuonGzJrYT2dlIv81v%2FTrack%20and%20suspension%20wheels.png?alt=media&#x26;token=7fcf2415-dbc2-4418-a95d-3f24354927e5">Track and suspension wheels.png</a></td></tr></tbody></table>

***

## Вспомогательные кости

{% hint style="info" %}
**Вспомогательные кости** — это преимущественно невидимые кости-хелперы, необходимые для обеспечения правильной работы визуальных, функциональных и анимационных аспектов модели.
{% endhint %}

### Кости зрения

* `visor1` - невидимый хелпер, кость обзора из башни, линкуется к кости `turret`
* `visor2` -  невидимый хелпер, служащий «глазами» танка по вектору движения, линкуется к кости `body`, в место смотровой щели на лобовой броне.

Для правильной работы зрения юнита, кости типа visor должны быть ориентированы по оси X.&#x20;

### Кости для спецэффектов

Для реализации спецэффектов создаются кости-эффекторы. \
При позиционировании костей стоит учитывать, что проигрывание спецэффектов в игре происходит по оси **X** пивота кости-эффектора.

<table><thead><tr><th width="235">Название эффектора</th><th>Назначение</th></tr></thead><tbody><tr><td><code>fxfire1</code></td><td>Эффект горения двигателя</td></tr><tr><td><code>fxfire2</code></td><td>Эффект горения корпуса</td></tr><tr><td><code>fxfire3</code></td><td>Эффект горения башни</td></tr><tr><td><code>fxshot</code></td><td>Пыль при выстреле танка</td></tr><tr><td><code>fxsmoke</code></td><td>Эффекты выхлопных труб.<br>Если костей несколько, то в название добавляется порядковый номер: <code>fxsmoke1</code>, <code>fxsmoke2</code>,..</td></tr><tr><td><code>fxstop</code></td><td>Стоп-сигналы.<br>Если костей несколько, то в название добавляется порядковый номер: <code>fxstop1</code>, <code>fxstop2</code>,..</td></tr><tr><td><code>headlight</code></td><td>Свечение фар.<br>Если костей несколько, то в название добавляется индексы сторон (L и R)</td></tr><tr><td><code>fxlight</code></td><td>Дополнительные кости для эффектов свечения фар.<br>Если костей несколько, то в название добавляется добавляется порядковый номер, причем, первая кость  не содержит в названии порядковый номер.</td></tr><tr><td><code>fxtrace</code></td><td>Пыль и грязь от гусениц или колес.<br>Если костей несколько, то в название добавляется порядковый номер и индексы сторон (L и R)</td></tr><tr><td><code>foresight</code></td><td>Эффекты выстрелов орудий и пулеметов.<br>Если костей несколько, то в название добавляется порядковый номер</td></tr></tbody></table>

### Места для старта анимаций посадки экипажа

Для корректного воспроизведения анимаций посадки экипажа в юнит техники используются специальные кости типа `emit`. Эти кости определяют точки старта анимаций, поэтому их  позиционирование в пространстве важно.

<table><thead><tr><th width="185">Название</th><th>Описание</th></tr></thead><tbody><tr><td><code>emit0</code>, <code>emit1</code>, <code>emit2</code></td><td>Основные кости, указывающие точки старта проигрывания анимаций посадки экипажа непосредственно в танк. <br>Кости <code>emit1</code>, <code>emit2</code> располагаются по обе стороны модели напротив башки.<br>Кость <code>emit0</code> выставляется опционально, если в модели предусмотрен отдельно открывающийся люк для механика водителя.</td></tr><tr><td><code>emit3</code>, <code>emit4</code>, <code>emit5</code> и далее</td><td>Кости, определяющие точки в пространстве рядом с танком, указывающие места для посадки солдат-пассажиров на броню танка.</td></tr></tbody></table>

![Иллюстрация расположения костей emit](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FdlxV8wFypN7map36HIl0%2F4.png?alt=media)

#### Правила работы с костями типа `emit`

* **Наличие и количество костей** типа `emit` должно соответствовать потребностям анимации. Отсутствие необходимого числа костей может привести к некорректному поведению юнитов при посадке в технику
* **Ориентация пивота**\
  Пивот каждой кости `emit` должен быть ориентирован по оси X к кости `body`. Это обеспечивает правильную ориентацию юнитов при проигрывании анимации посадки.
* **Свойства костей**\
  Кости типа `emit` остаются невидимыми и не требуют прописывания свойств в \[Object Properties]

### Посадочные места на технике для юнитов-пассажиров

Для обозначения мест, где юниты солдат размещаются на броне техники, используются невидимые кости типа `seat`. Эти кости тесно связаны с костями `emit` и определяют конечные позиции для анимаций посадки юнитов-пассажиров.

#### Назначение костей типа `seat`

* `seat01`, `seat02` и т.д. — кости, которые размещаются напротив соответствующих `emit` и обозначают места, где будут сидеть солдаты на броне танка.

#### Правила работы с костями типа `seat`

* **Наличие и количество костей** типа `seat` должно соответствовать количеству костей  `emit` для видимых юнитов-пассажиров. Это гарантирует правильное воспроизведение анимаций посадки пассажиров.
* **Позиционирование**\
  Корректное расположение костей `seat` обеспечивают реалистичное поведение юнитов при посадке на броню.
* **Свойства костей**\
  Кости типа `seat` остаются невидимыми, окно свойств костей в **Object Properties** оставить пустым.

### Дополнительные кости для экипажа и пулеметчиков

В моделях танков и машин с открытой рубкой, где видны дополнительные члены экипажа, необходимо добавить и настроить дополнительные кости для всех видимых юнитов членов экипажа. Это позволяет реалистично анимировать экипаж и пулеметчиков, обеспечивая их корректное взаимодействие с объектами окружения.

<table><thead><tr><th width="185">Кость</th><th>Описание</th></tr></thead><tbody><tr><td><code>gunner</code></td><td>Используется как место для основного стрелка и запуска его анимаций.</td></tr><tr><td><code>gunner2</code></td><td>Место для зенитного пулеметчика. <br>Кость используется для проигрывания  анимаций зенитного пулеметчика.</td></tr><tr><td><code>commander</code></td><td>Место командира танка. <br>Кость используется для проигрывания  анимаций командира танка.</td></tr><tr><td><code>charger</code></td><td>Место для заряжающего. <br>Кость используется для проигрывания  анимаций заряжающего.</td></tr><tr><td><code>driver</code></td><td>Отвечает за анимацию водителя в моделях машин.</td></tr></tbody></table>

### Кости пулеметов

Кости типа `mgun` служат местами для пулеметов. \
Эта кость может быть как видимой, состоящей из полигонов, так и невидимой — в виде хэлпера. \
Кость `mgun` линкуется к тому элементу, на котором предусмотрено место крепления пулемета.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc2HHt2S1ws3kt2q2wVM-96Aq96Zs-OZCUxod_WBE5Fa825bxQ4D6Ivo-iCjVGEQjoKMZAXcJKo8FrZ-7w3dXKDynVRhnxvPSM6CBAk7TMN-mglyti1GVGvA6zSJg9ol3ZK23f0fmYUXkZQbhv5v0gALV_Y?key=lL_zWhi9OpK0iXcLXfnQFw" alt="" width="563"><figcaption><p>Иллюстрация невидимой кости mgun</p></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdTNS1MB1LpoF4hjEnCWECLiviqY7B1YpaI3lFBVo6tWPXi1ZIJv7jn5HyO5CsUU-VxyE7uUUarjRWUraig9OvyYJ5GN0-zlYvcCXPeEKl7eF5_Au_wH4IjSqZC7kmJTRT-9FvIOb7zAoWJZzopsF8eGvo?key=lL_zWhi9OpK0iXcLXfnQFw" alt="" width="563"><figcaption><p>Иллюстрация свойств кости mgun, работающей по законам инверсной кинематики</p></figcaption></figure>

#### Свойства костей типа `mgun`

<table data-header-hidden><thead><tr><th width="211">Параметр</th><th>Описание</th></tr></thead><tbody><tr><td><code>poly</code></td><td>Наличие параметра poly в Object Properties делает кость видимой.<br>Кость должна быть видимой, если в модели присутствует меш пулемета. <br>Если в модели присутствует только пулемётное гнездо (то есть место, где пулемет может быть установлен, но сам пулемет не видно), то кость должна быть невидимой. </td></tr><tr><td><code>IKType=revolute</code><br><code>IKMin=&#x3C;значение></code><br><code>IKMax=&#x3C;значение></code></td><td>Параметры инверсной кинематики, если предусмотрено наведение пулемета по законам инверсной кинематики</td></tr></tbody></table>

К костям `mgun` линкуются хелперы `foresight`, спавнящие по оси X спецэффект пулеметного выстрела.

**Правило соответствия названий** `mgun`-`foresigh`

{% hint style="success" %}
Если на технике имеется несколько дополнительных пулеметов, необходимо **строго  соблюдать** правило соответствия названий эффектора `foresight` и места его линковки к кости `mgun:`

* `mgun` — `foresight3`
* `mgun1` — `foresight4`
* `mgun2` — `foresight5`
* `mgun3` — `foresight6`
{% endhint %}

{% hint style="danger" %}
Несоответствие названий приведет к ошибкам работы скриптов.&#x20;
{% endhint %}

#### Привязка моделей пулеметов к костям mgun

На этапе моделирования важно предусмотреть нужное количество костей типа `mgun`, соответствующее максимально возможному количеству мест установки пулеметов на технику.&#x20;

**Типы пулеметов на технике:**

<table data-header-hidden><thead><tr><th width="166">Название пулемета</th><th>Описание</th></tr></thead><tbody><tr><td><code>aa</code></td><td>Зенитный</td></tr><tr><td><code>hull</code></td><td>Курсовой пулемет, расположен в корпусе</td></tr><tr><td><code>coaxial</code></td><td>Спаренный пулемет, расположен в башне</td></tr><tr><td><code>rear</code></td><td>Задний пулемет</td></tr></tbody></table>

Настройка привязки пулеметов к костям прописывается в .def файле модели с помощью  блоков `placer`

{% code title="Формат записи" %}
```
{placer "mgun<N>" [...]}
```
{% endcode %}

где N - номер соответствующего пулемета, \[...] содержимое описания привязки.

<details>

<summary>Пример привязки спаренного пулемета к кости mgun2 модели </summary>

```
{place "mgun2"  
  {type "coaxial"}  
  {weapon "dt_vh" filled}  
  {foresight "foresight5"}  
  {gunner "gunner"}  
  {charger "gunner"}  
  ("sequential_aim")  
  ("abm_mgun")  
  {basic}  
}
```

</details>

***

## Волюмы

Волюм `volume` — это параметрическая (например, box, sphere, cylinder) или мешевая (edit poly) форма, покрывающая меш модели, по которой рассчитываются физические взаимодействия юнита в игре.&#x20;

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdOOqJ-fTlhDaauqQgI1xqiAcKjn-ZP4BPRSq3JHh8xv-glyFB7ZtS52mqgziPZeVBAZEehgELchDKAgA-aVnQU3MdUtxqtlVpQWUJ3j9KgPuCL67LCaci7NUVn5xMxsnpf7se6zvVG0ClYg71CHaQzeKJv?key=lL_zWhi9OpK0iXcLXfnQFw" alt=""><figcaption><p>Пример волюмов корпуса и двигателя</p></figcaption></figure>

### Изготовление и настройка волюмов

Кости типа `volume` делаются для всех **основных костей** модели. \
Для каждой основной кости делается свой волюм или набор волюмов.

{% hint style="warning" %}
Для костей типа detail  делать волюмы не нужно, так как в игровом движке волюмы для визуальных частей не поддерживаются.
{% endhint %}

Форму меша волюмов нужно подбирать таким образом, чтобы обеспечить реалистичные  физические взаимодействия.\
В \[Object Properties] волюмов необходимо прописать параметр `volume`. \
На полигоны меша волюма назначается `Material ID`, по которому происходит расчет бронепробиваемости.

{% hint style="success" %}
Волюм следует начинать вытягивать из прямоугольника в окне проекции **Top**, тогда **`Material IDs`** на плоскости волюма назначаются автоматически и не требуют дополнительной проверки или переназначения, согласно установленным правилам.
{% endhint %}

{% hint style="warning" %}
Волюмы должны оставаться стандартными примитивами. \
Перевод примитива в полигональные формы с помощью инструментов editable poly рекомендуется только в случаях, когда сложную геометрию части модели невозможно описать примитивом.
{% endhint %}

Допускается изменение геометрии примитива, из которого сделан волюм, на уровне подобъектов, если форма созданной модели не является однообъемной. В таких случаях разрешается создание нескольких костей типа `volume` с одинаковыми свойствами.\
Между такими волюмами не должно быть промежутков, однако незначительное пересечение волюмов допускается.

**Примеры изготовления волюмов.**\
На первом скриншоте волюмы созданы правильно. \
На втором скриншоте волюм создан неправильно, так как будет препятствовать попаданиям снарядов/пуль по юнитам, находящимся  в кабине.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc1AUkMozHkvmeMHpBJlCVTvCEZiIUz2gRKInAxEzD2KKaXFG89mAsPSIw6rfzPzWOhSEU0rR0ElXoXckQIDh2QlMdDTrZCoVxEB6VUiQpaaaLSQ5L2416qSwhrfnVoUnXhxzNxeM4QZ6dOHEU43zQ2bBgb?key=lL_zWhi9OpK0iXcLXfnQFw" alt=""><figcaption><p>Пример правильно сделанных волюмов</p></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfvFTIMh2_Lwk1SjNfwXRJoRsIrOGMqbehTp6TJf4TGUzhMf3gald3AzuMxZ5AJ7O66CUc1dB0Zx9uUIijN-ZTAV991CbCbq82YFQj8B5spSjq76xllgRmYPyIuM-HOpCeIrSrYbYa__3CACGQa83bBuwJt?key=lL_zWhi9OpK0iXcLXfnQFw" alt=""><figcaption><p>Иллюстрация неправильно сделанных волюмов</p></figcaption></figure>

### Правила именования волюмов&#x20;

* Волюм, покрывающий меш **основной кости**, имеет в названии имя этой кости. \
  Например, body\_vol, turret\_vol, engine\_vol.
* Если волюмов, покрывающих кость несколько, то в именах волюмов используется нумерация. Шаблон для именования волюмов: bonenameN\_vol, где N - порядковый номер. \
  Например, body01\_vol, body02\_vol, body03\_vol.

### Переназначение `Material ID` для плоскостей волюмов-полигидронов

В волюмах-полигидронах для корпуса необходимо каждому полигону в свойствах блока `Polygon: Material IDs` для параметра `Select ID` задать значение,  которое строго соотвествует таблице:

* Front - 1
* Top - 2
* Left - 3
* Right - 4
* Back - 5
* Bottom - 6

По параметру ID рассчитывается виртуальная броня компонент техники: лобовая броня, борта, корма и т.д.

<figure><img src="https://lh7-us.googleusercontent.com/yx1GglAd7UHq8Cm0RUPcPay0ZZs0dj3J0IpttbdJRHppL3J71cpCFXQ9ksjFVqrpBQ9r3mFRcJK9uA_HT0q-RUXbisnKxjemRUn9tg3CPlPElXlSKUQ38MqbE8_J7S63d8uSf9A8POuFYgUx__WIjQ" alt="" width="375"><figcaption><p>Окно <code>Polygon: Material IDs</code></p></figcaption></figure>

### Волюмы для стекол кабины

Для машин и других юнитов, имеющих стекла создаются волюмы для стекол. \
Название они имеют `window<N>_vol`, где \<N> - уникальный индекс волюма.&#x20;

Для добавления анимации разрушения стекла в .def файле юнита в блоке `props` необходимо добавить свойство  `windowed`.

<figure><img src="https://lh7-us.googleusercontent.com/d1ewBwm81kWMKlJWh8w3mhWNXX3pi7BEpb9Zub3sGbC1mfIfROpRN6c2gWuZWYVN_YfhxkzmAV0-iAHXBEipT4QorwInIIZlgLSxW8vQQl0-uvbM61NZK-Sx4lbcNT9ZRC2p1YUvSUsdngGDF0REhw" alt="Иллюстрация добавления свойства windowed в блоке props"><figcaption><p>Иллюстрация добавления свойства windowed в блоке props</p></figcaption></figure>

### Волюмы специального назначения

#### Волюм для рассчета тарана&#x20;

Волюм `ram_vol`, используется для расчета столкновений при таране техники. \
Представляет собой полигидрон с центральной выпуклостью, минимизирующей вероятность застревания техники при ударе под прямым углом с другими объектами. \
Назначения Material ID плоскостей не требуется.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXexqUqbYPviLmbXQSVivkh0MMOn-cyHdshRtqhqLvaZV6EKPheC1EcJo02y9KnN62HlkPQhrbwLPLMyj_cJ8TBNIiMEDVs9mC7JNzwwgxeouirS_b5pKfZJ97nd3NP_43M-UHOHgY-2kk5hAxsGTewgCR4?key=lL_zWhi9OpK0iXcLXfnQFw" alt="Иллюстрация кости ram_vol"><figcaption><p>Иллюстрация кости ram_vol</p></figcaption></figure>

#### Волюм экипажа

Волюм `crew_vol`, обеспечивает взаимодействие с экипажем внутри техники. \
Применяется в моделях тяжелой техники с открытой рубкой или в транспортных средствах с кузовом. \
Может быть реализован как примитивная геометрическая фигура или как полигидрон, в зависимости от структуры модели. \
Назначения Material ID плоскостей не требуется.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcOJ1H7aPzPQFoF9aj3g7FPDlHw7ngN0zo0astTwphUO2niQWgagwnHtIpuSqNdOKHogjgTCUheBpfplGUkEZVE1yYCxmjFxeQAUlgFb9u7tr7eY76CeBETc_nSOrUK5KM3PsrDho7-LjAqCe68OnEaN-0?key=lL_zWhi9OpK0iXcLXfnQFw" alt="Иллюстрация кости crew_vol"><figcaption><p>Иллюстрация кости crew_vol</p></figcaption></figure>

#### Волюм-ловец гранат&#x20;

Волюм `sticky_vol` отвечает за притягивание брошенных в юнит техники гранат к определенным зонам техники. \
Используется в тяжелой технике с открытой рубкой или в транспортных средствах с кузовом. Формируется по внутреннему пространству техники для повышения вероятности попадания гранаты внутрь уязвимой области.

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FXTGUZIZhMGBouCyFI0an%2FSticky_vol.png?alt=media&#x26;token=27af21ec-ff8b-40b5-a32f-0335662a3ab8" alt="Иллюстрация кости sticky_vol"><figcaption><p>Иллюстрация кости <code>sticky_vol</code></p></figcaption></figure>

#### Волюм топливного бака.&#x20;

Волюм `fuel_vol` обозначает геометрию взаимодействия с внешним топливным баком автомобильной техники.

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FdGfHoLgb5JifkTD4v1xk%2Ffuel_vol.png?alt=media&#x26;token=e8007cf4-0247-4ea6-81f9-52e8f143b20d" alt="Иллюстрация кости fuel_vol"><figcaption><p>Иллюстрация кости <code>fuel_vol</code></p></figcaption></figure>
