Содержание главы ОГЛАВЛЕНИЕ 357 Глава 21: Основы использования Игрового ДвижкаСодержание главы Настройки физического движка Раздел Physics Раздел Scene Раздел Render Типы физических объектов Dynamic и Rigid Body Материалы для Игрового Движка Использование игровой физики в анимации Использование логических блоков Создание сцены Настройка объекта - актера Работа с логическими блоками Использование анимации в Играх Практика: Создание интерактивной сцены ОГЛАВЛЕНИЕ358 Как создать 3D-игру с помощью Blender? Как можно использовать физический движок Blender для создания анимации? Вы пытались создать реалистичный эффект падения домино в Blender используя лишь традиционные ключи анимации? Это будет очень трудной задачей. Используя возможности инструментов реального времени в Blender вы получите гораздо более качественный результат за меньшее время. В одном из самых кассовых фильмов прошлого года "2012" для создания реалистичных падающих и разрушающихся зданий, летящего мусора использовался физический движок Bullet . И именно Bullet используется в Blender для создания эффектов и расчетов взаимодействия объектов в реальном времени. Игровой движок Blender использует язык программирования Python Можете ли вы создавать отличные игры без знания Python ? Определенно "Да", но если вы захотите достичь более профессионального уровня, знание Python будет необходимо. В Интернет есть большое количество хорошей документации для изучения Python ОГЛАВЛЕНИЕ Содержание главы 359
Настройки физического движка Давайте для примера создадим реалистичную анимацию падения шара с помощью физического движка. Первое что для этого нужно будет сделать - создать сцену. Для этого примера я создал простую сцену с UV-Сферой в 4 юнитах над Плоскостью. Помните, что в этой сцене будет гравитация и взаимодействие между объектами. Поэтому объекты должны располагаться как в реальной жизни, плоско из вида спереди, относительно глобальных осей координат. Теперь мы можем можем включить анимацию реального времени. Когда я первый раз посмотрел на Blender 2.6 я не мог понять как и где сделать объект действующим лицом анимации ( actor ), так сильно изменился интерфейс! Вот что вам нужно будет для этого сделать: Для включения Игрового Движка Blender обратите внимание на панель в верхней части окна Blender и найдите выпадающее меню с выбором Движка Рендера По умолчанию здесь будет значение " Blender Render ", измените его на " Blender Game ". После этого изменится набор параметров во многих раздела Окна Свойств, дав доступ к параметрам настройки игрового движка. Нас будут интересовать параметры в 3-х из них: Содержание главы ОГЛАВЛЕНИЕ 360
Раздел PhysicsВ разделе Physics вы управляете Объектами-Актерами ( Actors) вашей анимации реального времени. По умолчанию все объекты Статичны (" Static"), что означает что они не взаимодействуют с параметрами физического движка. Они могут выполнять действия, назначаемые им с помощью логических блоков, но ничего более. Два других типа - " Dinamic" и " RigidBody" мы рассмотрим чуть позже. С помощью опции " Invisible" вы можете сделать какие то из объектов невидимыми. Два других важных параметра в этом разделе это " Radius ", который определяет размер области взаимодействия вокруг объекта-актера, и " CollisionBounds ", который позволяет задать форму области взаимодействия, отличную от шара. Все это мы более подробно рассмотрим чуть позже. Раздел SceneНаиболее важным параметром в этом разделе является " Gravity". По умолчанию этот параметр имеет значение соответствующее гравитации на земле. Но что если вы создаете сцену в космосе где гравитация не имеет значения? Тогда вам нужно будет установить этот параметр в значение 0.000 либо близкое к нему. Возможно вы захотите создать игру, где объекты будут притягиваться к чему то по оси X , эти параметры так же нужно будет настроить здесь. Содержание главыОГЛАВЛЕНИЕ361 Раздел Render Как и при выполнении рендера изображения, именно здесь вы включаете игровой движок. Вы можете нажать на кнопку " Start " или использовать клавишу " P ". Конечным результатом создания игры, обычно, является создание standalone- приложения (приложения, не зависящего от Blender). Это потребует сохранить сцену, как независимое приложение, способное запускать само себя. Здесь вы можете настроить параметры запуска такого приложения: размер окна игры, глубину цвета, скорость игры в кадрах в секунду и эффекты при переходе в полноэкранный режим. Поскольку в играх очень активно используются звуковые эффекты здесь присутствуют параметры воспроизведения звуков во время игры. Теперь самое время назначить физические параметры для сферы. Но сначала давайте добавим в сцену Конус. Конус выступит в роли дефлектора, чтобы падение шара было более сложным и интересным. Переключитесь в режим сплошного затенения и выберите UV-Сферу. Слегка поверните ваш вид, чтобы вы могли видеть, Содержание главы ОГЛАВЛЕНИЕ 362
что будет происходить при назначении физических параметров объектам. Мы хотим увидеть как шар будет падать и ударяться об объекты. Для этого перейдем в раздел Physics в Окне Свойств и сделаем некоторые настройки. Измените тип физических расчетов для UV-Сферы на " Dynamic ". Если вы переключитесь в каркасный ( wireframe ) режим отображения объектов и уменьшите размер сферы, то увидите небольшой пунктирный круг. Этот круг представляет собой активный размер объекта- актера и взаимодействия будут просчитываться в соответствии с этим размером. Вам нужно будет изменить параметр " Radius " для соответствия активной физической области размерам UV-Cферы. Если окружность будет больше Сферы, при запуске игрового движка Сфера зависнет над поверхностью и никогда ее не коснется. Игровой движок ожидает, что размер объекта-актера (его радиус) будет равен единице, чего в действительности практически никогда не происходит. Если вы уменьшите радиус объекта-актера и активной области, взаимодействия по прежнему могут работать неправильно. Использование команды Ctrl -"A" и сброс параметров Scale и Rotation обычно решают эту проблему. Содержание главы ОГЛАВЛЕНИЕ 363
Теперь давайте проверим созданную нами физическую систему. Переключите режим отображения объектов обратно в Сплошной ( Solid ). Наведите курсор мыши на окно 3D-вида и нажмите клавишу " P ". Blender переключится в режим работы игрового движка. Шар должен начать падать и удариться о конус. Но взаимодействие будет не очень реалистичным. Если вы разместили Сферу точно над Конусом, то ваш шар, вероятно, будет отскакивать от его вершины! Если такое происходит, слега переместите Конус и запустите игровой движок еще раз. Теперь Шар ударяется о Конус и скользит вниз по его грани. Но при этом Шар не вращается, как это происходит в реальности. Для выхода из режима работы игрового движка нажмите клавишу " Esc ". Типы физических объектов Dynamic и Rigid Body Объект-актер типа Dynamic участвует в сцене как физический объект, может падать и отскакивать, реагирует на действие сил но не ведет себя как настоящее твердое тело ( rigid body ). Такого типа объекты хорошо подходят для игр, где вам нужно ехать или идти по лабиринту. Объекты же с типом Rigid Body будут вести себя как настоящие твердые предметы в реальном мире. Они будут вращаться и отклоняться при взаимодействии с другими объектами. Такие объекты пригодятся при создании игр, но более полезны при создании анимации разрушающейся кирпичной стены и отскакивающих объектов. Содержание главы ОГЛАВЛЕНИЕ 364
Давайте изменим тип физического объекта для UV-Сферы на " Rigid Body " и проверим получившийся результат, нажав клавишу " P ". Теперь шар должен упасть и покатиться по плоскости, после чего свалиться в "ничто". Нажмите клавишу " Esc " для выхода из режима работы игрового движка. Попробуйте поэкспериментировать с таким параметром как Mass (Масса). Как и в реальном мире, при столкновении двух объектов разной массы, один будет испытывать на себе более мощный эффект чем другой. Не смотря на то, что мы изменили физический тип сферы на " Rigid Body " у нас по прежнему присутствует Радиус активной области объекта и расчет поведения объекта производится в соответствии со значением параметра Radius Если вы удалите Сферу и вместо нее добавите Куб (назначив ему тип Rigid Body ), он будет падать и катиться в точности как Шар. Для исправления такого поведения вам потребуется активировать панель " Collision Bounds " и выбрать тип границы. Тип " Box " отлично подойдет для кубического объекта, в то время как " Convex Hull " и " Triangle Mesh " подойдут для более сложных форм. Для определения лучшего типа для вашего объекта необходимо экспериментировать. Содержание главы ОГЛАВЛЕНИЕ 365
При просмотре вашей физической модели в действии вы можете заметить некоторые недочеты в поведении и взаимодействии объектов. Например, шар может слегка пробуксовывать либо наоборот проскальзывать. Он может слишком сильно отскакивать и слишком много вращаться в воздухе, либо наоборот, слишком мало. У нас есть два места где мы можем регулировать параметры, влияющие на такое поведение. Первое - это раздел Physics . Здесь на панели Physics вы найдете блок Damping . Слайдер " Translation " изменяет степень проскальзывания в направлении движения (подобно скольжению на льду), в то время как слайдер " Rotation " изменяет сопротивление вращению. Эти два параметра мы рассмотрим более подробно при разговоре о создании игры. Вторым местом, где расположены параметры, влияющие на поведение объектов в игровом движке, является раздел Materials . Добавьте материал для Сферы и найдите панель Physics с настройками физических параметров. Если вы хотите сделать что-то "прыгучим", увеличьте значение слайдера " Elasticity ", параметр " Friction " будет управлять степенью трения либо степенью проскальзывания объекта. Здесь вы так же можете применить силы и степень затухания. Для правильной работы этих параметров материалы следует накладывать на оба взаимодействующих объекта (например, Эластичность следует настраивать как на Сфере так и на Плоскости). Содержание главы ОГЛАВЛЕНИЕ 366
Материалы для Игрового ДвижкаНекоторые вещи, работающие при рендере, не будут работать в игровом движке, но некоторые работают в обоих случаях. Например, стандартная текстура-изображение будет работать и в игровом движке, но многие параметры ее настройки работать не будут. В последних версиях Blender над текстурами для игрового движка была проведена большая работа и мы с вами рассмотрим некоторые из нововведений чуть позже, в разделе об UV-развертках. Пока мы будем использовать стандартные цвета материала из панели Diffuse. Для того, что бы увидеть как ваши объекты будут выглядеть во время игры, переключите режим отображения объектов с "Solid " на " Textured ". Либо нажмите клавишу " P " и вы увидите как будут выглядеть объекты после сохранения игры. Следующая часть рассказывает об использовании игрового движка для получения анимаций. В рамках такого способа использования игрового движка вы можете работать с материалами как и раньше, конечная обработка изображения будет проводиться стандартным рендером. Содержание главыОГЛАВЛЕНИЕ367 Использование игровой физики в анимации У нас есть шар, падающий на конус и катящийся по плоскости. Все отлично работает при нажатии клавиши " P ". Но что, если вы хотите использовать такое поведение объектов в анимационном видео? Если вы сейчас нажмете Alt -"A" на экране ничего не будет происходить. Все потому, что взаимодействия и поведения объектов не были записаны в кривые анимации ... пока не были! Запись игровой физики в кривые анимации очень простой процесс. Для записи разверните сверху меню " Game " и выберите опцию " Record Animation ". Это включит функцию записи поведения объектов во время работы игрового движка. Теперь нажмите клавишу " P ", дождитесь пока в сцене произойдет все что вам нужно, затем, нажмите клавишу Esc для выхода. Зайдите еще раз в меню " Game " и выключите опцию " Record Animation ". Поведение объектов было записано и теперь нам нужно работать с ними как с обычной анимацией. Для этого переключите режим рендера с " Game Engine " на " Blender Render " (так же на верхней панели в выпадающем меню). Содержание главы ОГЛАВЛЕНИЕ 368
Давайте проверим записанную анимацию. Переключите режим организации рабочего пространства с " Default " на " Animation ". Вы должны видеть кривые анимации в окне Редактора Кривых. Нажмите Alt -"A" для просмотра записанной анимации. Теперь вы можете работать с вашей сценой как с любой другой анимацией, включая настройки материалов и наложение текстур. Всегда отключайте опцию " Record Animation " после окончания записи поведения объектов в игровом движке. Если вы случайно забудете про нее и оставите включенной, при повторном нажатии клавиши " P " все ранее записанные кривые анимации будут переписаны заново! Единственной проблемой такого способа создания анимаций объектов может стать скорость их движения. Обычно игровой движок просчитывает движения объектов с большой частотой кадров ( FPS ), и при воспроизведении на скорости 25 или 30 кадров в секунду движения кажутся очень медленными. Есть несколько способов исправить этот недочет: Содержание главы ОГЛАВЛЕНИЕ 369
Способ 1-й: Пересчитать тайминг в разделе Render.В Окне Свойств перейдите в раздел Render и на панели Dimensions найдите параметры " Old" и " New". Если вам нужно чтобы видео воспроизводилось в два раза быстрее, установите параметр " New" в значение 50 (имеется ввиду 50%) и назначте последний кадр анимации в два раза ближе к началу. Если же вам нужно замедлить анимацию, скажем в два раза, используйте для параметра " New " значение 200 и установите параметр конечного кадра анимации в два раза дальше от начала. Способ 2-й: Масштабировать ключи анимации в окне Диаграммы Ключей.Другой метод - выделить все ключи анимации в окне Диаграммы Ключей ( DopeSheet) имасштабировать их по оси X (клавиша " S" и " X" - затем двигайте мышь вправо). Содержание главыОГЛАВЛЕНИЕ370 Использование логических блоков Мы с вами поговорили об использовании физического движка для создания анимации. И вот пришло время поговорить о создании Анимации Реального Времени, как например виртуальная прогулка по зданию и да, об играх. Создание сцены Создайте новую сцену, добавьте в сцену Плоскость. Расположите ее так, чтобы Куб располагался прямо на ней. Нажмите клавишу " N " и откройте Панель Трансформаций, измените масштаб Куба по оси X до значения 0.200. Мы используем этот объект как кусок стены. Выделите Плоскость и там же, в Панели Трансформации, измените масштаб по осям X и Y до значения 10.000. Это будет наш пол. Теперь добавьте в сцену UV-Сферу и перейдите в Режим Редактирования. Выделите только одну вершину из вида сверху, как показано на иллюстрации слева, и с помощью клавишу " G " вытяните ее вперед. Этот "Нос" будет определять направление "вперед" когда мы сделаем Сферу объектом-актером и будем управлять ее движением с помощью клавиш. Содержание главы ОГЛАВЛЕНИЕ 371
Убедитесь, что Сфера находится немного над Плоскостью и не касается ее. Плотное расположение объектов может привести к коллизии при запуске игрового движка и объекты будут вести себя не так, как вы ожидаете. Мы создали с вами основу сцены, добавили материалы каждому объекту и задали цвет на панели Diffuse для каждого из них. Сейчас у вас должно быть что то, напоминающее сцену на иллюстрации справа. перейти в каталог файлов |