Создание вращающихся костей
⇐ ПредыдущаяСтр 2 из 2
Когда с масштабом модели определились, можно приступать к основной работе. При создании башни танка, нужно таким образом ориентировать pivot башни, чтобы ось Z башни была направлена вверх от корпуса. В параметрах башни указываем: Poly ID=turret – компонент turret (башня) Animation=repair,turret_r,155-180,turret_r,60 – анимация при починке башни IKSpeed=0.01 – скорость вращения кости, т.е. башни Чтобы сделать башню вращающейся, переходим на уже знакомую вкладку Hierarchy, нажимаем кнопку IK (инверсная кинематика). Выставляем галочки в разделе Object Parameters как показано на рисунке 8, тем самым, давая понять плагину, что кость будет вращаться. При экспорте эта кость будет записана в.mdl файле не просто как кость bone, а как bone revolute. Рекомендуется проверять визуально после экспорта в.mdl файле те кости, что должны вращаться, на предмет корректного объявления кости как bone revolute. В случае несоответствия – проверяем в 3DSMAX правильность выставленных галочек.
Рисунок 8.
Прилинковываем башню к корпусу. Теперь создаем маску пушки. Имя для этой кости используется обычно gun_rot. Ориентируется кость таким образом, чтобы ось Z находилась в горизонтальной плоскости, параллельно оси Y общей системы координат, что обеспечит пушке подвижность в вертикальной плоскости, т.е. подъем/опускание. Делаем кость вращающейся, как было указано выше. В параметрах прописываем: Poly ID=gun – компонент gun (орудие) IKSpeed=0.01 IKMin=-10 – минимальный угол отклонения IKMax=25 – максимальный угол отклонения Минимальный и максимальный углы определяют сектор вращения кости. Прилинковываем маску пушки к башне. Создаем саму пушку. Ее делать вращающейся не надо. В параметрах прописываем: Poly ID=gun Прилинковываем пушку к маске пушки. Обратите внимание на иерархию модели.
Теперь, для того, чтобы можно было прописать танку оружие и пушка могла стрелять в игре необходимо добавить кость прицела (Foresight). Идем на вкладку Create, в раздел Helpers и выбираем объект Point (точка). Выставляем в параметрах объекта в меню справа галочку напротив Cross (крест) и задаем размер креста. Обычно хватает 0.2-0.3 метра. Хелпер типа крест проще ориентировать, т.к. сразу видно его расположение. Создаем напротив дульного среза пушки кость с именем Foresight1 и ориентируем таким образом, чтобы ось X хелпера была направлена от пушки.
Примечание 3. Для остальных подобных хелперов ось X означает направление выпуска эффекта, такого, как вылет снаряда, выпуск дыма, направление света или огня, прорисовка следов от траков и т.д.
Прицел линкуем к пушке. Теперь в файле дэф модели можно прописать параметры основного орудия танка. Если параметры орудия заданы и иерархия модели была сделана правильно, у модели появится возможность стрелять из пушки, а также башня будет вращаться за прицелом. Если нет прицела, башня вращаться не будет.
Примечание 4. Рекомендуется самостоятельное ознакомление читателя с принципами действия инверсной кинематики с целью прояснения вышеприведенного эффекта.
В таком случае нужно проверить правильность задания параметров орудия, а также имени прицела. Для основного орудия имя должно быть обязательно Foresight1 (Foresight3, Foresight4… – это для дополнительного оружия типа пулеметов, Foresight2 для техники не используется). Если прицел есть, а вращения башни нет – нужно проверить правильность параметров вращения башни. То же и для маски пушки. Орудие должно наводиться по горизонтали поворотом башни, а по вертикали подъемом/склонением маски пушки.
Теперь можно вернуться к шасси танка. Ведущие колеса и ленивцы танка, а также опорные катки делаются вращающимися так же, как и башня танка или маска пушки. Разница заключается в том, что для колес не нужно прописывать в параметрах скорость и пределы вращения. Скорость вращения колес задается параметром Wheelradius в базисе модели или параметром Radius индивидуально для каждого колеса, если его радиус существенно отличается от остальных. В случае, если после экспорта модели при проверке ее в игре колеса вертятся в сторону обратную от запланированной, необходимо поменять ориентацию pivot (см. п. 1.3) таким образом, чтобы ось Z, как ось вращения, изменила направление на противоположное первоначальному.
Ведущие колеса и ленивцы линкуются к корпусу, опорные катки к костям подвески wheelR и wheelL. Параметры для всех колес Poly и ID=trackright или ID=trackleft, в зависимости от стороны и не зависимо от кости, к которой линуются.
Создание траков
Самый простой способ изготовления траков, это создание лофт (loft) объекта. С принципами создания и использования лофт объекта можно ознакомиться тут:
http://www.williamspublishing.com/PDF/5-8459-0825-6/part.pdf
Для начала нужно создать путь. Он же будет являться контуром будущего трака. Идем на вкладку Create в раздел Shapes (см. рис. 9). Из списка сплайнов выбираем Line (линию). Далее тыкая в рабочем окне, расставляем ключевые точки трака по контуру. Замыкаем контур, тыкая в самую первую точку в фигуре и на запрос о Вашем желании замкнуть контур, отвечаем «Да». Теперь очередь за сечением трака. Выбираем объект Rectangle (прямоугольник) и создаем прямоугольник сечения. Теперь создаем лофт объект.
Рисунок 9.
Выделяем линию-путь и идем на вкладку Create в раздел Geometry. Из списка классов объектов выбираем Compound Objects (см. рис.10).
Рисунок 10.
Создаем объект Loft. В свитке Creation Method нажимаем кнопку Get Shape (см. рис. 11) и щелкаем на том прямоугольнике, что был за сечение. Созданный объект будет похож на трак.
Рисунок 11.
Остается во вкладке Modify поиграть с параметрами прямоугольника сечения для получения желаемой формы. Для этого в окне модификатора нужно войти в режим редактирования лофт объекта, далее войти в подпункт Shape и щелкнуть на одном из прямоугольников сечения в лофт объекте. В окне параметров появятся пункты Length, Width и Corner Radius, соответственно длина, ширина и радиус угла (для закругления). Выйти из режима редактирования Shape до уровня Loft. В свитке Skin Parameters выставить параметры Shape Step (шаг формы) и Path Step (шаг пути) в нуль. Тем самым добивается единичная сегментированность объекта.
Создаем материал для траков, аналогичный созданному ранее для корпуса и остальных деталей, называем его track#1. Материал должен использовать 1 битную альфу и не иметь текстур бликов и бампа. Накладываем полученный материал на трак. Теперь, НЕ применяя модификаторов наложения текстур (типа Unwrap UVW), с помощью счетчика Tiling меню Coordinates в Material Editor для материала траков, добиваемся нужного шага текстуры на траке, чтобы длина и ширина отдельного элемента трака были нужного размера. Альтернативный способ настройки текстуры трака – изменение аналогичных параметров в свитке Surface Parameters (см. рис. 11) в секции Mapping самого лофт объекта, счетчиками Length Repeat и Width Repeat. В данном случае мы подстраиваем параметры маппинга под текстуру, а не наоборот, как предыдущим способом, что даже лучше. Только после этого к объекту можно применять модификатор наложения текстур. Также можно использовать модификатор типа Editable Mesh для создания штырей траков. Это можно сделать скопировав боковую поверхность трака. Лофт объект конвертировать не надо, т.к. он прекрасно воспринимается движком игры и в дальнейшем очень легко редактируется (параметры Line и Shape). Готовой объект копируем на другую сторону танка и получившимся тракам присваиваем имена trackR и trackL, не забываем про параметры Poly и ID=trackright и ID=trackleft. Линкуем к костям wheelsR и wheelsL. Теперь на готовый трак накладываем модификатор Skin. Заходим в режим редактирования Skin-> Envelope. Нажимаем кнопку Add, позволяющую добавить контрольную кость, с перемещением которой будет двигаться и модель трака. Из предоставленного списка выбираем body. В свитке Parameters в секции Select ставим галку напротив слова Vertices (вершины). Теперь нужно выделить вершины трака (точки, проще говоря), что находятся в нижней его части, которая касается земли (уровень земли - ноль по оси Z). Не снимая выделения с вершин, нажимаем правую клавишу мыши и в появившемся окне выбора опций жмем в пункт Weight Table Dialog. Появится таблица распределения весов. В левой нижней части устанавливаем фильтр Selected vertices, как показано на рисунке 12, в результате чего в таблице останутся только выделенные вершины трака.
Рисунок 12.
Далее для всех строк в таблице ставим крестик в столбце M, который на рисунке 12 помечен стрелкой. Закрываем диалоговое окно, выходим из режимов редактирования Envelope и Skin. Выделяем корпус (body – контрольная кость для модификатора Skin) и пробуем его немного подвигать. Если все было сделано правильно, то вместе с корпусом в пространстве будут двигаться ведущие колеса и ленивцы, а также верхние части траков, как бы растягиваясь вслед за ведущими колесами. Получился эффект, будто трак действительно лежит на ведущем колесе и ленивце (хотя траки прилинкованы в шасси), а опорные катки как бы прижимают нижнюю часть трака к земле. Остается посмотреть результат в игре. Если траки при движении будут вращаться в обратную сторону, идем в Material Editor в материал траков, в те же параметры, где изменяли Tiling материала траков, и меняем по очереди параметры U, V и W с 0 на 180 (обычно нужная координата U). Если параметр был изменен верный, то трак должен будет начать крутиться в правильную же сторону. При этом не должно быть перекоса текстуры. На этом изготовление траков закончено.
Создание анимации
Рассмотрим создание анимации на примере анимации старта Start. Для начала обратим наш взор в правый нижний угол редактора. Нажимаем кнопку Time Configuration, что отмечена на рисунке 13.
Рисунок 13.
Поскольку 30 стандартных кадров для анимации, выставленных по-умолчанию, может не хватить, в открывшемся окне счетчиком выставляем количество кадров с запасом, как показано на рисунке 14. Нажимаем ОК.
Рисунок 14.
Теперь выделяем базис и заходим в его параметры. Находим строку, определяющую отрезок кадров для анимации старта: Animation=start,body,10-50,60. Т.е. для анимации старта будут использоваться кадры анимации с 10-го по 50-й для группы анимации body. Нужно определить эту самую группу body. Идем в пункт Edit менюбара и жмем на пункте Edit Named Selection Sets. Появляется окно редактора групп. Остается создать там группу body и добавить к ней кость body. Аналогично создаются остальные группы (см. рис. 15).
Рисунок 15.
В нижней части редактора можно увидеть ползунок и шкалу кадров анимации. Нас интересует 10 кадр, т.к. он является начальным в анимации старта. Выставляем ползунок на 10-й кадр, как это показано на рисунке 16.
Рисунок 16.
Выделяем кость корпуса (если не выделена или выделение сбросилось). Нажимаем кнопку Set Keys , которая создаст первый кадр анимации и зафиксирует начальное положение кости корпуса. Затем переводим ползунок на 50-й кадр и опять нажимаем кнопку Set Keys, тем самым, создавая конечный кадр. Можно воспользоваться копированием (зажав Shift просто перетащить копию кадра на нужное место).
Примечание 5. Важно всегда создавать начальный и конечный (конечный в некоторых случаях создавать не нужно, например при анимации открытия люка) кадры при исходном положении кости, т.к. тогда не будет «скачков» модели (кости) при проигрывании разных видов анимации последовательно.
Теперь перемещаем ползунок в промежуток между 10-м и 50-м кадрами в любое место в передней части отрезка, например на 20-й кадр. Нажимаем переключатель Auto Key справа от кнопки Set Keys. При активации режима автозаписи кадра, полоска под ползунком станет красной. Теперь кадр будет записываться на отрезке каждый раз, как нами будет меняться положение кости. Выбираем инструмент перемещения и смещаем немного корпус вниз по оси Z. Затем инструментом поворота слегка наклоняем корпус назад, имитируя наклон корпуса при старте танка. При изменении положения корпуса на шкале анимации под ползунком должна появиться отметка. Кадр записан. Перемещаем ползунок вперед на несколько кадров. Теперь переместим корпус слегка вверх, как бы реакция подвески на стартовое проседание – выталкивание танка вверх. Кадр записался. Переместив ползунок еще вперед, опять перемещаем корпус слегка вниз. И так несколько раз, создавая эффект затухающих покачиваний после старта танка. Далее выходим из режима автозаписи кадров и, прокручивая ползунок вперед-назад, смотрим результат работы. При необходимости ключевые кадры анимации можно перемещать вдоль шкалы, пытаясь добиться максимально реалистичного результата. Записывать каждый кадр вручную нет необходимости. Достаточно лишь указать ключевые точки, «точки перегиба». Редактор сам сгенерирует положения костей в промежуточных кадрах, сделав это максимально плавно. Если не устраивает скорость изменения положения, можно самому задать амплитуду и кривую движения кости в редакторе кривых Mini Curve Editor. В конечном итоге должно получиться что-то вроде картинки, показанной на рисунке 17.
Рисунок 17.
Теперь экспортируем и смотрим в игре результаты. Если все правильно, танк при начале движения начнет наклоняться. Последняя цифра в параметрах анимации Animation=start,body,10-50,60 означает скорость проигрывания анимации. Подбираем оптимальную скорость (определяется опытным путем, изменяется от 0 до 100%). Остальная анимация создается аналогично. Вид мэшевой анимации (анимация вершин) создается примерно также. В параметрах кости вместо Poly прописывается CommonMesh, далее выделяются нужные вершины и так же изменяется их положение в пространстве с запись этого положения в кадр.
Дополнительные кости
Дополнительные кости – кости визоров, прицелов, дымовых эффектов. Как правило являются простейшими объектами пойнтами. При создании пойнтов ознакомьтесь с примечанием 3 пункта 1.8. Список минимально необходимых для модели дополнительных костей: Foresight3, Foresight4 и т.д. – пойнты прицелов, для каждого дополнительного вооружения должен быть свой прицел, линкуются к кости оружия; visor1 – главный визор танка, линкуется к башне либо к маске пушки; visor2 – визор механика-водителя, линкуется к корпусу; fxsmoke1 и fxsmoke2 – эффекты выхлопа двигателя, линкуются к корпусу; fxfire1 и fxfire2 – эффекты огня при возгорании танка, линкуются к корпусу, один у мотора, другой под башней; fxfire3 – эффект пламени из люка, линкуется в башне под основным люком; FXtraceR1 и FXtraceL1 – эффекты следов колес или траков, линкуются к шасси; FXtraceR2 и FXtraceL2 – эффекты выброса грязи с траков или колес, линкуются к шасси.
Создание волумов
Волум – объект взаимодействия в игре. Определяет физическую область занимаемого моделью пространства и ее физическую форму. Для создания волумов нужно исходить из нескольких простых правил. 1) Волум не обязательно должен точно повторять компонента модели, к которому прилинкован. Достаточно более-менее приблизительного совпадения граней. Слишком подробный волум будет съедать большое количество машиноресурсов, а слишком грубый не будет правильно отображать геометрические параметры объекта. 2) Волум должен быть выпуклым. Т.е. любой отрезок, проведенный между двумя любыми точками волума, должен лежать ВНУТРИ волума (если отрезок в плоскости грани – это тоже считается как внутри). Объясняя на пальцах, можно сказать, что в волуме, если взять два любых соседних граничащих треугольника, угол между этими треугольниками по границе не должен быть обращен внутрь волума. При создании волумов часто возникает ситуация, когда угол между треугольниками почти равен нулю. Можно попробовать удалить спорный участок (прилежащие треугольники), а затем произвести экспорт модели. Если при экспорте плагин не выдал ошибок выпуклости волума (Non convex), тогда причина была именно в этом участке. Далее можно пробовать разные варианты создания спорной грани (треугольников) до получения правильного результата. После создания правильной формы волума, конвертируем его в объект типа Editable Poly, заходим в режим редактирования полигонов Polygon, выделяем все грани, которые относятся, например, к лобовой части, и назначаем в свитке Polygon Properties счетчиком Set ID индекс 1. Таким образом, игра будет понимать, что данная область является лобовой частью модели и, при назначении параметров бронирования, присвоит значение именно как для лобовой поверхности. Остальные грани индексируются согласно схеме, приведенной на рисунке 18.
Рисунок 18.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|