Иерархическая структура модели

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

Создание полигональной модели


В качестве примера рассмотрим модель танка Pz6 Ausf. E “Tiger”.

Модель состоит из костей, некоторые из которых могут являться компонентами. Компонент это та часть модели, которая будет оказывать на игровой мир какое-либо воздействие, либо сама будет им подвержена. У каждого компонента есть волюмы, заключающие в себя компонент, по которым и высчитываются коллизии игрового мира. Компонентам через волюмы присваивается толщина и прочность материала, из которого состоит оригинальная модель. Основные компоненты, на которые присваиваются волюмы – Body, Gun, Turret, Engine, WheelsL, WheelsR. Всем этим компонентам назначается идентификация, для удобства дублирующая название кости ( исключение – последние два). Кроме того, волюмы этих компонентов также должны называться в соответствии с идентификацией: Body_vol, Gun_vol, Turret_vol, Engine_vol, Trackleft_vol и Trackright_vol.

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

Важно!

Все кости должны быть ориентированы по оси X. Количество полигонов модели в среднем не должно превышать 3500 Мэшевый лод – это дубликат какой-либо высокополигональной кости, но с меньшим количеством полигонов. Лоды используются для отображения модели в меньшей детализации – на каком-то расстоянии, когда в большом количестве полигонов нет необходимости. Название лода должно быть таким же, как и у кости, которую он должен дублировать, но с припиской _lod1, например, Body_lod1. Прилинкован он должен быть параллельно, к той же кости, куда прилинкована мэш, который он дублирует.

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

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

Эта кость выставляется в точку с координатами в пространстве X=0, Y=0, Z=0. Необходимо помнить, что направление вектора движения базиса и, впоследствии, всего танка, ориентировано по оси Х, и в окне проекции Front модель отображается с правого борта. К базису линкуются несколько костей, к которым, в свою очередь, привязаны остальные кости и компоненты модели.

Body – кость, визуально представляющая из себя корпус танка:

Body basis.PNG

Линкуется к базису, может обладать анимациями и имеет свои свойства:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

Параметр Poly определяет, какой будет кость (видимой, невидимой, с мэшевой анимацией или с обычной). То есть, отсутствие этой строчки в свойствах кости делает ее невидимой. Параметр ID идентифицирует кость, что позволяет подменять ее на такую же, но визуально сломанную и наоборот – сломанную на целую. Анимация repair (починка) приводит кость-компонент в начальное положение после починки, если анимация break (поломка) смещает ее в пространстве.


Wheels.PNG

WheelsL и WheelsR – соответственно, левая и правая части трансмиссии танка, каждая с ветвью прилинкованных к ним колес и других компонентов. Могут быть как видимые (содержать параметр Poly), так и не иметь визуального отображения (без этой строчки в свойствах). Необходимыми же параметрами для этих костей являются ID=trackleft и ID=trackright, для левой и правой кости соответственно.

На рисунке показан пример с частью левой ветви трансмиссии – несколько колес, которые будут неотрывно перемещаться по игровому ландшафту, повторяя направление движения базиса. Каждое колесо также может иметь либо отдельный дублирующий его низкополигональный мэш, либо мэш, который при надобности заменит сразу все колеса на этой стороне.


Emit.PNG

Emit1, Emit2– кости, указывающие место, откуда начнет проигрываться анимация посадки танкистов непосредственно в танк. Как правило, Emit1 располагается с одной стороны модели напротив башни, Emit2 – с другой. Emit3, Emit4, Emit5...- точки в пространстве рядом с танком, определяющие места для посадки юнитов-солдат на броню танка. Важно само наличие и количество этих костей, точное их положение определяется аниматорами. Пивот этих костей должен быть ориентирован осью Х к Body.

В свойствах эмитов ничего не указывается – они являются невидимыми костями.



Body, как уже упоминалось, является основной визуально видимой частью модели, корпусом, к которому, помимо колес, линкуется башня, двигатель и еще несколько костей отвечающих за коллизии танка с окружающей средой и физическими на него воздействиями. Такие кости называются волюмами – Volume (объем).

Body vol.PNG

Body_vol1 – стандартный примитив, типа box, cylinder, либо другой (в зависимости от геометрии модели), имеющий свойства некоего объема, включающего в себя видимый мэш Body, благодаря которым определяются попадания в корпус танка и воздействия его на окружающие предметы. Возможно изменение геометрии примитива, из которого сделан Body_vol на уровне подобъектов, если форма созданного танка не является однообъемной. С целью большего удобства в работе с такими моделями волюм допускается создание кости Body_vol2, которая полностью повторяет свойства Body_vol1. Между этими волюмами не должно быть промежутков, пересечение допускается.


Если , как в данном случае, один (Body1_vol), либо несколько волюмов изменены на уровне подобъектов, то есть утратили свою стандартную геометрическую форму, необходимо с помощью полигонального выделения распределить Material ID в следующем порядке:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения
1 - Front (на рисунках)

2 - Top

3 - Left

4 - Right

5 - Back

6 - Bottom

Это правило действительно для всех волюмов со сложной геометрией.

Важно! Прямоугольники, которые станут волюмами, надо начинать вытягивать в окне проекции Top. Маterial ID при этом распределяется автоматически. По ID вычисляется виртуальная броня корпуса – лоб, борта, корма и т.д.







Fx.PNG

Inventory_vol - волюм для инвентаря танка.

Сrew_vol – волюм для экипажа танка.

Оба этих волюма должны находиться внутри Body1_vol и Body2_vol, которые ограничивают их размер.

FXfire1 – эффектор для спецэффекта горения двигателя (Х – направление спецэфекта, действительно для всех FX!)

FX shot – эффектор для спецэффекта пыли при выстреле танка.

FXsmoke1 и FXsmoke2 - эффектор для спецэффекта выхлопных труб.




CreatePolyModel 9.PNG
Engine – невидимый, либо визуально отображаемый компонент со своим волюмом. Engine_vol, который также, как и некоторые другие, скрыт внутри волюмов группы Body_vol.
CreatePolyModel 10.PNG

Поскольку Engine является компонентом, в свойствах должны быть указаны ID кости (ID=engine), анимация, если есть и ее подвид – мэшевая либо скиновая.




CreatePolyModel 11.PNG
Visor2 – неотображаемый хэлпер, служащий «глазами» танка по вектору движения. Линкуется к Body в место смотровой щели на лобовой броне.

Mgun – кость, имитирующая курсовой пулемет в лобовой броне танка. Может быть как видимой – состоящей из полигонов, так и невидимой – хэлпером. К кости Mgun прикреплена кость Foresight4, хелпер, спавнящий по оси Х спецэффект пулеметного выстрела. Обе эти кости должны иметь ориентацию инверсной кинематики по своим осям Z – но одна по вертикали, другая по горизонтали. Кости невидимые, в свойствах не прописывается Poly, однако там необходимо указать их пределы поворота:

CreatePolyModel 12.PNG

Seat01, Seat02... – невидимые кости, которые расположены напротив «своих» Emit`ов и отмечают собой местоположение сидящих «на броне» модели солдат. Важно само наличие и количество этих костей, точное их положение определяется аниматорами. Turret – линкуемая к Body башня танка, обладающая инверсной кинематикой, анимацией восстановления, собственным ID компонента:

CreatePolyModel 13.PNG

Параметр IKSpeed определяет скорость, с которой работает вращение башни по инверсной кинематике.




CreatePolyModel 14.PNG

Turret_vol описывает своей формой видимую часть башни танка, и, как в случае с группой волюмов Body_vol, линкуясь к кости Turret, отвечает за коллизии башни с окружающим игровым пространством. Кость Cover является люком башни, анимация которого включается, когда юнит-танкист залазит в танк, либо вылазит из него. Линкуется, как это видно из рисунка, также к Turret.

CreatePolyModel 15.PNG

Может состоять из нескольких костей – в зависимости от того, сколько створок люка у реального прототипа танка. Помимо вышеуказанных костей к Turret линкуются кости Enumerator, Visor1 и FXfire2. Enumerator представляет из себя кость из трех полигонов, на каждый из которых назначен свой ID Material. Каждому ID соответствует текстура с изображением номера. Цель этой кости – отображение случайного трехзначного номера на борту машины. Visor1 , по аналогии с Visor2 у Body, является костью обзора из башни. Компонент-кость Gun имитирует подвижную часть ствола танковой пушки, обладает анимацией, вместе с волюмом Gun_vol линкуется к маске пушки Gun_rot – кости, которая отвечает за наведение орудия по вертикали.

CreatePolyModel 16.PNG
CreatePolyModel 17.PNG

Gun_rot подчиняется инверсной кинематике, соответственно, в свойствах этой кости, помимо ID указываются пределы, которые будут ограничивать угол поднятия и опускания ствола. Эффектор Foresight3, имитирующий пулемет в маске пушки прилинковывается к Gun_rot.


Замыкает эту ветвь костей эффектор Foresight1 – из него спавнится спецэффект выстрела танковой пушки – соответственно линкуется Foresight1 к кости Gun. Последние кости, линкующаяся к Body – это, как немного упоминалось выше, колеса. Поскольку они симметричны, имеет смысл остановится на одной из пары. Компонент WheelsL является главным звеном в колесной иерархии. Как уже говорилось, он может либо иметь визуальное отображение, либо нет. К WheelsL линкуются все оставшиеся кости: WheelL1, WheelL2, WheelL3... – непосредственно сами колеса. Поскольку они участвуют в инверсной кинесатике, направление оси Z у каждого колеса должно совпадать с воображаемой его осью. Если колеса крупного размера, то каждое имеет свой лод. Если же имеется ряд или несколько рядов маленьких колес, нет смысла тратить много полигонов на лод для каждого из них. Возможна замена всех костей одной. Для этого, заменяемые подобным лодом колеса должны иметь следующие свойства:

CreatePolyModel 18.PNG

К WheelsL также линкуются эффекторы FXtraceL1, FXtraceL2 и FXtraceL3 – они создают видимость пыли и грязи, выбрасываемой при езде танка из-под гусениц. Роль гусениц модели играет мэш, созданный лофтингом по нарисованной сложной линией траектории.

CreatePolyModel 19.PNG



Назначение материалов на модель


После того, как модель готова на нее назначаются текстуры. Все начинается с подготовки соответсвующего материала. Всего материалов может понадобиться несколько. Но схема подготовки каждого одинакова:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

Материал Standart меняется на EclipseMtl. Он должен иметь название Material1. Прозрачность этого материала, даже если текстуре есть альфа-канал, выставляется на нулевую. Мате-риал этот назначается прак-тически на все плоскости модели, которые не имеют каких либо щелей или отверстий. Для отекстуривания последних нужно Material1 сдублировать в соседний слот с названием Materia2 и переключить флажок прозрач-ности в параметрах на Альфа 1 бит. Флажок Альфа 8 бит использует-ся для назначения кости мате-риала, имитирующего стекло, либо другой полупрозрачный материал.