Blender 3d игры. Изучаем Blender Game Engine. Управление кубом с помощью клавиш курсора

Blender – программа для создания анимированной компьютерной графики и производства видео. Это по сути 3D-редактор, который поддерживается многими пользователями благодаря открытому исходному коду. Но на данном 3D-редакторе, благодаря встроенному игровому движку "Blender Game Engine", можно создавать и игры любого типа, направленности и жанра. Как оказывается, игры на нём можно создавать не прибегая к скриптовому языку, который, кстати, имеется (Python) для некоторых потребностей. Утверждают, что игры на нём можно создавать за пять минут. Имеются справки и руководства как по пользованию, так и по созданию игр. Можно ещё рассчитывать на большое комьюнити пользователей Blender’а, к которым можно обратиться за помощью. 3D-графика обладает всеми наворотами OpenGL, различные высокие разрешения, поддержка практически всех популярных аудио и видео форматов.

Поддерживаются все основные форматы 2D графики: TGA, JPG, PNG, OpenEXR, DPX, Cineon, Radiance HDR, Iris, SGI Movie, IFF, AVI и Quicktime GIF, TIFF, PSD, MOV и пр.

Поддерживаются все основные форматы 3D графики: 3D Studio, AC3D, COLLADA, FBX Export, DXF, Wavefront OBJ, DEC Object File Format, DirectX, Lightwave, MD2, Motion Capture, Nendo, OpenFlight, PLY, Pro Engineer, Radiosity, Raw Triangle, Softimage, STL, TrueSpace, VideoScape, VRML, VRML97, X3D Extensible 3D и пр.

Имеется возможность использовать физический движок Bullet Physics Library. Графика в играх может быть любой сложности, зависит от ваших умений. Программа абсолютно бесплатна.

Для операционных систем: Windows 2000, XP, Vista, Mac OS X (PPC и Intel), Linux (i386), Linux (PPC), FreeBSD 5.4 (i386), SGI Irix 6.5, Sun Solaris 2.8 (sparc).




Graphical logic editor for defining interactive behavior without programming. Collision detection and dynamics simulation now support Bullet Physics Library. Bullet is an open source collision detection and rigid body dynamics library developed for Play Station 3. Shape types: Convex polyhedron, box, sphere, cone, cylinder, capsule, compound, and static triangle mesh with auto deactivation mode. Discrete collision detection for RigidBody simulation. Support for in-game activation of dynamic constraints. Full support for vehicle dynamics, including spring reactions, stiffness, damping, tyre friction etc. Python scripting API for sophisticated control and AI, fully defined advanced game logic. Support all OpenGLTM lighting modes, including transparencies, Animated and reflection-mapped textures. Support for multimaterials, multitexture and texture blending modes, per-pixel lighting, dynamic lighting, mapping modes, GLSL vertexPaint texture blending, toon shading, animated materials, support for Normal Maping and Parallax Mapping. Playback of games and interactive 3D content without compiling or preprocessing. Audio, using the SDL toolkit. Multi-layering of Scenes for overlay interfaces.

Статья будет полезна начинающим разработчикам игр. В ней мы рассмотрим преимущества и способы создания и рендеринга трёхмерных объектов для изометрических 2D-игр на примере Blender. В статье не будет каких-то сложных операций, достаточно начальных знаний 3D-редактора. Для примера рендеринга и анимации я взял башню из Dune2, и, чтобы ей было не так скучно одной, дополнил двумя постройками из Desert Strike.

Преимущества такого подхода по сравнению с отрисовкой в 2D : скорость и удобство создания анимаций, простота модернизации моделей (например, для создания апгрейдов зданий), достаточно хорошие результаты при низких затратах времени.

Недостатки : снижение «душевности» изображений и, собственно, необходимость знания 3D-моделирования.

Начало работы, подготовка сцены

По умолчанию «пустой» файл Blender создается с тремя объектами: камерой, источником света и кубиком в центре. Начнём настройку с камеры, в её свойствах переключимся с режима Perspective на Orthographic, затем укажем для неё в панели Properties следующие параметры:

Transform
X: 12.0
Y: -12.0
Z: 12.0

(как видите, координаты имеют вид N, -N, N, при этом N может быть любым, ведь у нас ортогональная камера)

Rotation
X: 54.8°
Y: 0°
Z: 45°

Если всё сделано правильно, то взглянув теперь на сцену через камеру (для этого нужно нажать Num0 ), мы увидим наш кубик в изометрии.

Попробовав отрендерить (F12 ) первую изометрическую пробу, вы убедитесь, что грани куба освещены очень неравномерно. Займемся же светом! Во-первых, в свойствах мира (вкладка World) включим Ambient Occlusion и укажем для него нужное значение Factor (в примере установлено 0.5). Во-вторых, сменим тип источника света с Point на Sun. Это нужно, чтобы все тени были направлены в одну сторону и не зависели от положения объекта относительно источника света.


Пример рендера с источником света Point


Пример рендера с источником света Sun

Кстати о тенях, не повторяйте моей ошибки! Если вы по какой-то причине хотите, чтобы все игровые объекты находились на одной сцене и рендерились одновременно (например, чтобы не склеивать spritesheet из отдельных изображений), то следите за тем, чтобы друг на друга они никак не влияли и их тени и освещение (неоновые вывески, фонари и т.д.) не перекрывали другие объекты. На изображении в начале статьи заметно, что тень от башни падает на дозорную вышку.

Кубики наши рендерятся на некрасивом сером фоне, который конечно же нужно отключить, чтобы не мучаться потом с вырезанием фона объектов. Для этого во вкладке Render найдите раздел Shading и измените режим Alpha со Sky на Transparent (если вы используете рендер Blender Render) или поставьте галочку Transparent в разделе Film (в Cycles Render).

С настройкой мы закончили, перейдём к созданию объектов, например, той самой башни. Думаю, не стоит подробно рассматривать процесс её моделирования, сразу воспользуемся теми самыми преимуществами, которые дает нам трехмерный объект.


Башня бодро вращается

Во многих стратегиях используется визуальное отображение строительства зданий: сначала возводится фундамент, затем стены и так далее. Попробуем сделать что-нибудь подобное. Выделим все объекты в сцене (A ), затем дублируем их (Shift-D ) и переместим во второй слой (M и выбрать нужный слой). Операцию можно повторять столько раз, сколько нам нужно фаз строительства. Перейдём во второй слой и «разрушим» башню.


Повторим нужное количество раз, et voila!

Постпроцессинг

В начале статьи среди недостатков такого подхода я упомянул отсутствие ощущения «ламповости». К счастью, его можно частично вернуть, воспользовавшись постпроцессингом и встроенным в Blender движком Freestyle. Не буду рассматривать его подробно, просто покажу, на что он способен.


Примеры работы Freestyle

Надеюсь, я доказал, что создание элементов для двухмерных игр в «трехмерье» во многих случаях быстрый и удобный процесс. Спасибо за внимание!

Статья будет полезна начинающим разработчикам игр. В ней мы рассмотрим преимущества и способы создания и рендеринга трёхмерных объектов для изометрических 2D-игр на примере Blender. В статье не будет каких-то сложных операций, достаточно начальных знаний 3D-редактора. Для примера рендеринга и анимации я взял башню из Dune2, и, чтобы ей было не так скучно одной, дополнил двумя постройками из Desert Strike.

Преимущества такого подхода по сравнению с отрисовкой в 2D : скорость и удобство создания анимаций, простота модернизации моделей (например, для создания апгрейдов зданий), достаточно хорошие результаты при низких затратах времени.

Недостатки : снижение «душевности» изображений и, собственно, необходимость знания 3D-моделирования.

Начало работы, подготовка сцены

По умолчанию «пустой» файл Blender создается с тремя объектами: камерой, источником света и кубиком в центре. Начнём настройку с камеры, в её свойствах переключимся с режима Perspective на Orthographic, затем укажем для неё в панели Properties следующие параметры:

Transform
X: 12.0
Y: -12.0
Z: 12.0

(как видите, координаты имеют вид N, -N, N, при этом N может быть любым, ведь у нас ортогональная камера)

Rotation
X: 54.8°
Y: 0°
Z: 45°

Если всё сделано правильно, то взглянув теперь на сцену через камеру (для этого нужно нажать Num0 ), мы увидим наш кубик в изометрии.

Попробовав отрендерить (F12 ) первую изометрическую пробу, вы убедитесь, что грани куба освещены очень неравномерно. Займемся же светом! Во-первых, в свойствах мира (вкладка World) включим Ambient Occlusion и укажем для него нужное значение Factor (в примере установлено 0.5). Во-вторых, сменим тип источника света с Point на Sun. Это нужно, чтобы все тени были направлены в одну сторону и не зависели от положения объекта относительно источника света.


Пример рендера с источником света Point


Пример рендера с источником света Sun

Кстати о тенях, не повторяйте моей ошибки! Если вы по какой-то причине хотите, чтобы все игровые объекты находились на одной сцене и рендерились одновременно (например, чтобы не склеивать spritesheet из отдельных изображений), то следите за тем, чтобы друг на друга они никак не влияли и их тени и освещение (неоновые вывески, фонари и т.д.) не перекрывали другие объекты. На изображении в начале статьи заметно, что тень от башни падает на дозорную вышку.

Кубики наши рендерятся на некрасивом сером фоне, который конечно же нужно отключить, чтобы не мучаться потом с вырезанием фона объектов. Для этого во вкладке Render найдите раздел Shading и измените режим Alpha со Sky на Transparent (если вы используете рендер Blender Render) или поставьте галочку Transparent в разделе Film (в Cycles Render).

С настройкой мы закончили, перейдём к созданию объектов, например, той самой башни. Думаю, не стоит подробно рассматривать процесс её моделирования, сразу воспользуемся теми самыми преимуществами, которые дает нам трехмерный объект.


Башня бодро вращается

Во многих стратегиях используется визуальное отображение строительства зданий: сначала возводится фундамент, затем стены и так далее. Попробуем сделать что-нибудь подобное. Выделим все объекты в сцене (A ), затем дублируем их (Shift-D ) и переместим во второй слой (M и выбрать нужный слой). Операцию можно повторять столько раз, сколько нам нужно фаз строительства. Перейдём во второй слой и «разрушим» башню.


Повторим нужное количество раз, et voila!

Постпроцессинг

В начале статьи среди недостатков такого подхода я упомянул отсутствие ощущения «ламповости». К счастью, его можно частично вернуть, воспользовавшись постпроцессингом и встроенным в Blender движком Freestyle. Не буду рассматривать его подробно, просто покажу, на что он способен.


Примеры работы Freestyle

Надеюсь, я доказал, что создание элементов для двухмерных игр в «трехмерье» во многих случаях быстрый и удобный процесс. Спасибо за внимание!

Издание второе, переработанное и дополненное


Данный урок расскажет вам, как с нуля (ну, в Blender, естественно) создать простую трехмерную игру. Совершенно без какого-либо программирования на языках, хотя это возможно. Вам необходимо иметь базовые знания о Blender. Я рассчитываю на то, что вы уже неплохо разбираетесь в интерфейсе, и на мелочах вроде наведения курсора, нажатия левой кнопки мыши, отпускания левой кнопки мыши, нажатия и отпускания кнопки G для перемещения и последующего щелчка и т.п. я задерживаться не буду.

Для тех, у кого индивидуальная непереносимость русского перевода:

Русские картинки
Английские картинки


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

Далее вы можете сделать удобный вам интерфейс, но в Blender уже всё заготовлено. Выбрав макет «Game Logic», вы получите удобный интерфейс.

Включите режим отображения Текстура (Texture), чтобы игра выглядела как нам надо.


Запустить игру вы можете, наведя курсор на нужный 3D-вид (если вы успели сделать их несколько) и нажав P (английскую, по-русски З, между Щ и Х:)). Можно запустить игру и через меню Игра - Запустить игровой движок (Game - Start Game Engine). Если вы попробуете запустить игру сейчас, то ничего интересного не произойдёт, будет лишь серый кубик на сером фоне. Нажмите Esc, чтобы выйти из игры. Но это не поможет, если вы задействуете в игре эту клавишу, так то будьте осторожны;)

Перед запуском игры вы можете нажать Shift+Пробел или Ctrl+Вверх/Вниз, чтобы развернуть окно, над которым находится курсор, во весь экран и чтобы не проверять игру на маленьком, еле-заметном 3D-окошке. Также вы можете нажать T или N, чтобы скрыть левую и правую панель 3D-вида соответственно.

Вы можете спрятать «мусор» вроде пустышек, 3D-курсора, сетки и пр., нажав N (предварительно наведя курсор на 3D-вид) и в появившейся панели во вкладке Отображение (Display) выбрав Только визуализируемое (Only Render). При этом фон изменит цвет на тот, что установлен в настройках мира (World).


В этой же панели через меню Затенение (Shading) вы можете включить GLSL вместо мультитекстурного, позволяющий делать более красивую графику (например, тени).

Создание материалов для игры в целом совпадает с созданием для Blender Internal Render (пока что это рендер по умолчанию, но скоро его заменит Cycles), но есть ограничения. Например, не работают все процедурные текстуры, трассировка лучей (и, как следствие, нет теней у некоторых ламп), гало. Рекомендуется создавать UV-текстуры. Нет частиц, но их можно имитировать с помощью большого количества объектов (нет, копировать вручную не надо; их добавление во время игры рассматривается ниже). Без GLSL ограничений ещё больше, а освещение совсем уже некрасивое.

Статьи по теме: