Разрушение моделей

```
***Основная статья***

```

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

При разрушении в одну стадию производится замена исходной модели на ее разрушенную версию, которая именуется так же, как исходная, но с постфиксом «**\_x**» (**Х-модель**). Обычно так разрушаются здания и т.п. объекты, восстанавливать которые после повреждения не предполагается. В таком случае в составе **Х-модели** находятся части, которые после подмены модели вступают в физическое взаимодействие с игровым миром и падают на землю (обломки стен и т.п.).

Техника, получившая повреждения в бою, может быть отремонтирована. Поэтому ее разрушение происходит в две стадии: при определенном повреждении исходная модель подменяется **Х-моделью**, которая может продолжать функционировать (все зависит от характера повреждений) до тех пор, пока не получит катастрофические повреждения. После этого **Х-модель** подменяется на **ХХ-модель** (постфикс «**\_xx**») и техника считается разрушенной полностью. На стадии **Х** объект можно починить, на стадии **ХХ** – уже нет. **Х-модель** обычно представляет собой слегка деформированную исходную модель и несет на себе текстуру с «повреждениями». **ХХ-модель** содержит рассыпающиеся по игровой физике куски и остов объекта с полностью «убитой» текстурой (для экономии могут быть использованы фрагменты **Х-текстуры**).

## **Разрушение пассивных объектов**

**Х-модели** разрушаемых зданий, сооружений (и т.п. статических объектов) состоят из базовой кости, названной так же, как соответствующая базовая кость в «целой» модели. Если модель – структурная, то к каждой части структуры создается своя **Х-модель**. Для удобства целая и разрушенная версии модели могут находиться в одной сцене 3DSMAX, располагаясь в разных местах сцены, но сохраняя при этом взаимное расположение своих частей. В **Х-модели** содержится базовая кость, в параметре **Model** которой указан путь по следующему принципу:

* **Model=entity\construction\town\_e\b\_str\_house\_c135\bsh\_c135\_p01** – для целой модели части дома.
* **Model=entity\construction\town\_e\x\bsh\_c135\_p01\_x** – для **Х-модели** той же части дома.

Обратите внимание на имена самих моделей. Все **Х-модели** экспортируются в отдельную папку с именем «**X**», расположенную в каталоге, соответствующем категории модели (в данном случае это **town\_e**). Обычно таких каталогов в каждой категории минимальное количество, чтобы не возникало путаницы (отдельно на карту **Х-модели** таких объектов обычно не выставляются и потому могут быть сброшены в одну общую отдельную папку). Итак, в **Х-модели** содержится базовая кость с тем же именем, что и базовая кость целой модели. В базовой кости **Х-модели** может быть прописан параметр **Poly**, если эта кость отрисовывается и содержит не разрушаемые далее видимые части (например обломки оснований стен). Имеет смысл все такие остатки собрать в одну кость, чтобы не усложнять иерархию. Далее, к базовой кости могут быть прилинкованы:

1. кости для подключения эффектов разрушения;
2. анимированные «вручную» объекты, благодаря которым модель может разрушится визуально так, как того хочет моделер (чаще всего все это входит в состав базовой кости), сложные взаимодействия между обломками можно выполнять с помощью **Reactor** в 3DSMAX;
3. обломки конструкции, распадающиеся «по физике».

На последнем случае остановимся более подробно. Каждый обломок (**piece#**) прилинкован к базовой кости (за исключением **sub\_piece#**, которые могут линковаться как к базовой кости, так и к **piece#**) и в параметрах содержит только **Poly**. К каждому **piece#** и **sub\_piece#** прилинкован волюм, в параметрах которого прописан только **Volume** (но могут быть исключения). Обломки не должны пересекаться в пространстве своими волюмами, иначе это приведет к экстренному выталкиванию волюмов друг из друга (в физическом движке), в результате чего обломки приобретут непредсказуемое поведение во время полета.

**Важно:** рекомендуется свести к минимуму физические расчеты при подмене целой модели на **Х-модель**, для чего на каждом обломке должен быть, по возможности, один волюм (редко два), выполненный как примитив **Box** (если это кусок стены), либо **Cylinder** или **Sphere** (в зависимости от обломка и его предполагаемого поведения при столкновении с землей и другими объектами). Сам же обломок должен иметь неправильную форму, но позволяющую с минимальными отклонениями описать его одним-двумя волюмами. Не следует также делать слишком много обломков (количество **piece#** и **sub\_piece#** должно быть не более 16). Кроме этого текстуры, использованные на целой модели, должны быть максимально задействованы в **Х-модели**, чтобы не загружать много дополнительных текстур в процессе разрушения объекта. Желательно, чтобы происходила подмена только текстуры крыши, а остальные использовались с целой модели.

Поскольку обломки соответствуют определенной части конструкции, они должны нести на себе соответствующую текстуру. Однако, для упрощения моделирования и текстурирования таких кусков рекомендуется создавать их из произвольного сплайна путем применения модификатора **Extrude** с последующим нанесением раскладки текстурных координат простым **UVWMap Planar** с соблюдением масштаба и характерных участков текстуры фрагмента целой модели. На местах разломов, так же как и на самим стенах, наносится текстура разрушенной кирпичной кладки либо другого подходящего материала. К базовой кости **Х-модели**, если она содержит неразрушенные останки конструкции, должны быть прилинкованы волюмы, создающие препятствия вокруг этих останков.

## **Разрушение техники**

Подставляемая при получении повреждений **Х-модель**, помимо тех же деталей, что и целая модель, обычно содержит анимации перехода в «разбитое» состояние (и обратно – при починке), анимации разрушения гусениц у танков и т.п., а также кости, отвечающие за линковку эффектов дыма и огня. **ХХ-модель** содержит только остов и обломки (именуемые не **piece#**, а **part#**). Все соответствующие кости целой, **Х-** и **ХХ-моделей** должны совпадать по именам.