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

Материал из BestWay wiki
Перейти к: навигация, поиск

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

При разрушении в одну стадию производится замена исходной модели на ее разрушенную версию, которая именуется так же, как исходная, но с постфиксом «_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. кости для подключения эффектов разрушения (см. Другие элементы, подпункт 8)
  2. анимированные «вручную» объекты, благодаря которым модель может разрушится визуально так, как того хочет моделер (чаще всего все это входит в состав базовой кости) – см. п. 4.1 и п. 4.2, сложные взаимодействия между обломками можно выполнять с помощью Reactor в 3dsmax
  3. обломки конструкции, распадающиеся «по физике» – см. Другие элементы, подпункты 3 и 4

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

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

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



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


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


Смотри также