# Описание иерархии структуры модели дома

## Основные элементы и кости <a href="#kp78wvwgzfwt" id="kp78wvwgzfwt"></a>

### Basis

Модель дома перед экспортом в игру необходимо настроить как структурный объект. \
Главная структурная кость называется  basis.  В его свойствах указывается тип сущности, путь экспорта и свойство Структуры.&#x20;

![](/files/0Imv6SNlNbDFtGeCWmqh)

### Piece и piece\_point

Каждый кусок дома piece - это отдельная модель со своими настройками, которая  линкуется к basis через вспомогательную кость. Для удобства ее следует называть одноименно кости-piece с добавлением в имя приписки \_point.

![](/files/GxWlYQ1zklNZ9KlA3lW2)

В свойствах кости типа \_point ничего не указывается.

В свойствах кости типа piece указывается параметр poly (полигональный объект), тип сущности и путь экспорта.

![Пример свойств кости-piece](/files/7RCkNtGrt6yFbC6sLeQW)

{% hint style="info" %}
**Важно!** \
Каждый кусок дома экспортится в отдельную папку.  \
Папки всех кусков дома находятся в папке-родителе объекта.
{% endhint %}

Непосредственно в кость basis линкуются также:

### **bottom\_floor\_vol**&#x20;

со свойствами:

* Volume
* clear
* Touch=1

### **obstacle**&#x20;

со свойствами:

* Obstacle
* Rotate

### **emit**&#x20;

Кости посадки без свойств

### лэндовые объекты&#x20;

Например пол - land - со свойствами:

* Poly
* Land
* Ground

## Вспомогательные кости для настройки <a href="#id-18cifqhajus2" id="id-18cifqhajus2"></a>

Каждый отдельный кусок может иметь набор функционала, который реализуется с помощью вспомогательных костей:

### **fort\_window**&#x20;

Кость для возведения укреплений на окна.&#x20;

Подгоняется под геометрию окна, пивотом по оси Х в направлении дома. \
В свойствах ничего не указывается.&#x20;

Если в куске несколько окон, то нейминг укреплений должен быть по принципу: fort\_window, fort\_window01, fort\_window02 и т.д. \
В каждом отдельном куске нейминг сбрасывается и начинается сначала.

### **fort\_wall**&#x20;

Кость для возведения укреплений на стены.&#x20;

В дефе можно указать, какую конкретно энтитю использовать как укрепление, обычно это модели мешков.&#x20;

Подгоняется под геометрию здания, выбирается необходимая ориентация. \
В свойствах ничего не указывается.&#x20;

Если в куске несколько укреплений, то нейминг укреплений должен быть по принципу: fort\_wall, fort\_wall01, fort\_wall02 и т.д. \
В каждом отдельном куске нейминг сбрасывается и начинается сначала.

### **attach**&#x20;

Кость для посадки юнита в дом.&#x20;

В дефе описывается роль юнита, это может быть активный стрелок в оконных рамах или же вспомогательный. \
Юниты-стрелки имеют ориентацию по оси Х в направлении стрельбы, “запасные” юниты - по оси Х в направлении стены.

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

Нейминг по принципу: attach1, attach2, attach3 и т.д. \
В каждом отдельном куске нейминг НЕ сбрасывается и продолжается по счету.&#x20;

### **fix**&#x20;

Кость зависимости разрушения кусков.&#x20;

Принцип этих костей такой, что при уничтожении кусков в нижней части строения или несущих конструкций, верхние или боковые должны также обрушиваться, как домино. В иерархии эти кости должны быть в куске, за который они отвечают, но в пространстве - находиться в волюме соседнего куска. На скрине ниже желтые суппорты и есть fix-кости. Данный кусок, по сути, держится за эти точки, которые физически находятся в других кусках. Если падает соседний кусок, в волюме которого находится чужой fix, то этот fix тянет за собой и свой кусок. Зависимость кусков дома друг от друга нужно определять по конкретному, уже порезанному, строению, здесь все случаи уникальны. \
В свойствах ничего не указывается, зависимость кусков описывается в дефе.

Нейминг по принципу: fix001, fix002, fix003 и т.п. \
В каждом отдельном куске нейминг НЕ сбрасывается и продолжается по счету.&#x20;

![Пример расположения суппорт-костей типа fix](/files/XvL1EWwqa3S7SkJlVivP)

### **volume**

Кости для определения попаданий.&#x20;

Стандартная кость, со свойством volume, крепится непосредственно к куску. Описывается геометрия объекта, можно примитивами, можно полигидронами. Пробелов между волюмами быть не должно (если только это не обусловлено особенностью конструкции, напр. арки и т.п.), пересечение допускается. Волюмы должны описывать все элементы объекта.

![Пример volume](/files/RZCAbLi1vb5bvtM3rozW)

### **emit**&#x20;

Механика посадки в дома использует кости “emit” как опорные точки для старта перехода сквозь обстакл внутрь здания. \
Важно учесть направление кости (в сторону выхода). И размещение относительно входа. Глубину посадки внутрь входа учитывать не нужно. Движок сам сместит эмит на нужное расстояние в сторону выхода. На основе таких костей движок генерирует дополнительные 3 кости для посадки в дома. Которые и будут использоваться игровыми механиками.

![](/files/CfMrhyc8jSWoXdr4GG9c)

### Волюмы для прицеливания и атаки

Для атаки юнитов в дома используются вспомогательные волюмы, а сами юниты не атакуются напрямую. Поэтому необходимо добавить и настроить волюмы.

#### Window

Для целых кусков атака обычно происходит в окна. Для этого используются волюмы window

<figure><img src="https://lh7-us.googleusercontent.com/8sZ5RUYf24LrAy-1gfunUQtpyKoaKoC_GMWwocxzfYL9z0ADXlqstpvZhaWDiuX__UwnablxWiXvSOGWpYkI3bLJ4ofARWNz6s3CX1I3kMREhSnf9cvhh-QCy7NE-SkJMmuSGWWkMr29Geh2oMzFKFs" alt=""><figcaption><p>Пример волюма window</p></figcaption></figure>

```
{volume "window1"
    {thickness 0.2}
    {able {visible 0}{window}{Obstacle 0}}
}
```

#### target- vol

Для атаки в разрушенные куски необходимо добавить target-волюм

<figure><img src="https://lh7-us.googleusercontent.com/6GIRNORJo99mK9weYE171ndjYU06Sev1Yl6y-SJkrFlVL22RaSPTCL3nbcrR-URyHsQo-CERqvZp9yaisAO9NSxKBnZq04VVQX_94SbYhgqUE_yzA0vs6fzgCxSlEWfMHdD3R7CAlok3CnJiKWdB_8M" alt=""><figcaption><p>Пример расположения target-волюма</p></figcaption></figure>

По высоте центр этого волюма приходится примерно на уровне плеч сидящего юнита\
По глубине внутрь дома - центр волюма приходится на центр стены.\
Габариты чуть больше размера корпуса юнита.\
Сбоку волюм немного выпирает, чтобы был доступен для прицеливания и атаки под углом к дому. Пример даже на скриншоте<br>

<figure><img src="https://lh7-us.googleusercontent.com/IE3d7K1yv6Bw9VcNWagIKkIXbs6AAf6ER2M0H4TJzG9qZ1rgJGfwDlBOpEw459WymxYwLrf92t2eo6Tpuwc28qa5i0U8CDpDJ1-RVuKs-drWFtGWXKti7VxdO4wWtzj7u2qsmUvn_87mzHuVsUI6_Zs" alt=""><figcaption></figcaption></figure>

```
{volume "target_vol_02"
    {Tags "target"}
    {able clear {bullet}}
}
```

где\
Tags - target включает прицеливание в такие волюмы.\
Able bullet - включает атаку и урон в такие волюмы.

\*Для отображения волюмов в движке r\_meshGroupStructure 0\
v\_volume\* команды для отображения, фильтрации волюмов.

Для строений типа бункера, где окон нет как таковых, на целые модели тоже нужно добавлять и описывать волюмы target, по принципу х-моделей домов (где есть окна).&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bestway-1.gitbook.io/documentation/gem-rts-v1-ru/modeli/nastroika-modeli-doma/opisanie-ierarkhii-struktury-modeli-doma.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
