Você está na página 1de 162

Prefcio

Bem vindos!
Apesar de sabermos o quo trabalhoso pode ser o processo de desenvolvimento de um game,
temos, no Blender Game Engine, a possibilidade de transform-lo em uma atividade muito divertida. O
Blender uma ferramenta completa que nos permite criar aplicaes interativas 3D de diversos tipos
como: Apresentaes 3D, Portflios Interativos, Aplicaes para projeo 3D estreo em Domo e,
claro, Games. Tudo isso com muita rapidez e sem escrever uma nica linha de cdigo em linguagem
de programao.
Esta apostila objetiva ser o seu guia e material de consulta nas aulas ministradas na SEVEN GAME
para o mdulo de Blender Game Engine. Ela foi organizada em 16 captulos, cada um relativo a um
tema abordado. Se voc j um usurio de Blender/Blender Game Engine, ou concluinte do mdulo,
pode consult-la no sequencialmente; mas, se estiver iniciando agora, aconselhvel acompanh-la
durante o prosseguimento das aulas para melhor assimilao dos contedos.
Ao final existe um glossrio com referncias a palavras estrangeiras incomuns e expresses
especficas do ambiente e da comunidade Blender.
Esperamos que vocs se divirtam! E Keep Bleeding!

Runas 2.0 por Vitor Balbio

Livro Blender.indb 1

11/02/2012 12:51:10

Sumrio
Captulo 1 - Apresentao do Blender e BGE
O que o Blender?...........................................................................8
Ferramentas....................................................................................11
Blender Game Engine.....................................................................14
Baixando e Instalando o Blender....................................................19
Captulo 2 - Iniciando com Blender
Interface..........................................................................................24
Seleo...........................................................................................28
Cmeras e Transformaes............................................................29
Transformaes de Objeto..............................................................30
Parentando Objetos........................................................................32
Adicionando Primitivas...................................................................33
Captulo 3 - Iniciando com Blender Game Engine
Game Engines.................................................................................36
Blender Game Engine.....................................................................38
Captulo 4 - Introduo a Programao Visual e Logic Bricks
Softwares de Computador e Linguagens de Programao...........46
Algortmos em Fluxogramas...........................................................49
Programao Visual........................................................................50
Captulo 5 - Introduo Logic Bricks II
Workflow Para Desenvolvimento em BGE e Logic Bricks..............56

Livro Blender.indb 2

11/02/2012 12:51:10

Captulo 6 - Bricks Bsicos


Sensores Always, Keyboard e Mouse............................................66
Controlador AND.............................................................................68
Atuador Motion...............................................................................69
Captulo 7 - Aprofundando em Sensores e Controladores
Aprofundando em Sensores...........................................................72
Aprofundando em Controladores...................................................75
Captulo 8 - Fsica
A Fsica nos Games........................................................................80
A Fsica da BGE - Bullet Engine......................................................82
Bounds............................................................................................88
Captulo 9 - Fsica 2
Constraints......................................................................................92
Fsica do Mundo.............................................................................94
Captulo 10 - Sensores
Lista de Sensores............................................................................98
Captulo 11 - Properties
O que so properties ?.................................................................108
Captulo 12 - Atuadores
Atuadores......................................................................................118

Livro Blender.indb 3

11/02/2012 12:51:11

Captulo 13 - Aprofundando em Logic Bricks


Logic Bricks Compartilhados........................................................132
States............................................................................................133
Captulo 14 - AssetManagement
Append e Link de arquivos .blend................................................138
Formatos externos padres..........................................................139
Dicas de Resoluo de Problemas...............................................140
Captulo 15 - Introduo a BGE API
Python na BGE..............................................................................144
Captulo 16 - Finalizando um Game
Gerando executveis....................................................................152
Paths e Pack de Texturas.............................................................153
Captulo Bonus - Materiais
Shaders.........................................................................................158
Shaders na BGE............................................................................159
Node Editor...................................................................................161

Livro Blender.indb 4

11/02/2012 12:51:11

B l e n d e r
C a p t u l o
A p r e s e n t a o

Livro Blender.indb 5

d o

B l e n d e r

B G E

11/02/2012 12:51:11

B l e n d e r

Captulo 1 - Apresentao do Blender e BGE


Neste captulo aprenderemos: o que Blender; a Blender Game
Engine; a sua histria, filosofia e viso geral das suas ferramentas.

O que o Blender?

www.blender.org

Blender um software, Open Source e Multiplataforma que prov


solues de Modelagem, Animao, Texturizao, Renderizao,
Composio e Edio para produo de imagens e vdeos. Alm
disso, integrado a seu core uma Game Engine para produo de
aplicaes Interativas 3D diversas, incluindo games.
Foi concebido inicialmente, entre 1995 e 1998, por Ton
Roosendaal, como uma soluo indoor do Studio NeoGeo e,
posteriormente, da a NaN (Not a Number), Empresa tambm criada
por Ton. Seu objetivo inicial era criar uma ferramenta de qualidade
profissional e torn-la acessvel ao pblico em geral, visto que, num
mercado em expanso, os softwares comerciais, como o Autodesk
3Dmax R2 e o Alias Maya em sua verso 1.0 (tambm adquirido
em 2005 pela Autodesk) tornaram-se financeiramente inacessveis
para estudantes e para pequenos estdios.

Blender 2.04
6

Livro Blender.indb 6

11/02/2012 12:51:11

A p r e s e n t a o

d o

B l e n d e r

B G E

Ento, no ano 2000, foi lanada a verso 2.0 do Blendercom, com


diversos novos features, assim como a integrao de sua Game
Engine. Surgiu ali a primeira verso do Blender Game Engine, com
proposta de desenvolvimento para PC e Playstation2. Em 2001,
devido a problemas financeiros, a NaN, ainda a principal fonte de
desenvolvimento e financiamento para o Blender, encerrou suas
atividades, ameaando a continuidade do Programa. Porm, j era
grande o entusiasmo dos usurios em relao ferramenta, tanto
os da NaN, quanto a grande comunidade externa que j comeava
a se formar. Deste modo, Ton decidiu criar uma organizao sem
fins lucrativos, para gerir e dar continuidade ao desenvolvimento do
software. Surgiu, ento, em maro de 2002, a Blender Foundation.
Em julho do mesmo ano, os investidores da j enfraquecida NaN,
proprietrios dos direitos autorais do Blender, que apesar de
liberados sob licena freeware ainda possuam copyright da NaN,
propem a Ton que fosse levantado a quantia de 100.000 (cem mil
euros) para ceder os direitos autorias do software para a comunidade
e, por conseguinte, liber-lo como um software Open Source, sob
licena GNU GPL, numa quantia realmente considervel. Devido
ao grande entusiasmo da comunidade pela proposta de ter uma
ferramenta profissional sob licena Open Source, incrivelmente,
em apenas 7 semanas, foi arrecadado o valor requerido pelos
investidores e, em 13 de outubro de 2002, foi lanado sob licena
Open Source a verso 2.2 do Blender. Desde ento, at dezembro
de 2011, j tivemos 27 verses estveis lanadas. E l se vo 17
anos de desenvolvimento.

O Blender conta atualmente de 60 a 70 desenvolvedores ativos


de toda parte do mundo e mais de 200 desenvolvedores ocasionais,
adicionando novos features, corrigindo bugs e tornando o Blender
o melhor, mais robusto e mais completo software de criao 3D
Open Source da atualidade, sendo uma das melhores ferramentas
7

Livro Blender.indb 7

11/02/2012 12:51:11

B l e n d e r

profissionais all-in-one para produo de contedos 3D. Sua


comunidade de aproximadamente 50.000 usurios ativos de
todo mundo, que participam, online, de fruns etc., com inmeros
outros profissionais e entusiastas. Em outubro de 2011, o principal
frum da comunidade Blender, o BlenderArtist.org, possua mais
de 95 mil usurios cadastrados e, aproximadamente, 2 milhes de
posts. Ela possui uma posio de destaque no Brasil, por ser uma
das suas comunidades mais antigas e participativas.
O Blender se caracteriza principalmente pelo fato de ser um
software feito de artistas para artistas. Isso fica evidente na sua
origem, quando criado e utilizado pela NaN como soluo para o
desenvolvimento de seus prprios contedos em 3D. Tal filosofia
no se alterou desde ento. Seu workflow foi desenvolvido
para que se tirasse o maior proveito possvel do ambiente de
produo. O uso extensivo de hot keys e um sistema de controle
Mouse+Teclado eficiente permitem que modelos complexos sejam
criados de forma muito produtiva. Sua interface, recentemente
completamente remodelada, totalmente customizvel e todos
os features no Blender so projetados e desenvolvidos, devido a
necessidades do artista no ambiente de desenvolvimento. Para
as funes que no so implementadas nativamente, o Blender
disponibiliza uma poderosa e flexvel API de programao para
criao de ferramentas e add-ons de todos os tipos, centenas
destes podem ser obtidos em seu repositrio oficial ou nas
comunidades agregando novos importers/exporters, ferramentas
de modelagem, animao, renderizadores externos entre outros.

Interface do Blender reformulada com a srie 2.5x 2)

Livro Blender.indb 8

11/02/2012 12:51:11

A p r e s e n t a o

d o

B l e n d e r

B G E

Ferramentas
O Blender agrega diversas ferramentas necessrias no workflow
para produo 3D de imagens, vdeos e aplicaes interativas,
incluindo games. Devido extensa quantidade de ferramentas
disponveis, iremos agora listar apenas alguns dos principais
features do Blender.

Modelagem e Texturizao

Modelo criado por Dono

Modelagem baseada em Polgonos,


B-spline,Curvas, Metaballs e Vector Fonts.;

NURBs,

Bezier,

Subdiviso baseada em Catmull-Clark;


Sculpt baseado em multiresolution subdivision com diversos
Brushes procedurais;
Modificadores;
Soft Selection para modelagem orgnica.;
UV unwrapping automtico baseado em ngulos;
Edio de UVs com Transformaes Interativas em tempo real;
UV unwrapping baseado em Seams;
9

Livro Blender.indb 9

11/02/2012 12:51:11

B l e n d e r

Mltiplos UV Layers;
Minimizador automtico de stretch.

Rigging e Animao:
Pintura interativa de Weighmaps;
Deformao baseadas Quartenion;
Deformao Volumtrica baseada em estrutura de grade;
Bone Layers;
IK/FK Solver;
Constraints baseados em cdigo Python;
Editor No Linear de aes;
Walkclycle automtico por caminho baseado em spline;
Morphing/Shape Keys animation;
Efeitos procedurais de animao;
Efeitos de Fsica como Fluidos, Gases, Rigid Body e Soft Body.

Sintel Open Movie http://www.sintel.org


10

Livro Blender.indb 10

11/02/2012 12:51:11

A p r e s e n t a o

d o

B l e n d e r

B G E

Materiais:

Diversos sombreadores e especulares pr definidos como


Lambert, Minnaert, Toon e Oren-Nayar;
Criao de materiais baseado em sistema de Node;
Preview de Materiais em GLSL na view3D;
SSS,Refrao e Reflexo por Raytrace;
Normal e Bump maps.

Render e Composio:

Sintel Open Movie http://www.sintel.org

Renderizador Interno baseado em CPU (BI);


Renderizador Unbiased por CPU/GPU com suporte a OpenCL e
CUDA (em desenvolvimento);
11

Livro Blender.indb 11

11/02/2012 12:51:11

B l e n d e r

Oversampling, motion blur, post-production effects;


Render Bake ( Render to Texture);
AO e Indirect Light;
Suporte renderizadores externos como Vray, LuxRender,
YafaRay, Matsuda entre muitos outros.

Blender Game Engine


Blender Game Engine ou BGE (como passaremos a chamla daqui por diante) , como o nome sugere, uma Game Engine
integrada ao ambiente Blender para o desenvolvimento de
aplicaes 3D. Apesar de focar inicialmente no desenvolvimento
de games, possvel com ela desenvolver diversas aplicaes
interativas 3D, como passeios virtuais, Demo Scenes, Portflios
interativos, Aplicaes cientficas e Web em 3D (com o plug-in
Bruster), etc.
Assim como o Blender, a BGE multiplataforma e pode gerar
programas Stand Alone (executveis completamente independentes
do Blender) para Windows,Linux e MacOS. Recentemente foi
adicionado, atravs de plug-ins externos, o suporte para web
browsers*. E alguns projetos paralelos pretendem portar seus
arquivos fontes para funcionarem em iOS e Android**.
Grande parte da ideologia por trs da BGE est em ser uma
ferramenta robusta o suficiente para portar as necessidades das
aplicaes com ela gerada, alm de tambm possuir uma rpida
curva de aprendizagem e um workflow que torne rpido e eficiente
a criao de suas aplicaes. Para isto ela conta com um sistema
nico de programao visual chamado Logic Bricks, tendo tambm
uma API em python para funes mais robustas. Possui ainda total
integrao com as ferramentas de criao de Materiais por Nodes
e com grande parte das funes da IDE do Blender.

12

Livro Blender.indb 12

11/02/2012 12:51:11

A p r e s e n t a o

d o

B l e n d e r

B G E

Burster uma plug-in para web browsers


que permite rodar arquivos .blend da BGE
em um web browser: http://geta3d.com/
Gamekit um projeto paralelo criado por
Erwin Coumans (atualmente Engenheiro
Chefe do departamento de Simulao Fsica
da AMD), para executar arquivos .blend
do Blender em PC, iOS e Android: http://
gamekit.org/forum/

Imagem do game Lucy and The Time Machine Vitor Balbio

Algumas das caractersticas da BGE so:


Implementao inicial, criada por Erwin Coumans ( criador
da API de fsica Bullet , terceira mais popular engine de fsica,
usada em GTA 4), como parte da NaN;
Atualmente mantida e desenvolvida pela Blender
Foundation e por colaboradores de todo o mundo.
Caractersticas e Suporte:
Grficos:
Baseado em OpenGL 2.1.
Otimizao de Visualizao para Meshes por Display List
e VBO.
Suporte completo GLSL 1.4.
Suporte a Shaders de Post Process nativos e definidos
pelo usurio por GLSL.
Fsica:
Utiliza a Bullet Engine como API de fsica.
Uso de GPGPU por OpenCL (em desenvolvimento com a
Bullet).
Suporte a Rigid Bodys, Ragdoll, Constraints, Soft Bodys e
outros.

13

Livro Blender.indb 13

11/02/2012 12:51:11

B l e n d e r

Animao:
Animao baseada em Keyframes com suporte a Layers e
Blend entre animaes.
Controle individual de bons por cdigo.
Animao por shape Keys (morph).
Animao de parmetros como object color.
Audio:
Utiliza a libOpenAL (Tambm utilizada na Unity e engines
indoor de diversas empresas, como Coodemaster,Id e DICE ).
Som 3D multicanalcom efeito Doppler.
Suporte a wav,ogg e mp3.
IA:
Sistema de programao em Layers para criao de
Mquinas de Estados (FSM)
Path Finder com Avoid Obstacles utilizando as libs Recast
e Detator
Network:
Possibilidade de utilizao da lib Socket do Python para
criao de aplicaes em rede.
Outros:
Sistema WYSIWYG (What You See Is What You Get )
totalmente integrado Interface do Blender, como editor de
cenrio.
Lightmaps gerados pelo Renderizador interno do Blender.
Sistema de projeo das aplicaes em ambientes Domo.
Sistema de projeo estereoscpica ( Side by Side,
Anaglifo e outros ).

Nas pginas seguintes voc pode conferir alguns games e


demonstraes grficas interativas e games criados com Blender
Game Engine
14

Livro Blender.indb 14

11/02/2012 12:51:11

A p r e s e n t a o

d o

B l e n d e r

B G E

Yo Frankie
Blender Foundation
http://www.yofrankie.org/

Runas 2.0
Vitor Balbio

15

Livro Blender.indb 15

11/02/2012 12:51:11

B l e n d e r

Dead Cyborg
Endre Barath
http://deadcyborg.com

Demonstraes Grficas
Martins Upitis
http://www.martinsh.co.nr/

16

Livro Blender.indb 16

11/02/2012 12:51:11

A p r e s e n t a o

d o

B l e n d e r

B G E

Baixando e Instalando o Blender


Em nosso curso iremos utilizar o Blender sob o OS Windows,
porm o processo similar para todos os ambientes. Para a referida
plataforma o Blender distribudo em forma de Instalador (.exe) ou
Portable (.zip). Atualmente o Blender possui entre 20Mb e 40Mb
para download e aproximadamente 90Mb quando instalado. No
necessrio nenhum outro aplicativo externo para o funcionamento
do Blender, j que a partir da srie 2.5x ele engloba inclusive as libs
python, antes externas aplicao.
1) Acesse o site: http://www.Blender.org/download/get-Blender/

2) Clique na verso desejada (no nosso caso Windows 32 ou


64 bits);
3) Aguarde a finalizao do Download;
4) Realize a descompresso ou instalao, dependendo da
verso baixada;
5) Execute o Blender.exe na pasta criada ou no atalho da rea
de trabalho, caso tenha optado pela verso com instalador. A tela
que voc ver ser como esta, caso esteja utilizando a verso 2.61:

17

Livro Blender.indb 17

11/02/2012 12:51:11

B l e n d e r

Blender 2.61

Dicas e Sugestes
INTEGRAO NA COMUNIDADE:
Existem inmeras comunidades de
usurios Blender que o utilizam para
diversos fins. Nelas voc pode postar
seus trabalhos, tirar dvidas, criar
parcerias para futuros trabalhos entre
outros. Internacionalmente, a maior
comunidade de usurios Blender a
Blender Artist: www.Blenderartists.org .
Se voc est com o seu ingls em dia,
essa realmente uma boa pedida.
OPEN SOURCE:
Open source no significa ser grtis
apenas, mas que qualquer pessoa
pode baixar seu cdigo fonte, criar
novas ferramentas, corrigir problemas
e, se quiser, retornar essas melhorias no
programa para a Blender Foundation, a
fim de que estejam, caso aprovadas , na
prxima verso estvel do Blender. Deste
modo, o programa se desenvolve, com
um processo colaborativo de centenas
de pessoas ao redor do mundo. Se
voc no um programador, ainda
assim pode colaborar indicando Bugs
e criando tutoriais para a comunidade.
Colaborao o esprito por trs do
Blender. Para mais informaes sobre
o processo de desenvolvimento do
Blender acesse o endereo: http://
www.Blender.org/development/
18

Livro Blender.indb 18

11/02/2012 12:51:12

ANOTAES

Livro Blender.indb 19

11/02/2012 12:51:12

Livro Blender.indb 20

11/02/2012 12:51:12

B l e n d e r
C a p t u l o
I n i c i a n d o

Livro Blender.indb 21

c o m

2
B l e n d e r

11/02/2012 12:51:12

B l e n d e r

Captulo 2 - Iniciando com Blender


Um correto entendimento das funes bsicas do Blender
essencial para se tirar proveito de suas facilidades de utilizao
e tornar o ambiente de trabalho mais produtivo. Neste captulo
iremos entender o funcionamento da interface, formas de seleo,
criao de primitivas, transformaes de Objeto e de cmera.

Interface
O Blender foi projetado de forma que sua interface possa
otimizar o mximo possvel de espao em tela, criando uma grande
rea de visualizao para o ambiente e escondendo funes que
no so essenciais.
Sua estrutura baseada principalmente em 3 princpios:
Sem Sobreposio: Todas as ferramentas do Blender so
visveis ao mesmo tempo sem necessidade de arrastar ou empurrar
janelas;
Sem Bloqueio: minimizado o uso de pop-ups que peam a
insero de dados e bloqueiem o funcionamento de outras partes
do programa;
Sem Interrupo: Todas as funes do Blender podem ser
acessadas sem interrupo das funes. possvel, por exemplo,
modelar enquanto se est tocando uma animao;

22

Livro Blender.indb 22

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

Podemos entender a interface do Blender como um conjunto


de Blocos encaixados de forma a no deixar nenhum espao entre
eles. A cada um desses blocos alocado um Editor. Cada editor
possui um conjunto de ferramentas diferentes.

possvel realizar algumas operaes com os Blocos/Editores,


como aumentar o seu tamanho relativo, diminuindo o tamanho dos
outros. possvel ainda torn-lo uma janela independente (muito
til para uso em mltiplos monitores), alm de Subdividir e remover
um Editor.
Podemos tambm intercambiar entre o tipo de editor ativo em
cada bloco, clicando no boto no canto esquerdo de seu cabealho.
Os editores disponveis so:
3DView: Tela de apresentao 3D;
Timeline: Linha do tempo para animao;
Graph Editor: editor de curvas para animao;
DopeSheet: editor de Keyframes para animao;
NLA Editor: editor de aes para animao;
UV/Image Editor: editor de imagens e UVs;

23

Livro Blender.indb 23

11/02/2012 12:51:12

B l e n d e r

Vide Sequence Editor: editor de Vdeo;


Text Editor: editor de texto e scripts;
Node Editor: editor de matrias, composio e texturas
procedurais;
Logic Editor: editor visual de scripts;
Properties: painel com as principais propriedades dos objetos;
Outliner: Organizador Hierrquico da Cena;
User Preferences: editor de preferncias do Blender;
Info; Informaes e funes de arquivo histrico, cena e UI ativa;
File Browser: Navegador de arquivos e diretrios;
Python Console: Console python interativo.
Com tais funes possvel editar a interface do Blender e
deix-la da forma adequada.
Algumas configuraes pr-determinadas j esto definidas no
Handler do editor Informations. Porm, voc pode adicionar novas
configuraes e ou remover alguma no utilizada.
importante notar que no Blender todos os painis e menus
so sensveis ao contexto.Isto fica evidente no editor Properties,
onde s so mostradas as opes especficas de configurao de
cada objeto:

Opes para Cmera

Opes para Lmpadas

24

Livro Blender.indb 24

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

Opes para Meshes

Dicas e Sugestes
INTERFACE:
A interface do Blender 2.5x foi
recentemente reformulada e possui
ferramentas para permitir melhor uso
em mltiplos monitores. Ento, se
voc dispe de 2 ou mais monitores,
interessante separar alguns editores em
uma segunda janela. Para isso, segure
o boto, shift posicione o ponteiro do
mouse nas 3 ranhuras no lado esquerdo
do Header do Editor ( quando estiver
posicionado corretamente ele se tornar
uma Cruz), clique e arraste usando o
boto esquerdo do mouse.
EXPLORE:
A melhor forma de compreender a
interface e o funcionamento do Blender
explorando o Programa. Ento, sintase livre para modificar os painis,
subdividi-los etc. Caso voc queria
salvar suas configuraes, v em File/
Save User Settings.
Para retornar s configuraes originais.
V em File/ Load Factory Settings
HEADER:

Header da 3D view

Cada Editor possui um painel de menus


e funes ao lado do seletor de Editor,
com opes e funes especficas
desse editor. Explorar as opes dos
menus dos Headers a melhor forma
de conhecer muitas funes teis de
edio.
25

Livro Blender.indb 25

11/02/2012 12:51:12

B l e n d e r

Seleo
O Blender possui uma forma de seleo muito particular que
a princpio pode confundir usurios acostumados com outros
softwares ou com o ambiente Windows.
As principais formas de seleo no Blender so:
Seleo Direta: No editor 3D view, use o boto direito do mouse
sobre o objeto a ser selecionado;
Seleo Conjunta por regio: No editor 3D view, use B, clique
e mantenha pressionado o boto esquerdo do mouse e arraste;
Seleo Conjunta por Brush: No editor 3D view use C, clique e
mantenha pressionado o boto esquerdo do mouse e arraste sobre
os objetos que voc deseja selecionar;
Outliner: Use o boto esquerdo do mouse sobre o nome do
objeto no Outliner Editor.
Voc sempre pode adicionar objetos para a seleo usando
Shift + boto direito do mouse
Para limpar a seleo use A.
Note que o ltimo objeto selecionado ser o objeto Ativo. E isto
um fato importante, j que todas as funes de contexto sero
relativas a ele, como por exemplo, as opes disponveis no painel
Properties. Quando h mais de um objeto selecionado e um objeto
ativo, os objetos selecionados ficam em laranja escuro e o ativo em
um tom mais claro de laranja
Algumas outras opes de seleo tambm esto disponveis
no Header da 3D view.

26

Livro Blender.indb 26

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

Cmeras e Transformaes
O Blender se utiliza de um sistema de cmeras similar a muitos
dos programas de edio 3D. Com ele voc pode realizar operaes
de Rotao, Zoom e Pan, alm de utilizar projees Ortogrficas e
Perspectiva.
As funes mais simples de todo o programa de edio 3D so
as trs operaes de transformao de cmera: Rotao, Zoom e
Pan.

Rotao:
Para rotacionar a cmera default da 3Dview ( a qual doravante
chamaremos de cmera de trabalho) mantenha o scroll do mouse
pressionado sobre a 3Dview e arraste.

Dicas e Sugestes
HOTKEYS:
Como j dito anteriormente, o Blender
um programa projetado para que
se use ao mximo a configurao
Mouse+Teclado
para
manipulao
do ambiente, de forma a alcanar o
mximo de velocidade de produo
nas mos de um usurio experiente.
Todas as funes que iremos listar
aqui, e durante todo o nosso curso,
possuem outras formas de acesso,
porm iremos focar no uso de Hot
Keys, porque, embora possa tornar a
curva de aprendizado inicialmente mais
complicada, com a prtica os benefcios
se mostram evidentes.

Existem algumas funes de rotao de cmera pr-definidas,


que se situam no teclado numrico. (NumPad):
Pressione o boto Ctrl + 7 (Top View), 1 (Front View), 3
(Right View). A cmera ir se posicionar na posio oposta. Por
exemplo Ctrl + 7 a viso inferior.

Zoom:

Dicas e Sugestes
RESETANDO VIEW

Para executar a funo de Zoom mova com o scroll do mouse


para cima ou para baixo na 3D view. Voc tambm pode usar as
teclas . e * tambm do teclado numrico.

Caso voc se perca com a orientao


da cmera pressione Shift + C para
centralizar toda a cena na 3Dview.

Pan:

CMERA DE
OBJETO CMERA:

A funo de Pan executada pressionando Shift + mantendo


pressionado o Scroll do mouse sobre a 3D view.
Existem outras funes muito teis relativas cmera, como,
por exemplo:
5 troca entre viso Perspectiva e Ortogrfica.
Del centraliza a cmera no objeto ativo.

TRABALHO

Um cenrio pode possuir vrios


objetos-cmera que sero utilizados
como referncia para os renders e
para a execuo da aplicao. Mas s
existe uma nica cmera de trabalho da
3Dview, com a qual as transformaes
de cmera so executadas. Para trocar
entre a cmera objeto ativa e a cmera
de trabalho use: 0 (Zero)
Para posicionar os objetos cmera,
utilize as funes de Fly Navigation
com Shift + F ou use transformaes
de Objeto.
27

Livro Blender.indb 27

11/02/2012 12:51:12

B l e n d e r

Transformaes de Objeto
Manipular objetos pelo cenrio parte fundamental da CG 3D.
Por isso, iremos mostrar agora como executar as trs formas de
manipulao de objetos. Saiba que, apesar de aplicarmos estas
transformaes apenas em nvel de objeto, elas tambm valem para
manipulao de vrtices, arestas, faces, pontos de controles em
curvas e qualquer outra operao em que estas transformaes se
fazem presentes; no apenas na 3DView mas em todos os editores.
Com o Blender possvel realizar manipulao de Objetos por
duas formas: por manipuladores e por Hot keys.
Manipuladores so estruturas visuais que permitem mover,
rotacionar e escalonar os objetos com o Mouse. Eles se encontram
no header da 3D view.

Ativa/Desativa Manipuladores.
Ativa/Desativa Manipulador de Localizao.
Ativa/Desativa Manipulador de Rotao.
Ativa/Desativa Manipulador de Escala.

Cada uma dessas opes adiciona mais controladores 3Dview.


Para executar a operao, pressione e mantenha pressionado o
boto esquerdo do mouse sobre o eixo e controlador desejados na
3Dview e arraste.
As operaes realizadas com manipuladores possuem
coordenadas definidas pelo menu Orientation. As mais utilizadas
so: View (Coordenada da cmera), Local (Coordenada local ao
objeto selecionado) e Global (Coordenada do mundo).

28

Livro Blender.indb 28

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

Como j informado anteriormente, o Blender um programa


projetado para o ambiente Mouse+Teclado de forma a obter
o mximo de produtividade. No processo de transformaes
geomtricas o Blender conta com um sistema de Hot key
Seqencial, organizado da seguinte forma:
1) Selecione primeiramente a funo base com o ponteiro do
mouse sobre a 3DView:
G (Grab) R (Rotate) S (Scale)
Se o ponteiro do mouse for movido neste momento, ser
realizada a operao default de cada operador.
Grab: Mover o objeto sob XY da coordenada View;
Rotate: Rotacionar o objeto sob Z da coordenada View;
Scale: Escalonar o objeto em XYZ global.
2) Se, em vez de executar a funo default, voc desejar travar
um eixo, pode-se adotar 2 formas:
Trava de Eixo Direta:
Utilize as teclas X, Y ou Z para selecionar o eixo desejado;
Trava de Eixos Indireta
Utilize Shift + (X, Y ou Z) para remover o eixo indesejado.
3) As funes X, Y e Z acima, travam o eixo sob a
coordenada Global. Para coordenadas locais, utilize (X + X ),
(Y + Y ) e (Z + Z).

Exemplos:
Mover o objeto sob o eixo X de coordenada global.
G + X
Mover o objeto sob o eixo X de coordenada local.
29

Livro Blender.indb 29

11/02/2012 12:51:12

B l e n d e r

G + X + X
Mover o objeto sob os eixos XY de coordenada global
G + Shift + Z
Escalonar o objeto sob os eixos ZY de coordenada local
S + Shift + X + X
No Blender todas as manipulaes de objetos so feitas a
partir do seu centro. O centro do objeto uma entidade a parte
de seus meshes e determina a partir de qual ponto a operao de
transformao ser executada. O centro representado por um
ponto laranja maior que os vrtices e sempre visvel no objeto
Quando existem vrios objetos selecionados, a operao de
transformao ser realizada de acordo com a configurao do
menu Pivot Point, no header da 3Dview. Ele possui as seguintes
opes:
Active Element: Executa a operao usando como base o
elemento ativo ( o ultimo selecionado ); Median Point: Utiliza como
referncia o ponto mdio entre todos os centros;
Individual Origins: Executa a operao para todos os centros,
individualmente;
3D Cursor: Utiliza como referncia o Cursor3D, o qual pode ser
apontado para uma posio usando o boto esquerdo do mouse
na 3Dview;
Bounding Box Center: utiliza como referncia o centro de um
BoundBox virtual que englobe todos os objetos selecionados.

Parentando Objetos
Dois objetos podem ser parentados. Assim, toda transformao
de objeto realizada no pai, ser propagada ao filho. Para parentlos, selecione o objeto filho e, depois, o pai. E use Ctrl + P com
o ponteiro do mouse na 3DView, selecionando Object no menu
que surgir.
30

Livro Blender.indb 30

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

Adicionando Primitivas
O Blender possui diversas primitivas geomtricas que podem
ser adicionadas ao cenrio. Para adicionar uma delas, pressione
Shift + A com o cursor do mouse sobre a 3DView. Depois
selecione o objeto na lista Mesh
Um fator importante saber que a posio inicial do objeto
criado ser sempre o Cursor 3D. Assim, para mudar a sua posio,
use na 3D View, conforme citado anteriormente.
Assim, para mudar a sua posio, use o boto esquerdo do
mouse na 3D View, conforme citado anteriormente.

Dicas e Sugestes
SUPORTE A OUTRAS FORMAS DE
NAVEGAO E MANIPULAO
O Blender tem suporte a diversas outras
ferramentas de manipulao, alm do
mouse, como o Magic Pad da Apple,
SpaceNav3dconnexion
e
diversos
tablets.
31

Livro Blender.indb 31

11/02/2012 12:51:12

ANOTAES

Livro Blender.indb 32

11/02/2012 12:51:12

B l e n d e r
C a p t u l o
I n i c i a n d o

Livro Blender.indb 33

c o m

B l e n d e r

G a m e

E n g i n e

11/02/2012 12:51:12

B l e n d e r

Captulo 3 - Iniciando com Blender Game Engine


Neste captulo aprenderemos mais a fundo sobre o que so
game engines, iniciando tambm o estudo sobre a BGE e introduo
sobre a programao nos jogos.

Game Engines
O Desenvolvimento de games requer a agregao de diversas
ferramentas para o gerenciamento da grande variedade de
tecnologias que o compem. Para tal, precisamos minimamente
de: um gerenciador e controlador dos recursos grficos para
mostrar objetos,cenrios e personagens na tela de forma eficiente;
gerenciadores de som, fsica, entrada de dados por keyboard,
mouse, gamepads etc; gerenciadores de comunicao web para
games multiplayer.
Mas a lista extensa e varia conforme as necessidades do
game. E a Game Engine o conjunto de ferramentas que agregam
todas as funcionalidades necessrias para a criao de um game.
Cada Game Engine contm um conjunto de solues que
podem ter pontos em comum entre si. Por exemplo, duas game
engines podem utilizar o mesmo sistema de gerenciamento de
grfico, como o OpenGL. Na verdade, muitas o fazem, sendo esta
a biblioteca padro da indstria de games para aplicaes 3D
interativas.
Algumas engines, como a BGE, possuem editores visuais de
cenrio, que lhe do a opo de posicionar visualmente todos os
objetos do seu game, num sistema chamado WYSIWYG (What
You See Is What You Get).
Outras game engines so apenas bibliotecas de cdigo, nas
quais voc precisa indicar a posio de todos os objetos do
cenrio por cdigo de programao. Atualmente, a grande maioria
das principais game engines possuem editores de cenrio do tipo
WYSIWYG.

34

Livro Blender.indb 34

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

G a m e

E n g i n e

Editores de cenrio de Game Engines geralmente possuem


funes muito bsicas para criao de modelos 3D. Isto ocorre
porque eles no so geradores de contedo, mas apenas
agregadores. Geralmente os modelos so gerados em softwares
de modelagem3D, como Blender, Autodesk Maya e 3DMax, e ento
exportados para as Engines sob formatos de arquivo comuns aos
trs como o COLLADA ou FBX.
J no BGE,isso no necessrio. Como o seu editor de cenrios
e criador de contedo o prprio Blender, possvel executar todas
as etapas de desenvolvimento do game (Modelagem,Texturizao
,Animao, Organizao dos cenrios, Programao e execuo)
dentro do mesmo IDE. Isto evita incompatibilidades e problemas
inerentes da troca de arquivos entre programas, alm de agilizar o
processo de desenvolvimento.

BGE utiliza o Blender como


editor de cenrio.
35

Livro Blender.indb 35

11/02/2012 12:51:12

B l e n d e r

Entretanto, nada impede que todo o contedo seja criado em


outros softwares 3D, importados para o Blender e utilizados no
BGE, se assim for desejado. (vide sobre Asset Management no cap
15 ).
Nesta apostila iremos cobrir apenas as funes relativas
ao funcionamento do BGE e no das tcnicas de criao de
modelos 3D no Blender. Presumimos, assim, que voc j possua
conhecimentos para desenvolvimento dos seus modelos 3D no
Blender ou em outro software externo.
Aplicaes Interativas 3D so softwares que funcionam em
formato cclico ininterrupto, diferentes de outras aplicaes. Um
software de calculadora, por exemplo, desenha sua interface na
tela apenas uma vez, mas atualiza a imagem de suas caixas de
texto toda vez que um boto pressionado. S h atualizao
na interface, portanto, quando h interao. Games e outras
aplicaes interativas no funcionam geralmente desse modo.
Geralmente elas desenham a imagem na tela tantas vezes quanto
possvel, independente de haver interao externa ou no. A taxa
com que a placa de vdeo consegue renderizar um certo cenrio,
criado por uma game engine, medida em FPS (Frames per Second
= quadros por segundo) e isso mede tambm o desempenho do
game em um sistema. Se um sistema consegue processar uma
grande quantidade de quadros por segundo, torna a exibio
do game mais fluida, da mesma forma que um vdeo com mais
quadros por segundo mais fluido.
O processo de funcionamento da game engine, portanto,
cclico. Inicia pela construo dos modelos, processa os dados de
entrada, fsica, programao e, depois, mostra o resultado na tela.
Em cada uma dessas etapas milhares de operaes matemticas e
lgicas so feitas. E, quanto mais otimizado forem esses processos,
maior ser o FPS obtido.

Blender Game Engine


O Blender Game Engine possui um funcionamento similar a
muitas outras Game Engines, com sistema WYSIWYG, o que a torna
familiar a quem j trabalhou com qualquer delas. Seu sistema de
programao, porm, baseado em Logic Bricks, torna o processo
de programao dos componentes da aplicao (personagens,
inimigos, entidades animadas, sistemas, etc.) muito mais simples,
para um usurio pouco experiente em linguagens de programao,
36

Livro Blender.indb 36

11/02/2012 12:51:12

I n i c i a n d o

c o m

B l e n d e r

G a m e

E n g i n e

do que a maioria das outras engines. Isso a torna tambm perfeita


para prototipagem e criao de aplicaes interativas em geral,
como passeios virtuais.
A BGE possui um sistema de programao Orientado a Objeto.
Isto quer dizer que cada objeto 3D possui suas prprias funes
independentes. Por exemplo: um personagem tem sua programao
independente da programao do inimigo; Cada objeto Roda seu
prprio programa, por assim dizer; Quando necessrio objetos
podem compartilhar informaes entre eles atravs de troca de
mensagens ou compartilhando uma varivel acessvel aos 2; E
tambm possvel criar objetos que controlam outros objetos ou
a prpria execuo do game, como, por exemplo, trocar entre
cenrios (fases), abrir e fechar HUDs etc.
importante neste ponto compreender o fluxo de funcionamento
da BGE. Desde que o usurio inicia a BGE, at a sua finalizao,
o ciclo de processamento da BGE tem o seguinte funcionamento:

Incio: Nesta etapa so carregadas todas as funes bsicas


da engine.
Converter: Assim que a BGE abre iniciada a etapa de converso.
Nesta etapa todos os objetos do arquivo .blend do Scene inicial
so convertidos para o formato da BGE. So carregadas tambm
em memria as texturas, scripts de programao e efeitos.
Lgica: A partir desta etapa se inicia o ciclo principal da
BGE. E, se nenhuma funo de troca de cenrio for chamada, a
BGE se manter nela at a finalizao do programa. Nesta etapa
so processadas todas as chamadas das funes lgicas. So
37

Livro Blender.indb 37

11/02/2012 12:51:12

B l e n d e r

executados os scripts python e as funes definidas pelo Logic


Bricks. Aqui processada toda a programao dos scripts do
game.
Fsica: Nesta etapa a BGE utiliza as funes da Bullet Engine,
para processar a fsica, e calcula colises, aplica fora gravitacional
aos objetos etc.
Render: Nesta etapa a cena j est configurada e so chamadas
as funes do OpenGL para apresent-las na tela. So processados
aqui tambm os efeitos de Post Process e as chamas python de
funes OpenGL do mdulo bgl.
Como citado anteriormente, a BGE possui integrao total com
o Blender. Porm, um software relativamente parte. Enquanto
o Blender desenvolvido sobre a linguagem de programao
estruturada C, o core da BGE (chamado internamente de Ketsji)
escrita em C++, uma linguagem de programao Orientada
Objeto, que torna mais simples a criao e manuteno do cdigo,
j que a BGE possui suas funcionalidades orientadas ao Objeto.
E isto permite a separao do programa Blender para o Blender
Player, que o core da BGE em formato Stand Alone.
Para Windows, quando se deseja gerar um executvel final da
aplicao (.exe), possvel agregar todos os cenrios e arquivos
dentro do Blender Player criando um nico grande arquivo .exe.
A alternativa deixar os arquivos .blend separados e cham-lo
atravs do Blender Player.exe. Geralmente a segunda forma a
mais utilizada por questes de licena comercial e facilidade de
manuteno. Outras formas hbridas tambm so comuns, com
possvel tambm rodar a aplicao na prpria 3Dview do
Blender, usando para isso a tecla P, com o ponteiro na 3DView.
extremamente recomendado executar a BGE dessa forma durante
o processo de desenvolvimento do game, uma vez que permite
visualizao do cenrio, usando a cmera default da 3Dview,
utilizao de ferramentas de debug, e no necessita a gerao de
arquivo .exe (o que demandaria maior tempo de abertura).

38

Livro Blender.indb 38

11/02/2012 12:51:13

I n i c i a n d o

c o m

B l e n d e r

G a m e

E n g i n e

Aplicao da BGE rodando na 3Dview do Blender

De forma geral possvel criar um game inteiro sem gerar


seu executvel. Porm, para rod-lo, o usurio ir necessitar do
Blender. Por isso, para o game final, recomendamos a criao do
stand alone.
Atualmente o gerador de stand alone da BGE est inativo por
default. Para ativ-lo e exportar sua aplicao siga os seguintes
passos:
1) Precisamos primeiramente ativar o plug-in de exportao
para arquivos da BGE: V em File/ User Preferences; Clique ento
na Guia Add-nos na barra superior;

39

Livro Blender.indb 39

11/02/2012 12:51:13

B l e n d e r

2) Selecione a guia Game Engine na lateral direita e depois


marque o add-on.

Save Game as Game Engine Runtime;


3) Agor v em File/Export/Save Game as Runtime;
4) Selecione as opes Copy Python e Copy Dlls, caso no
estejam marcadas. Selecione o diretrio e clique em Save Game
as Runtime.

Dicas e Sugestes
ADD-ONS:
O Blender com um sistema muito
poderoso de plug-ins baseado em
python. Alguns so disponibilizados
junto com o Blender; outros esto
organizados em repositrios online.
Existem scripts para todo tipo de
funes. De mtricas CAD criao de
vegetao. Para conhecer mais add-ons
acesse o site http://wiki.Blender.org/
index.php/Extensions:2.5/Py/Scripts

Veja mais dicas no captulo 16 sobre


gerao de executveis.

40

Livro Blender.indb 40

11/02/2012 12:51:13

ANOTAES

Livro Blender.indb 41

11/02/2012 12:51:13

Livro Blender.indb 42

11/02/2012 12:51:13

B l e n d e r
C a p t u l o
I n t r o d u o

Livro Blender.indb 43

P r o g r a m a o
B r i c k s

L o g i c

11/02/2012 12:51:13

B l e n d e r

Captulo 4 - Introduo a Programao Visual e


Logic Bricks
No captulo anterior tivemos uma viso geral do funcionamento
interno da BGE e sua integrao com o Blender. Vimos que uma
das etapas fundamentais do processo o processamento dos
scripts e funes do game. Neste captulo iremos comear o
estudo a respeito de linguagens de programao e o sistema de
programao visual da BGE, o Logic Bricks.

Softwares de Computador e Linguagens de


Programao
Games em geral so fundamentalmente diferentes de outras
mdias como vdeos e imagens. Enquanto estes so arquivos,
games so softwares. Ou seja, so constitudos por um conjunto
de instrues que informam ao computador ou console o que deve
ser feito passo a passo.
Para comunicarmos ao hardware o que deve ser processado ou
feito necessrio uma linguagem. Atravs dessa linguagem damos
instrues sequenciais. O conjunto das instrues o cdigo do
programa, que posteriormente traduzido em uma linguagem que
o console compreende. Ou seja, um conjunto de dados binrios,
que so traduzidos como sinais eltricos e processados no
processador.
Assim como ns, humanos, utilizamos diferentes linguagens
para nos comunicar, um mesmo conjunto de instrues pode
ser escrito em linguagens diferentes. Por isto, um cdigo sem
linguagem definida chamado algoritmo. a ideia base por trs
do cdigo, sem a definio de uma sintaxe especfica.
Exemplo: o algoritmo para fazer um bolo poderia ser algo como:
Pegar a Farinha;
Pegar os ovos;
Pegar os outros ingredientes;
Bater tudo na batedeira;
Colocar em uma assadeira.
Se o bolo estiver pronto, comer; Se no, Continuar esperando

44

Livro Blender.indb 44

11/02/2012 12:51:13

I n t r o d u o

P r o g r a m a o

L o g i c

B r i c k s

Repare que essa uma estrutura linear de passos. E geralmente


assim que criamos tambm os scripts para os games. Por exemplo,
um algoritmo para movimentar um personagem poderia ser assim:
Se o player apertar a tecla W,
Toca animao 1;
Move o Player, uma unidade no eixo X;
Se o player apertar a tecla S
Toca animao 2
Move o Player, menos uma unidade no eixo X
Se o player apertar a tecla A
Toca animao 3
Move o Player, menos uma unidade no eixo Y
Se o player apertar a tecla D
Toca animao 3
Move o Player, uma unidade no eixo Y
Em linguagem python, teramos algo como:
If Key(W).positive:
Player1.playAnimation(1)
Player1.localPosition = [1,0,0]
elif Key(S).positive:
Player1.playAnimation(2)
Player1.localPosition = [-1,0,0]
elif Key(A).positive:
Player1.playAnimation(3)
Player1.localPosition = [0,-1,0]
elif Key(D).positive:
Player1.playAnimation(4)
Player1.localPosition = [0,1,0]

45

Livro Blender.indb 45

11/02/2012 12:51:13

B l e n d e r

Essa no exatamente a sintaxe correta das funes na BGE,


mas reparem que apesar de utilizar linguagens diferentes a estrutura
de execuo a mesma. O correto entendimento da lgica de
programao permite que se programe em qualquer linguagem,
bastando, para isto, conhecer a sua sintaxe e conjunto de funes
prprias.
Outro ponto importante o nvel de certa linguagem. Quanto
maior o nvel, maior a facilidade com que podemos escrever o
cdigo; porm, mais lento e menos flexvel. Quanto menor o nvel,
mais acesso direto ao hardware e maior controle sobre a aplicao
temos; porm, mais complexa a programao.
Linguagens de alto nvel so escritas e/ou funcionam com base
em linguagens de menor nvel. Isso faz com que as aplicaes
sejam escritas em camadas. Por exemplo, os scripts de um
game feito com a BGE podem ser criados em linguagem Python
ou Logic Bricks. A BGE em si escrita em C++ e utiliza funes
disponibilizadas por suas libs. Aproximadamente como na estrutura
abaixo:

46

Livro Blender.indb 46

11/02/2012 12:51:13

I n t r o d u o

P r o g r a m a o

L o g i c

B r i c k s

Nosso nico interesse aqui utilizar a BGE e no desenvolv-la


(disso cuidam os desenvolvedores da comunidade) ento iremos
utilizar em nossas aplicaes somente a primeira camada, a de
nvel mais alto.

Algortmos em Fluxogramas
A melhor forma de entendermos sobre a lgica de programao
atravs de fluxogramas. Assim como as linguagens de
programao os fluxogramas tambm representam um conjunto
de passos que no caso podem ser de instrues que o programa
deve executar.
Aqui iremos representar aes com caixas e controles de
condio com Crculos. Por exemplo o mesmo exemplo do bolo
em formado de fluxograma:

Notem que em alguns momentos as instrues retornam a


elas mesmas como por exemplo na sequncia: Manter no Forno Est pronto Manter no Forno. Essas estruturas de repetio so
chamadas Loops.
J a pergunta Est Pronto? controla a sequncia do programa.
Esses so chamados comandos condicionais.
47

Livro Blender.indb 47

11/02/2012 12:51:13

B l e n d e r

Programao Visual
Programao Visual qualquer sistema que permite a criao
de scripts de programao baseado em componentes visuais e
no em texto. Geralmente so baseados tambm em fluxogramas.
Linguagens de programao visual so muito teis para
a criao de scripts. Por scripts nos referimos geralmente a
pequenos programas relacionados diretamente ao processo final.
Por exemplo um pequeno programa para controlar a movimentao
do personagem seria um script do personagem. Todo cdigo de
Python ou Logic Bricks da BGE um script.
Em game engines comum a utilizao de programao visual
de diversas formas. Por exemplo a UDK conta com o Kismet, uma
linguagem de programao visual baseada em fluxogramas. Existe
tambm outras como o Kodu da Microsoft e o sistema de scripts
do Game Maker da Yoyo Games.

Kodu Microsoft Research

Nesse ponto precisamos criar uma separao entre Game


Engines e Game Makers. Game Engines fornecem as ferramentas
para a criao de qualquer tipo de game, geralmente Game
Makers como o produzido pela Yoyo Games ou o RPG Maker
so plataformas mais limitadas, tanto pelos games que podem
ser criados quanto pelas funcionalidades. A BGE no um Game
Maker, e sim uma Game Engine que possui alm de sua API em
python uma linguagem de programao visual. A Logic Bricks, a
qual, iremos introduzir a seguir.

48

Livro Blender.indb 48

11/02/2012 12:51:13

I n t r o d u o

P r o g r a m a o

L o g i c

B r i c k s

Logic Bricks Editor

O sistema foi projetado para funcionar no como um fluxograma


mas como uma estrutura de Blocos com fluxo fixo de dados entre
Sensores, Controladores e Atuadores.
Podemos entender seu sistema como uma estrutura de ao e
reao, mediados por uma lgica seguindo a seguinte estrutura:

Sensor: Definem um Trigger que levar a realizar uma ao. Por


exemplo o apertar de uma tecla do teclado ou a coliso do objeto
com outro de um certo tipo.
Lgica de Controle: Define que tipo de lgica ir tratar os
sinais recebidos pelos sensores. Por exemplo, voc pode querer
ativar um atuador quando um sensor E o outro estiverem ativos,
ou quando um sensor OU o outro estiverem, ou mesmo quando
NENHUM deles estiver. E, OU, NENHUM so controladores
lgicos. Voc tambm pode definir aqui utilizar expresses mais
complexas ou scripts em linguagem python.
Atuador: Atuadores so as funes executadas depois que
passam pela lgica de controle. Podem ser relativas ao prprio
objeto como o atuador de movimentao. Ou podem se referir ao
game em si como o atuador que troca de cenrio.
Esse sistema apesar de simples muito robusto j que diversas
configuraes de Sensores, Controladores e Atuadores podem
ser criadas. Dois ou mais sensores podem ser ligados a um
controlador e um sensor pode ser reutilizado ligando-o a diversos
controladores.
Por exemplo: A lgica para controle de um personagem seria
49

Livro Blender.indb 49

11/02/2012 12:51:13

B l e n d e r

como na configurao abaixo:

Note que cada cdigo do Logic Bricks relativo a apenas


um objeto: o ativo na 3DView. Se outro objeto na 3Dview for
selecionado, o Logic Editor ir mostrar o cdigo Logic Bricks do
mesmo. Caso dois objetos sejam selecionados ao mesmo tempo,
ser mostrado o cdigo Logic Bricks dos 2 objetos, com os cdigos
do objeto ativo mais ao alto. Isso permite tambm que sensores e
atuadores de um objeto possam ser conectados lgica de outros,
solucionando situaes mais complexas como, por exemplo,
quando um sensor em um objeto ativa o atuador em outro (clssico
alavanca e porto).
Note que cada cdigo do Logic Bricks relativo a apenas
um objeto: o ativo na 3DView. Se outro objeto na 3Dview for
selecionado, o Logic Editor ir mostrar o cdigo Logic Bricks do
mesmo. Caso dois objetos sejam selecionados ao mesmo tempo,
ser mostrado o cdigo Logic Bricks dos 2 objetos, com os cdigos
do objeto ativo mais ao alto. Isso permite tambm que sensores e
atuadores de um objeto possam ser conectados lgica de outros,
solucionando situaes mais complexas como, por exemplo,
quando um sensor em um objeto ativa o atuador em outro (clssico
alavanca e porto).
Note tambm que, assim como dissemos anteriormente, a BGE
possui um ciclo principal onde ela se mantm, a no ser que exista
uma interrupo para troca de cena ou finalizao do game. Todos
os cdigos Logic Bricks so processados nessa etapa, geralmente
a uma taxa fixa de 60 vezes por segundo, independentes do FPS
com que o grfico est sendo mostrado na tela.
50

Livro Blender.indb 50

11/02/2012 12:51:13

I n t r o d u o

P r o g r a m a o

L o g i c

B r i c k s

O entendimento de todas as funes do Logic Bricks demanda


tempo. No captulo seguinte iremos comear a compreender mais
a fundo o processo de desenvolvimento com Logic Bricks.

51

Livro Blender.indb 51

11/02/2012 12:51:13

ANOTAES

Livro Blender.indb 52

11/02/2012 12:51:13

B l e n d e r
C a p t u l o
I n t r o d u o

Livro Blender.indb 53

L o g i c

5
B r i c k s

I I

11/02/2012 12:51:13

B l e n d e r

Captulo 5 - Introduo Logic Bricks II


No captulo anterior tivemos uma viso geral do funcionamento
de linguagens de programao, programao visual e o Logic Bricks.
Neste iremos ver sobre o fluxo de trabalho para o desenvolvimento
de aplicaes usando o Logic Bricks. Ao final do captulo teremos
um objeto interativo no cenrio, com sua movimentao controlada
pelo teclado, assim como mostrado nos diagramas do captulo
anterior.

Workflow Para Desenvolvimento em BGE e Logic


Bricks
Para termos um ambiente interativo 3D utilizando Blender e
BGE, precisamos realizar algumas configuraes no ambiente de
trabalho. A primeira e mais importante indicar para a Interface do
Blender que agora estamos lidando com a BGE; e no mais com o
seu ambiente para Animao.

Siga, ento, os seguintes passos:


No Information Editor existe um menu drag and drop de nome
Engine to use for render que, por default, est setado para
Render Engine , que se refere ao renderizador interno do Blender
para Imagens e Animaes. Troque para a opo Render Game,
que se refere BGE.

Com isto, novas configuraes podero ser vistas no Properties


Editor. Mas nada impede que voc desenvolva seu game sem
realizar essa modificao de antemo, mas muitas configuraes
da BGE s estaro disponveis quando o fizermos;

54

Livro Blender.indb 54

11/02/2012 12:51:13

I n t r o d u o

L o g i c

B r i c k s

I I

Quando informarmos ao Blender que estamos trabalhando com


a BGE pelo editor informations, teremos ao lado o painel Render.
Nesta tela iremos configurar opes relativas Viewport e
opes de Debug:
Na Aba Game, o boto Start inicia a BGE. A view 3D tem o
mesmo efeito do hot key P. Para interromper a BGE e voltar ao
Blender, aperte Esc;
Em Standalone Player iremos selecionar opes relativas ao
tamanho da tela e optar se usaremos full screen ou no;
O Painel Stereo configura opes relativas projeo 3D
(estereoscopia) e em Domo;
Em Performance. temos opes de Debug e configurao
grfica assim como em Display.
O comando Frame rate and Profile importante, pois nos
permite analisar o FPS do game e o custo de processamento gasto
em cada rea (som, render, fsica, etc);
Por enquanto iremos deixar tudo na configurao default.

Opes diferentes para outros painis tambm estaro
disponveis. O painel World possui opes relativas ao mundo, que
o caso da cor ambiente, da definio de nvoa e alguns controles
para a engine de fsica, como o valor da gravidade no mundo. Aqui
tambm as opes default iro bastar no momento.
O segundo passo, porm, tornar visvel o Logic Editor. Como
este no est ativo na tela default do Blender, temos que organizar
nossa interface para se adequar melhor ao tipo de trabalho que
estamos realizando ( no caso, o uso da BGE).
Para isto podemos trocar o editor TimeLine pelo Logic
Editor, j que no iremos trabalhar, no momento, com animao
ou outras funes que necessitem da linha do tempo. Configure a
interface at conseguir aproximadamente esse aspecto:

55

Livro Blender.indb 55

11/02/2012 12:51:13

B l e n d e r

Voc pode utilizar o boto Scroll do mouse sobre a 3Dview


para aplicar Zoom e Pan na interface.
Como visto no captulo anterior, o Logic Bricks uma linguagem
de programao baseada em fluxogramas estruturados. Na
interface do Blender essas estruturas so divididas em colunas que
separam os sensores, controladores e atuadores.

Note que o Logic Editor sensvel ao contexto apenas dos


objetos selecionados. Assim, caso voc selecione outro objeto, o
Logic Editor ir apresentar a programao apenas do anteriormente
selecionado.
Para adicionar um sensor clique no boto Add Sensor. Uma
lista com as opes de sensores disponveis ir surgir. Cada sensor
serve como trigger para um evento especfico. Keyboard, por
exemplo, trata entrada de dados do teclado, enquanto Collision
trata da coliso entre objetos.

56

Livro Blender.indb 56

11/02/2012 12:51:13

I n t r o d u o

L o g i c

B r i c k s

I I

Assim que o sensor for escolhido, ele aparecer abaixo, em uma


caixa com as suas opes. Exemplificando: o sensor Keyboard
possui opes para escolha da tecla, qual o sensor ir reagir,
opo para uso ou no de modificadores (CTRL, SHIFT) e outros.
Iremos ver a funo de cada sensor com mais detalhes no captulo
seguinte.

O mesmo procedimento adiciona Controladores e Atuadores.

57

Livro Blender.indb 57

11/02/2012 12:51:13

B l e n d e r

Agora precisamos definir as ligaes entre os Blocos (sensores,


controladores e atuadores), assim como fazemos com um
fluxograma. No Logic Bricks os dados sempre vo do Sensor em
direo ao controlador e do controlador ao Atuador, no sendo
possvel o caminho diretamente inverso.
possvel, porm,
utilizar um sensor Actuador, que torna-se ativo sempre que um
atuador ativo.
Para ligar 2 blocos, pressione o boto esquerdo do mouse
sobre o marcador circular preto, direita do bloco, e mantenha
pressionado. E ligue no marcador circular esquerda do outro.
Uma linha branca ir seguir o ponteiro do mouse, tornando-se
preta quando a ligao for concluda..
Para remover uma ligao, pressione e deixe pressionado Ctrl
+ boto esquerdo do mouse e passe o cursor sobre a ligao que
voc deseja remover.
Vamos analisar a seguinte configurao:

Como voc pode observar, o sensor Keyboard est


transmitindo suas informaes para o controlador And. Este, por
sua vez, processa os dados e envia para o atuador Motion que,
ento, executa a ao.
possvel adicionar quantos sensores forem necessrios a um
controlador. Mas, assim como os atuadores, todos eles devem
possuir nomes nicos.Tambm possvel adicionar quantos
conjuntos de Sensor-Controlador-Atuador forem necessrios,
como na imagem abaixo:
58

Livro Blender.indb 58

11/02/2012 12:51:14

I n t r o d u o

L o g i c

B r i c k s

I I

Para tornar clara e organizada nossa rea de trabalho, possvel


deixar visvel apenas o header de um bloco, clicando no tringulo
branco, na esquerda superior do bloco. A mesma estrutura ento
seria vista desta forma:

Remodelando com Logic Bricks a estrutura do captulo anterior,


teramos:

59

Livro Blender.indb 59

11/02/2012 12:51:14

B l e n d e r

Repare que agora os sensores possuem as teclas a serem


acionadas e os atuadores os valores. No captulo seguinte iremos
aprender sobre sensores e atuadores relativos movimentao.

60

Livro Blender.indb 60

11/02/2012 12:51:14

ANOTAES

Livro Blender.indb 61

11/02/2012 12:51:14

Livro Blender.indb 62

11/02/2012 12:51:14

B l e n d e r
C a p t u l o
B r i c k s

Livro Blender.indb 63

B s i c o s

11/02/2012 12:51:14

B l e n d e r

Captulo 6 - Bricks Bsicos


No captulo anterior tivemos uma viso geral do fluxo de trabalho
com Logic Bricks. Neste captulo iremos entender melhor sobre os
sensores, controladores e atuadores bsicos.

Sensores Always, Keyboard e Mouse


Geralmente, em games mais simples, temos personagens que
se movimentam basicamente de 2 formas: O personagem principal
se move conforme os controles de teclado/mouse e os inimigos
se movimentam todo o tempo. Na BGE podemos disparar aes
(atuadores) tambm a partir desses eventos.
O sensor Always o mais simples dos sensores no Logic Bricks.
Basicamente ele uma chave sempre ligada. Qualquer atuador
ligado a ele por um controlador AND ir estar sempre ativo.

Como voc pode ver, algumas opes ainda esto disponveis


no sensor Always, assim como nos outros sensores. No captulo
especfico de sensores iremos falar sobre as opes.
Temos ainda, como visto no captulo anterior, o sensor Keyboard,
que ativado sempre que a tecla do teclado correspondente ao
mesmo acionada.

64

Livro Blender.indb 64

11/02/2012 12:51:14

B r i c k s

B s i c o s

Na caixa Key, possvel configurar a tecla qual o sensor ir


reagir: clique na caixa em branco direita e na tecla que deseja.
Se a opo AllKeys estiver ativa qualquer tecla ir ativar esse
atuador. Isto bastante til quando queremos tratar muitos eventos
com um s programa python, ou para situaes do tipo press any
key to start
Alm do Keyboard, podemos tambm ativar atuadores atravs
do sensor Mouse. No menu Mouse Event, podemos configurar a
que evento do mouse o sensor ir reagir.

Left, Middle, Right Button referem- se a botes do mouse;


Wheel Up e Down so os eventos de scroll; Mouse Over ativado
quando o ponteiro do mouse est sobre o objeto dono do Logic
Bricks; Mouse Over Any faz o mesmo, mas para qualquer objeto do
cenrio; Movement trata os eventos de movimentao do mouse.
Como existem poucas opes para Movement, ele mais usado
com scripts python, para criar cmeras em primeira pessoa, etc.
65

Livro Blender.indb 65

11/02/2012 12:51:14

B l e n d e r


Atravs destes 3 sensores podemos criar quase todos os
movimentos dentro de um game simples.

Controlador AND
O controlador AND (e aditivo) geralmente o mais utilizado e
um dos mais simples. Embora tenhamos no prximo captulo um
aprofundamento do assunto sobre controladores, interessante
ressaltar dois pontos:

- Quando ligado a apenas 1 sensor, o controlador AND um


pass through. Ou seja: sempre que o sensor estiver ativo o atuador
tambm estar;
- Quando ligado em 2 ou mais sensores, o controlador AND s
ativar o atuador quando TODOS os sensores forem ativos.
Uma sintaxe
funcionamento :

que

podemos

usar

para

descrever

seu

O controlador AND ativa o Atuador quando x E y E w E...n


entradas estiverem ativas
66

Livro Blender.indb 66

11/02/2012 12:51:14

B r i c k s

B s i c o s

Atuador Motion
O atuador Motion o responsvel por aplicar aos objetos
movimentao, rotao, fora, velocidade angular, linear e outros.
Todos os objetos do Blender vm configurados como estticos e,
portanto, somente movimentao e rotao esto disponveis por
default. Porm, assim que configurados para objetos dinmicos,
mais opes se tornam disponveis. No captulo sobre a fsica na
BGE iremos ver mais a respeito.


Adicionando valores em X,Y ou Z da linha Loc, a sua
localizao atual ter tambm esses valores adicionados. Por
exemplo, adicionando 0.1 X em Loc, faremos o objeto se
movimentar 0.1 BU(Blender Units) para cada ciclo de processamento
em que esse atuador for ativado.

Adicionando valores em X,Y ou Z da linha Rot adicionar
esses valores sua orientao atual, de forma anloga localizao
com Loc.
Os botes L, no canto direito, informam se essas
transformaes sero feitas sob eixo local ou global.
Aprofundaremos, no captulo seguinte, o estudo dos sensores
e controladores.

Dicas e Sugestes

LIGAO DIRETA
SENSOR E ATUADOR

ENTRE

Como comentamos anteriormente, os


controladores AND, quando ligados
somente 1 sensor, so considerados
pass through , ou seja, sempre que o
sensor estiver ativo o atuador tambm
estar. Podemos tirar proveito disto
na interface da BGE, pois possvel
ligarmos diretamente um sensor com
um atuador, sem a necessidade de criar
um controlador AND. Quando a ligao
realizada o controlador criado
automaticamente.

67

Livro Blender.indb 67

11/02/2012 12:51:14

ANOTAES

Livro Blender.indb 68

11/02/2012 12:51:14

B l e n d e r
C a p t u l o

A p r o f u n d a n d o e m S e n s o r e s
C o n t r o l a d o r e s

Livro Blender.indb 69

11/02/2012 12:51:14

B l e n d e r

A p

Captulo 7 - Aprofundando em Sensores e


Controladores
Tivemos nos dois captulos anteriores uma viso geral prtica
do funcionamento do Logic Bricks e de alguns sensores e
controladores. Neste, iremos nos aprofundar no estudo dele,
de forma a compreender e tirar proveito de suas caractersticas
internas.

Aprofundando em Sensores
Conforme visto anteriormente em Logic Bricks, sensores so
triggers para ativao de aes no game, como, por exemplo, a
ativao de um movimento quando uma tecla pressionada ou
a de uma animao quando um objeto colide com outro. Assim,
pressionar uma tecla ou prever colises de fato so aes
detectveis. Existem diversas aes detectveis pelos sensores
na BGE, mas antes de v-las precisamos entender como os
sensores detectam tais aes e como passam a informao para
os controladores.
Vamos tomar como objeto de estudo o sensor mais simples: o
sensor Always:

Como dissemos, o sensor Always trabalha como uma chave


sempre ligada. Isto quer dizer que qualquer atuador ligado a ele por
uma porta AND estar sempre ativo, contanto que ele seja o nico
sensor ligado a esse controlador. Mas como isso de fato acontece?
Inicialmente, precisamos revisar a estrutura de funcionamento
da BGE:

70

Livro Blender.indb 70

11/02/2012 12:51:14

A p r o f u n d a n d o

e m

S e n s o r e s

C o n t r o l a d o r e s

Assim que apertamos P, ou usamos o executvel de uma


aplicao criada com BGE, iniciado o processo de converso.
Nesta etapa os objetos do arquivo .blend so convertidos para
objetos da BGE. Aps, entramos no loop principal da aplicao,
que composto pelo processamento de Fsica, Lgica e Render.
Em nossa aplicao de teste no configuramos nenhum objeto
como reagindo fsica, nem utilizamos nenhum sensor de coliso
ou que necessite de tratamento de fsica, Seguimos, ento, para a
etapa seguinte: Lgica.
Na etapa de Lgica todos os Logic Bricks so processados
e o resultado desse processamento aplicado aos objetos. Por
exemplo: se o resultado de nosso programa teste mostrar que o
objeto tm de se mover 1 unidade para frente, isto aplicado ao
objeto e mostrado na tela na etapa seguinte: Render.
Com relao aos sensores, cada um deles s pode armazenar
um estado por ciclo de processamento (ou verdadeiro ou falso).
Esse estado atualizado a cada ciclo de processamento conforme
o resultado da condio que ele verifica. A troca de estado
(verdadeiro para falso ou falso pra verdadeiro ) a principal causa
da ativao de um controlador, no importando se a direo
para ativao ou desativao. Note que o atuador s executado
quando todos os sensores so processados. Quando um atuador
executado, ele ir verificar o estado dos sensores/controladores
e ir executar sua funo ou no.
Por exemplo, o diagrama abaixo representa 13 ciclos de
processamento da BGE e os resultados de um sensor Keyboard
qualquer.
71

Livro Blender.indb 71

11/02/2012 12:51:14

B l e n d e r

A p

Inicialmente, nos ciclos 1 e 2, o sensor est com valor Falso,


pois a tecla no est pressionada. No ciclo 3, como h deteco da
tecla como pressionada, atualizado o seu valor para Verdadeiro
e emitido um pulso para o controlador/atuador, j que houve uma
troca de estado. Nos ciclos 4 a 10 a tecla ainda est pressionada;
ento o valor continua positivo. Porm no so emitidos outros
pulsos para reexecutar o operador. Assim, a operao que ele
realizou ou no (dependendo da lgica do controlador), vai
prosseguir sendo executada.
No ciclo 11 a tecla solta, seu estado reconfigurado para
False e um novo pulso emitido para executar o atuador, devido a
troca de estado.

As opes Pulse (3 pontos no lado acima e 3 pontos no abaixo)


e Level so utilizadas para ativar atuadores (enviar pulsos) mais
vezes do que apenas nas transies de estado.

Pulse Mode TRUE envia pulsos a todos os ciclos em que o
valor do sensor verdadeiro;

Pulse Mode FALSE envia pulsos a todos os ciclos em que
o valor do sensor falso.
A opo freq. configura a frequncia em que os pulsos so
enviados: o valor 0 representa que ele ser enviado a todos os
pulsos; o valor 1 representa um pulso sim e outro no; o valor 2
representa um sim a cada dois no; no final a frequncia de envio
igual a 60/freq., que o mesmo que 1 pulso por segundo. Assim,
o valor em freq. 60.
Existem mais 3 opes padro dos sensores: Level, que faz
com que o sensor emita um pulso a cada troca de state (iremos
72

Livro Blender.indb 72

11/02/2012 12:51:14

A p r o f u n d a n d o

e m

S e n s o r e s

C o n t r o l a d o r e s

ver states mais adiante); e a opo Tap, que reseta o estado do


sensor para falso aps a transio para um estado verdadeiro,
sendo particularmente til quando queremos que o usurio no
deixe a tecla pressionada para reexecutar uma funo.

Aprofundando em Controladores
Como dissemos, toda vez que o sensor emite um pulso o atuador
ir verificar se ele deve ou no ser ativado; e quem determina isto
so os controladores. Existem atualmente 6 operadores lgicos,
um gerador de expresso e a opo de usar programas python.

Dicas e Sugestes

EXECUO DE ATUADORES

importante ressaltar que o sensor


executado a cada pulso de troca de
estado; mas isto no representa dizer
que a sua funo aplicada. O prprio
atuador quem vai verificar se sua
funo ou no para ser aplicada,
conforme o valor que os controladores
lhe passarem. Por exemplo, na
transio de um sensor de Verdadeiro
para Falso, se o atuador estiver ligado
atravs de um controlador AND, ele no
ir executar a sua funo.
Outro ponto de interesse que cada
atuador reage de uma forma diferente
com relao aos pulsos de execuo
emitido pelos sensores. Um exemplo
o atuador action, que toca animaes.
Com ele no possvel utilizar as
opes pulse mode True e False, j que
todo pulso de execuo iria fazer com
que ele reiniciasse a animao.


AND- Sada verdadeira, s se todas as entradas forem
verdadeiras;

OR - Sada verdadeira, se alguma das entradas forem
verdadeiras;

NAND Sada verdadeira, se alguma das sadas for falsa;

NOR Sada falsa, se alguma das entradas for verdadeira;


XOR Sada verdadeira, se apenas uma das entradas for
verdadeira e as outras falsas;

XNOR Sada falsa, se apenas 1 das entradas for verdadeira
e as outras falsas.

73

Livro Blender.indb 73

11/02/2012 12:51:14

B l e n d e r

Com o controlador Expression podemos escrever expresses


mais complexas. Por exemplo:

((Sensor1 AND Sensor2) AND (NOT sensor3)) OR


Sensor 4
Note que Sensor1... Sensor4 so nomes reais. Os nomes dos
sensores podem ser configurados no campo sensor name do
mesmo.
Podemos ainda usar operaes de comparao (<,<=,>.>=,==)
e matemticos (+,-,*,/), quando utilizando propriedades. Iremos ver
sobre propriedades mais adiante.
Com o controlador Python podemos criar programas em
linguagem Python para controlar as aes. Para isto precisamos
ter conhecimento sobre a API da Blender Game Engine. Essa
documentao pode ser encontrada no site oficial www.Blender.
org
Todo atuador possui mais uma opo chamada Use Priority

Dicas e Sugestes

CONTROLADORES
SENSORES

O correto entendimento das funes


e funcionamento dos sensores e
controladores
representa
grande
parte do entendimento da BGE em si.
O domnio das suas particularidades
possibilita a criao de diversas funes
complexas, e mesmo games inteiros,
somente atravs dos Logic Bricks.

. Esta opo determina que o respectivo controlador tem de


ser executado antes dos outros, tornando-se interessante para
operaes que precisam ser executadas antes de outras no incio
do game, como, por exemplo, executar um arquivo de configurao.

PYTHON

A BGE possui toda uma biblioteca de


funes que no apenas expandem
as possibilidades dos Logic Bricks
mas tambm fornecem interface para
qualquer lib python, abrindo caminho
para uma srie de funcionalidades no
includas por default na BGE. Para
games mais complexos altamente
recomendado o uso de python, em
vez do Logic Bricks, seja pela falta
de funes deste ltimo ou pela
organizao do projeto em si.

74

Livro Blender.indb 74

11/02/2012 12:51:14

ANOTAES

Livro Blender.indb 75

11/02/2012 12:51:14

Livro Blender.indb 76

11/02/2012 12:51:14

B l e n d e r
C a p t u l o

F s i c a

Livro Blender.indb 77

11/02/2012 12:51:14

B l e n d e r

Captulo 8 - Fsica
Agora que j possumos uma viso geral sobre o funcionamento
da Logic Bricks precisamos interromper por um momento o estudo
dos blocos lgicos para introduzir outro importante elemento no
desenvolvimento de jogos. A Fsica.
Nesse captulo iremos compreender como funciona a fsica nos
games e Como utiliz-la na BGE:

A Fsica nos Games


Os Games de diversas formas tentam recriar propriedades do
mundo real, seja atravs dos grficos, seja atravs dos sons. Mas
no somente estes podem ser reproduzidos nos ambientes virtuais,
mas tambm a fsica real.
A fsica nos jogos no um elemento novo, uma vez que ela est
presente desde os primrdios dos jogos eletrnicos. Tomemos,
por exemplo, o game Pong, de 1972, o primeiro game comercial
lucrativo que se tem notcia. Mesmo este simples game possui
elementos de fsica sendo processados, como a coliso da bola
com as barras e com as laterais da tela.

Pong

Com o tempo outros elementos foram sendo adicionados ao


jogo, como a gravidade, por exemplo, quando o player executa um
pulo, nos jogos de plataforma 2D, como Prince of Persia. Mas por
muito tempo a maioria das melhorias na rea de fsica se resumia a
formas mais rpidas e melhores de se processar as colises. Mas
esta ainda , de fato, uma das reas de pesquisas em games que
mais tem se desenvolvido.
78

Livro Blender.indb 78

11/02/2012 12:51:14

F s i c a

Prince of Persia - 1989

Em Novembro de 2004 foi lanado o game Half Life 2, da


Valvee ,sua game engine Source. O game e a engine se tornaram
muito populares por conta de suas inovaes grficas e fsica
revolucionrias. Com ela grande parte dos elementos de cenrio,
como barris, etc., possuam fsica de reao coliso. Ento,
caiam, rolavam e podiam ser, inclusive, utilizadas como armas
contra os inimigos do cenrio. A partir da comearam a surgir
diversos games que exploravam as possibilidades da fsica como
seu principal atrativo. Um dos mais populares foi o game Portal,
tambm da Valve, que tambm utiliza a Source como Game Engine.
No game, a protagonista controla uma mquina capaz de criar
portais no espao, tendo, com isso, que superar diversos cenrios
projetados como experincias cientficas. O game, certamente em
razo do sucesso, recebeu em 2011 uma continuao.

Half Life 2/ Source Engine


- www.valvesoftware.com

79

Livro Blender.indb 79

11/02/2012 12:51:14

B l e n d e r

Portal - www.
valvesoftware.com

Com a crescente complexidade da fsica nos jogos, foi tambm


necessrio a criao de novas formas de processamento para eles.
Atualmente, a tendncia a utilizao da prpria placa de vdeo
para processar, alm dos grficos, tambm a fsica. Um exemplo
disto a Tecnologia PhysiX, da Nvidia. Mas outras plataformas
livres tambm vm ganhando fora nessa rea, como, por exemplo,
a utilizao do padro OpenCL para processamento de fsica em
GPU, sem estar limitado s placas Nvidia.
Hoje contamos com sistemas de processamento da fsica muito
prximos ao comportamento real dos objetos: da simples coliso
ao comportamento de fluidos gasosos e lquidos; de simples
projteis de armas at centenas de milhares de partculas de uma
exploso; de arranhes nos ambientes at a completa destruio
de prdios. Podemos nos games controlar a gravidade, correr,
voar, nadar etc, assim como no mundo real ou em qualquer lei
dos mundos imaginrios que se quer recriar. Tudo isso possvel
atravs do processamento de fsica.

A Fsica da BGE - Bullet Engine


A Blender Game Engine tambm possui sua engine de fsica
integrada: a Bullet Engine (http://bulletphysics.org). A Bullet est
totalmente integrada no somente Blender Game Engine, como
tambm ao Blender, podendo assim recriar animaes realistas
para filmes. Tambm existem implementaes da Bullet para outros
softwares, como Maya e Cinema4D. Diversos filmes, como Shrek
4 e Como Treinar seu Drago, utilizaram Bullet em momentos da
80

Livro Blender.indb 80

11/02/2012 12:51:14

F s i c a

produo.
Na BGE, a Bullet Engine mostra sua integrao atravs de
vrios painis e opes diferentes. E o correto entendimento de
suas opes fundamental para se atingir o resultado esperado.
Alguns conceitos de fsica bsica tambm sero necessrios
para se utilizar a Bullet em todo seu potencial j que as propriedades
que iremos configurar so de fato propriedades fsicas dos objetos
assim como seriam no mundo real como massa, resistncia do ar,
frico etc.
Para acessar as propriedades fsicas de um objeto, primeiro
preciso setar a interface do Blender para o modo Blender Game,
como indicado anteriormente. As propriedades da fsica se mostram
na aba Physics do Properties Editor.

Este painel ir apresentar apenas a opes referentes ao tipo de


fsica que estiver selecionado na opo Physics Type. Atualmente
existem as seguintes opes:

No Collision: Nenhum tipo de fsica processado para esse


objeto, pois ele no pode detectar nenhum objeto com sensores
que utilizem a fsica, nem pode ser detectado por nenhum deles.
Qualquer objeto pode transpass-lo e ele pode transpassar qualquer
objeto. o mais recomendado para qualquer elemento do cenrio
81

Livro Blender.indb 81

11/02/2012 12:51:15

B l e n d e r

ou do game que no tenha contato diretamente com o player, pois


no causa custo nenhum para a etapa de processamento de fsica.
Static: Principalmente utilizado para elementos de cenrio
que precisam de coliso com o personagem, mas que no se
movimentam. Eles podem detectar coliso, mais no reagem a ela.
Quando um objeto dinmico colide com um esttico, este reage
coliso e no permite a entrada do primeiro.
Dynamic: Principalmente utilizado para elementos que se
movimentam pelo cenrio, precisam detectar coliso e reagir a
ela. Eles tambm reagem gravidade do mundo. Porm, no
aplicado a eles momento de alavanca ou torque das colises.
Rigid Body: O mesmo dos objetos Dynamic, porm a eles
aplicado o torque das colises.
Soft Body: Simulam corpos com deformao elstica
como cordas, roupas, etc. So os mais complexos para serem
processados. Por isto preciso haver cautela na sua utilizao.
Occlude: No so, de fato, propriedades fsicas do objeto.
Quando um objeto setado para Occlude, sua fsica passa a ser
assim como No Collision, porm qualquer objeto atrs deste
no ser processado na etapa de renderizao. Isso til para
otimizao, quando temos muitos objetos dentro de um local que
no visvel do lado de fora.
Sensor: Funciona como um No Collision, porm pode detectar
as colises. a melhor escolha para casos como triggers e chaves
de contato.
Navigation Mesh: Tambm no se trata de uma configurao
fsica. Este utilizado como caminho para o sistema de inteligncia
artificial PathFinder A* da Blender Game Engine.
Vamos analisar agora as principais opes relativas a cada um
dos tipos diferentes de reao fsica, onde a mesma tem relevncia.
Comeando pelo mais simples:

82

Livro Blender.indb 82

11/02/2012 12:51:15

F s i c a

Static

Actor : alguns sensores, como o Radar, s detectam objetos


com a opo Actor acionada;
Ghost: esta opo permite que objetos setados, como Dynamic,
passem por dentro deste objeto;
Invisible: o objeto se torna invisvel na etapa de renderizao.
Ele no , exatamente, relativo fsica; mas etapa de Render;
Radius: utilizado quando o bound setado para Sphere,
determina o raio da esfera de coliso;
Anisotropic Friction: aplica diferentes valores de frico
conforme o eixo de movimentao.

Dynamic/Rigidy Body
Mass: determina a massa do objeto. Objetos com maior massa
empurram com mais facilidade objetos com menor massa;
Form Factor: fator de escala do Tensor inercial;
Velocity Minimum: Escala da velocidade mnima que o objeto
pode chegar;
Velocidade Maximum: Escala da velocidade mxima que o
83

Livro Blender.indb 83

11/02/2012 12:51:15

B l e n d e r

objeto pode alcanar


Damping Translation: Resistncia do ar para movimentao;
Damping Rotation : Resistncia do ar para movimentao;
Look Translation: Impede que o objeto se movimente em um
desses eixos - til para a criao de jogos 2.5D;
Look Rotation: Impede que o objeto rotacione em um desses
eixos.

Soft Body
Position Iterations: fator de qualidade para resoluo de posio
84

Livro Blender.indb 84

11/02/2012 12:51:15

F s i c a

e colises;
Linear Stiffness: fator de rigidez do objeto;
Friction: fator de atrito do objeto;
Shape Match: preserva ou no o formato do objeto;
Rigid to Soft Body: detecta coliso com Rigid Body;
Soft to Soft Body: detect coliso entre soft bodies.

85

Livro Blender.indb 85

11/02/2012 12:51:15

B l e n d e r

Bounds
Conforme j citado, uma das principais reas de processamento
das engines da fsica com relao deteco de coliso e formas
de tornar esse processo mais gil. Uma das formas encontradas
para isto o uso de simplificaes, em vez do uso da geometria
do objeto em si.
Um personagem de um game da gerao atual pode ter por
volta de 12~15K polgonos. E processar a fsica dessa grande
quantidade de polgonos seria algo extremamente custoso para a
engine de fsica. A alternativa, ento, utilizar uma aproximao
geomtrica simplificada do objeto no qual se quer testar a coliso.
Por exemplo, para testarmos a coliso de uma parede cheia de
tijolos, poderamos testar a coliso com um paraleleppedo que a
envolvesse. A essa simplificao chamamos Bound.
Um efeito indesejvel dessa simplificao que, por vezes,
partes no envoltas pelo Bound do personagem atravessam
partes de paredes e outros objetos. Porm, a reduo do custo de
processamento compensa esses problemas eventuais.
Na Blender podemos utilizar bounds para objetos configurados,
como Static, Dynamic, Rigidy Body, Soft Body e Sensor. Para
isto, precisamos setar a opo Collision Bounds, s seguintes
configuraes de Bounds para objetos:
Triangle Mesh: A prpria geometria ser o seu bound, quanto
mais precisa, mais custosa. E esta a opo mais indicada para
terrenos. Se nenhum bound for configurado, esta ser a opo
86

Livro Blender.indb 86

11/02/2012 12:51:15

F s i c a

selecionada;
Convex Hull: ser criado um mesh convexo a partir do modelo
atual e este ser o bound de coliso. mais indicado para casos em
que necessrio uma coliso acurada e o objeto no cncavo;
Cone: Utiliza um cone como bound de coliso;
Cylinder: Utiliza um cilindro como bound de coliso;
Sphere: Utiliza uma esfera como bound de coliso;
Box: utiliza uma caixa como bound de coliso;
Capsule: utiliza uma cpsula como bound de coliso (indicado
para personagens).
Abaixo est uma representao dos objetos e seus bounds

A estrutura de grade em magenta, em volta do objeto, o seu


bound, pois a coliso ira reagir a ele. Reparem que, como Box e
Cylinder, o bound muito maior do que o objeto. Porm, em Cone
grande parte do objeto fica sem coliso. A melhor opo, no caso,
parece ser Convex Hull ou Triangle Mesh. Porm, dependendo do
caso, as opes capsule ou sphere podem servir. Cada modelo
tem de ser analisado individualmente conforme a necessidade de
coliso.

Dicas e Sugestes
BOUNDS e EMPTYS
Uma das tcnicas utilizadas para
organizar a fsica de personagens,
e outros elementos dinmicos do
cenrio, no aplicar os comandos
de movimentao e fsica no objeto do
personagem, mas num objeto empty e
parentando, posteriormente, o objeto
que contm a geometria e a animao
do personagem a esse empty.
ATUADORES E SENSORES
Diversos so os atuadores e sensores
que se utilizam dos sistemas de fsica, de
uma forma ou de outra. Por exemplo, o
atuador motion apresenta mais opes
quando o objeto est configurado para
Dynamic.
BOUNDS e ORIGENS
Um detalhe importante que o bound
de um objeto configurado conforme
a sua orientao, escala, rotao e
origem. As vezes necessrio resetar
a configurao desses elementos para
correo de problemas de coliso. Para
isto use + e escolha a propriedade que
deseja resetar. Esta funo aplica as
transformaes do mesh para o objeto
retornando Loc, Rot, Scale para seus
valores iniciais.
87

Livro Blender.indb 87

11/02/2012 12:51:15

ANOTAES

Livro Blender.indb 88

11/02/2012 12:51:15

B l e n d e r
C a p t u l o
F s i c a

Livro Blender.indb 89

11/02/2012 12:51:15

B l e n d e r

Captulo 9 - Fsica 2
No captulo anterior vimos as principais configuraes de fsica
da BGE. E neste captulo iremos aprender o que so e como utilizar
constraints para criar ligaes entre Rigidy Bodies.

Constraints
Constraints so estruturas que permitem criar eixos fixos em
objetos configurados, como Rigid Body. Alm disso, possvel
fixar esses eixos a outros objetos, criando assim ligaes entre
eles. Com isto podemos criar mquinas mecnicas que reagem
naturalmente fsica ou mesmo a Ragdolls

Ragdoll Ragdolls so estruturas que simulam o comportamento


fsico dos corpos de seres vivos em games, quando estes no
possuem nenhuma sustentao. So geralmente utilizados
quando os personagens morrem ou perdem a conscincia. No
devem ser confundidos com os bones de animao, pois, mesmo
que possuam estruturas parecidas,diferem nas funes. Bones
determinam animaes; envelopes de ragdoll determinam reaes
fsicas.
Para adicionar um Join a um objeto precisamos acessar o
painel Object Constraints e adicionar um constraint do tipo Rigid
Body Join.
University of Arizona - Leang Sang, Physics
in Animation/ Video Games

Como pode ser observado, existem vrios outros tipos de


constraints, mas eles no possuem, porm, compatibilidade com
a BGE.

90

Livro Blender.indb 90

11/02/2012 12:51:15

F s i c a

Assim que o constraint for adicionado, uma tela de configurao


ir aparecer. E, como voc pode adicionar quantos constraints
desejar para o objeto, descrevemos abaixo as suas principais
funes relativas BGE:
Target: Especifica o objeto ao qual o Join est vinculado (se
no houver objeto selecionado como Target, o Join ser feito em
relao ao mundo);
Display Pivot : Torna o eixo de rotao visvel na 3D View;
Pivot: Estabelece a posio do pivot em relao origem
(centro) do objeto;
Linked Collision: Desabilita a coliso entre objetos conectados;
Pivot Type: Determina o tipo de movimentao que o pivot
limita/estabelece;
Hinge: Funciona como uma dobradia;

91

Livro Blender.indb 91

11/02/2012 12:51:15

B l e n d e r

Ball: Age como uma ligao esfrica;

Dicas e Sugestes
JOINS CIRCULARES
Evite o uso de Joins circulares do tipo
Obj1 seta como target,o Obj2 e o Obj2
seta como target o Obj1. O mesmo para
mais de 2 objetos: Obj1->Obj2->Obj3>Obj1
ATUADOR MOTION
Tenha cuidado com o uso de Loc e
Rot,pois podem quebrar a ligao
criada com Joins. Em vez disso, utilize
Torque e Force

Cone: funciona como o Ball, permitindo, porm, limitar os


ngulos;
Generic 6 Dof: Permite estabelecer limites em todos os eixos de
orientao e posio. til quando se deseja travar a movimentao
em um eixo ou rotao em um ngulo dentro de uma faixa de
valores.

Fsica do Mundo
Na BGE podemos configurar ainda parmetros de fsica do
mundo. Para tal precisamos acessar o painel world, com a opo
Game Blender setada no Informations Editor. Alm de opes
grficas, como o valor de fundo do mundo, iluminao ambiente e
neblina, temos disposio diversas opes da fsica:
Physics Engine: Atualmente a nica engine de fsica da BGE
a Bullet, mas podemos deslig-la setando esse parmetro para
None.
Gravity: Valor de gravidade aplicado a todos os objetos do
mundo.
Physics Steps
Max: Valor que mantm a fsica sincronizada mesmo
quando o FPS do game cai;
Substeps: Nmero de subpassos para cada interao
fsica. Valores maiores permitem melhor sincronizao mais
pesam mais a aplicao;
FPS: Taxa de atualizao da fsica independente da dos
grficos.

92

Livro Blender.indb 92

11/02/2012 12:51:15

F s i c a

Logic Steps
Max: Valor que mantm a lgica sincronizada mesmo
quando o FPS do game cai.
Occlusion Culling:
Liga e desliga o sistema de otimizao de grficos quando
objetos esto atrs de outros, no sendo, portanto, visveis.
Resolution: Valor de preciso para o clculo;

93

Livro Blender.indb 93

11/02/2012 12:51:15

ANOTAES

Livro Blender.indb 94

11/02/2012 12:51:15

B l e n d e r
C a p t u l o

1 0

S e n s o r e s

Livro Blender.indb 95

11/02/2012 12:51:15

B l e n d e r

Captulo 10 - Sensores
Sensores so parte do corao da Blender Game Engine e do
seu sistema de programao Logic Bricks.
Neste captulo iremos descrever o funcionamento dos sensores
da Blender Game Engine. Mas bom saber que, devido grande
quantidade existentes de sensores, teremos um captulo extenso;
mas um importante material de consulta.

Lista de Sensores
Touch
O Sensor Touch detecta coliso entre objetos, verificando se o
objeto colidido possui o material especificado.

Parmetros:
Material: Determina o material que o objeto detectado tem que
possuir para ativar o sensor.

Ray
O Sensor Ray detecta a existncia de algum objeto com a
propriedade especificada em uma determinada direo, at certa
distncia do objeto chamador da funo.

96

Livro Blender.indb 96

11/02/2012 12:51:15

S e n s o r e s

Parmetros:
Property: Determina a propriedade que o objeto detectado tem
de possuir para ativar o sensor;
Eixo: Estabelece para qual eixo ser emitido o raio de verificao;
Range: Estabelece qual a distncia mxima de verificao;
Xray Mode: Ativando esta opo, o raio ir ultrapassar objetos
que no possuem a propriedade especificada,para verificar se o
objeto desejado est alm deste.

Random
Aleatoriamente estabelece um valor verdadeiro ou falso.

Parmetros:
Seed: Nmero base para o clculo de aleatoriedade, Seeds
diferentes estabelecem sequncias aleatrias diferentes.

Radar
O Sensor Radar detecta a existncia de um objeto
com a propriedade especificada dentro de um cone.

97

Livro Blender.indb 97

11/02/2012 12:51:15

B l e n d e r

Parmetros:
Property: Determina a propriedade que o objeto detectado tem
de possuir para ativar o sensor;
Axis: Estabelece para qual eixo ser emitido o raio de verificao;
Angle: Estabelece o ngulo mximo do cone de verificao;
Distance: Estabelece a distncia mxima de verificao do
sensor.

Property
O sensor Property verifica se uma propriedade do objeto
corresponde a uma funo de verificao (igual,maior que, menor
que...)

Iremos ver melhor sobre propriedades no captulo a seguir.

98

Livro Blender.indb 98

11/02/2012 12:51:15

S e n s o r e s

Parmetros:
Evaluation Type: Determina a funo de ativao e verificao
para a propriedade.
Equal Igual a x ?
Not Equal Diferente de x ?
nterval Tem valor sob o intervalo x - y?
Changed A propriedade foi modificada?
Property: Determina a propriedade, a qual o objeto detectado
tem de possuir para ativar o sensor.
Value: Valor com o qual a propriedade ser comparada.

Near
O Sensor Near verifica a existncia de algum objeto com a
propriedade especificada acerta distncia.

Parmetros:
Reset Distance: Distncia com a qual o sensor no mais
encontra o objeto aps a sua deteco;
Distance: Distncia com o qual o sensor detecta inicialmente
o objeto.

Mouse
O sensor Mouse verifica eventos vindos do mouse ou de
outra interface detectada (tablets, por exemplos) pelo sistema
operacional.
99

Livro Blender.indb 99

11/02/2012 12:51:15

B l e n d e r

Parmetros:
Mouse Event: Determina o evento de mouse que ir ativar o
sensor
Left Button Boto Esquerdo
Right Button Boto Direito
Middle Button Boto do Meio
Wheel Up Scrool do Mouse para cima
Wheel Down Scrool do Mouse para baixo
Moviment Movimentao do Mouse
Mouse Over Ponteiro do mouse est sobre o objeto
Mouse Over Any Ponteiro do mouse est sobre qualquer
objeto da tela

Message
O sensor Message verifica se alguma mensagem com o texto
especificado pelo campo Subject foi recebida pelo objeto

Parmetros:
Subject: A mensagem tem de possuir o texto especificado para
tornar ativo o sensor.

100

Livro Blender.indb 100

11/02/2012 12:51:15

S e n s o r e s

Keyboard
O sensor Keyboard verifica se a tecla especificada foi
pressionada.

Parmetros:
Key: Tecla verificada para ativar o sensor;
All Keys: Verifica todas as teclas;
First Modifier: Segunda tecla que precisa estar pressionada,
juntamente com a primeira, para ativar o sensor;
Second Modifier: Terceira tecla que tem de estar pressionada,
juntamente com a primeira e a segunda, para ativar o sensor;
Log Toggle: Toda vez que a tecla pressionada, adiciona o
valor pressionado;
Target: Para qu propriedade o valor ser enviado.

Delay
O sensor Delay aguarda o tempo especificado,depois ativa o
sensor.

101

Livro Blender.indb 101

11/02/2012 12:51:16

B l e n d e r

Parmetros:
Delay: Tempo de aguardo antes de ativar o sensor;
Duration: Especifica por quanto tempo o sensor ir permanecer
ativo;
Repeat: Especifica se o processo ser repetido indefinidamente.

Collision
O sensor Collision funciona de forma similar ao Touch,porm
possui mais opes

Parmetros:
Pulse: Torna o sensor sensvel a outras colises, mesmo que
alguma ainda esteja em curso
M/P: Especifica se o fator de ativao para a coliso ser a
propriedade ou o material ( se o campo for deixado em branco, a
coliso com qualquer objeto ir ativar o sensor )
Property/Material: Especifica o material/propriedade especfico
para verificao.
102

Livro Blender.indb 102

11/02/2012 12:51:16

S e n s o r e s

Always
O sensor Always funciona como uma chave sempre ativa e no
possui parmetros especficos.

Actuator
O sensor Actuador ativo quando o atuador especificado
estiver ativo.

Parmetros:
Actuator: Atuador que ser verificado

103

Livro Blender.indb 103

11/02/2012 12:51:16

ANOTAES

Livro Blender.indb 104

11/02/2012 12:51:16

B l e n d e r
C a p t u l o

1 1

P r o p e r t i e s

Livro Blender.indb 105

11/02/2012 12:51:16

B l e n d e r

Captulo 11 - Properties
Nesse captulo iremos aprender o que so e como so utilizadas
as propriedades. Mas veremos tambm como verificar essas
propriedades utilizando controladores expression.

O que so properties ?
comum, em jogos e outras aplicaes interativas,necessitarmos
guardar informaes locais do prosseguimento do jogo. Assim,
em um game de carro, por exemplo, guardaramos informaes
relativas ao quanto de combustvel cada um dos carros possui,
quantas voltas ele j completou e quanto de dano ele j recebeu. Em
um game de batalha de tanques, como novo exemplo, poderamos
guardar informaes, como a vida ainda existente em cada player
e a quantidade de tiros ainda disponveis.
Nesses casos, cada um desses elementos uma propriedade
do objeto; um valor com significado especfico dentro da mecnica
do game criado.
Propriedades podem ser no somente relativas ao objeto em
si, mas tambm a sistemas mais gerais do game. Por exemplo:
poderamos estabelecer um tempo limite para cada round de um
game de luta. A propriedade Time seria, ento, uma propriedade
de um sistema geral e no de um personagem especfico do
cenrio.
De qualquer forma, a sequncia de passos para criao e
utilizao de propriedades a mesma, visto que toda a propriedade
de um objeto especfico. Assim, deciso do game design se o
objeto ir ter relao com um personagem ou com o controle de
estados globais do game.
Para adicionar uma propriedade a um objeto precisamos
acessar o Logic Editor.

106

Livro Blender.indb 106

11/02/2012 12:51:16

P r o p e r t i e s

No Logic Editor, possvel observar na lateral esquerda uma


barra de nome Properties.
Para adicionar uma propriedade clique no boto Add Game
Properties

Assim que a operao for concluda, ser criado para este objeto
uma propriedade com nome default, seguindo a auto numerao
do tipo float.

A caixa criada contm as configuraes especficas de cada


propriedade nica.
Prop Name: Estabelece o nome da propriedade, sendo
aconselhvel utilizar um nome de fcil identificao, como, por
exemplo, HP para a vida do personagem, ou Voltas para o
nmero de voltas de um carro.
Type: Estabelece o tipo da propriedade. Atualmente existem 5
tipos disponveis:
Timer: Funciona como um relgio que ativado assim que
se inicia a execuo do programa. (O relgio pode ser zerado a
qualquer momento atravs de atuadores);
String: Estabelece uma propriedade de texto para um
objeto;
107

Livro Blender.indb 107

11/02/2012 12:51:16

B l e n d e r

Float: Estabelece uma propriedade numrica de ponto


flutuante para o objeto. Por exemplo: 0.5, 10.09, 9.12312312;
Integer: Estabelece uma propriedade numrica inteira para
o objeto. Exemplo: 0,10,9;
Boolean: Estabelece uma propriedade Lgica para o
objeto. Propriedades Lgicas s possuem 2 valores: Verdadeiro
ou Falso
Value: O Valor inicial da propriedade;
Print Debug: Apresenta o valor da propriedade no Debug da
3Dview, quando executando a aplicao.

O modo mais simples de testar uma propriedade atravs


do uso de controladores do tipo expression. Por exemplo: se
quisermos representar a seguinte lgica:
Mover 0.1 unidade no eixo X, quando a propriedade time for
maior do que 4 segundos.
Podemos construir esse sistema atravs de um sensor Always,
um controlador expression e o relativo atuador.

Veja que foi necessrio o uso do Pulse Mode True no sensor, j


que a verificao do atuador motion tem de ocorrer a todo pulso
para que ele detecte atravs do controlador o momento de sua
ativao.
Podemos ainda testar uma propriedade atravs do sensor
Property.

108

Livro Blender.indb 108

11/02/2012 12:51:16

P r o p e r t i e s

O sensor Property verifica o valor atual de um estado e ativa se


a condio for atingida.
O tipo de verificao pode ser configurado pela propriedade
Evaluation Type. A funo default Equal, ou seja, uma funo de
equivalncia com o valor especificado no campo Value.
O Tipo Not Equal funciona de forma similar, Porm inversa
ativando quando a propriedade for diferente do valor.

O tipo Interval ativa o sensor, toda vez que o valor da propriedade


verificada estiver no intervalo entre o mnimo e mximo especificado.

109

Livro Blender.indb 109

11/02/2012 12:51:16

B l e n d e r

O ltimo tipo o Changed, que ativa o sensor toda vez que a


propriedade sobre uma modificao de qualquer tipo.
O mesmo exemplo anterior poderia ser reescrito da seguinte
forma utilizando sensores:

Note que o valor mximo configurado para 9999999 corresponde


ao tempo aproximado de 2778 horas, o que virtualmente uma
especificao de infinito, visto que dificilmente uma aplicao
interativa ir rodar todo esse tempo.
Observe tambm que no foi necessria a utilizao do Pulse
Mode True, j que o sensor enviar ao atuador o pulso de verificao
no momento em que a sua propriedade trocar de estado (no caso,
quando ela for ativada).
Podemos ainda, alm de verificar propriedades, aplicar valores
a propriedades em tempo de execuo, como, por exemplo,
atualizar o nmero de voltas de um carro. Para tal precisamos
utilizar o atuador Property.

110

Livro Blender.indb 110

11/02/2012 12:51:16

P r o p e r t i e s

O atuador Property funciona adicionando ou alterando valores


de propriedades do objeto.
Existem atualmente 4 operaes com propriedades executadas
pelo atuador, que esto dispostas na propriedade Mode:
Toggle: tem funes especficas para cada tipo de propriedade:
Para Booleanas, o modo Toggle troca entre os valores
Verdadeiro e Falso;
Para string, reseta o texto atual para o texto FALSE;
Para propriedades Int e Float e Timer, retorna para o valor 0,
0.0 e 0.0, respectivamente.

Copy: Em muitos casos interessante compartilhar valores


de propriedades entre objetos. Embora seja uma prtica pouco
recomendada, em alguns casos necessria. O atuador Copy
funciona copiando o valor de uma propriedade de outro objeto
para a sua propriedade especificada.

111

Livro Blender.indb 111

11/02/2012 12:51:16

B l e n d e r

Add: Adiciona um valor para a propriedade especificada, Note


que adicionar um valor no corresponde, necessariamente, a
incrementar um valor. Pode-se utilizar um valor negativo em Value
para decrementar o valor de uma propriedade.

Dicas e Sugestes
PROPERTIES

Assign: Assinala um valor para a propriedade especificada.

Propriedades so parte fundamental


no desenvolvimento de qualquer
game. importante haver uma boa
organizao dos objetos para que eles
compartilhem a menor quantidade
possvel de propriedades, sendo, pois,
o mais independente possvel para
evitar o excesso de uso do atuador
copy. Esse modelo chamado Baixo
Acoplamento

112

Livro Blender.indb 112

11/02/2012 12:51:16

ANOTAES

Livro Blender.indb 113

11/02/2012 12:51:16

Livro Blender.indb 114

11/02/2012 12:51:16

B l e n d e r
C a p t u l o

1 2

A t u a d o r e s

Livro Blender.indb 115

11/02/2012 12:51:16

B l e n d e r

Captulo 12 - Atuadores
Atuadores so parte fundamental da estrutura do Logic Bricks,
responsveis por todas as funes dos objetos. Agora iremos
aprender quais so os tipos de atuadores disponveis e quais so
as suas caractersticas.

Atuadores
Visibility
O atuador Visibility determina se o objeto e os seus filhos da
relao de parentesco sero visveis ou no no game.

visveis ou no no game

Parmetros:
Visible: Seta a visibilidade do objeto;
Occlusion: Determina se o objeto agir como uma mscara de
ocluso para os outros ou no;
Children: Estabelece se os filhos da relao de parentesco
tero as mesmas propriedades de visibilidade e ocluso.

State
O atuador State determina o estado ativo do objeto.
Aprenderemos mais sobre States em um captulo futuro.

captulo futuro.

116

Livro Blender.indb 116

11/02/2012 12:51:16

A t u a d o r e s

Parmetros:
Operation: Seta a operao realizada;
Change state: Muda para o estado especificado;
Remove state: Remove o estado especificado da lista de
execuo;
Add state: Adiciona o estado especificado na lista de
execuo;
Set State: Muda para o estado especificado removendo os
outros.
Layers: Estabelece em qual State a operao ir se referenciar.

Sound
O atuador sound responsvel pelo play de arquivos de som.

Parmetros:
Play Mode: Seta a forma com que o som ser tocado, Play,
Loop ou Bidirecional;
Volume: Estabelece o volume do Audio;
Pitch: Estabelece um valor de distoro de agudo e grave;
117

Livro Blender.indb 117

11/02/2012 12:51:16

B l e n d e r

3D Sound: Configura parmetros do som 3D estreo.

Steering
O atuador steerring responsvel pelo sistema de IA pathfinding
implementado na BGE.

Parmetros:
Behavior: Define um dos seguintes comportamentos para o
sistema:
Seek: Segue o objeto Target;
Flee: Foge de um objeto Target;
Path Following: Segue um objeto por um caminho
especificado.
Target Object: Determina o objeto alvo do sistema;
Nevigation Mesh: Estabelece qual o mesh de navegao por
onde o objeto poder se locomover (Note que o NavMesh tem de
estar pr-configurado);
Dist: Mxima distncia em que o alvo pode ser encontrado;
Velocity: Velocidade do objeto;
118

Livro Blender.indb 118

11/02/2012 12:51:16

A t u a d o r e s

Acceleration: Acelerao do objeto;


Turn speed: Velocidade de giro do objeto.
Facing/Axis: Liga/Desliga e estabelece o eixo em que ser
aplicado;
Self Terminated: Desativa o atuador quando o objeto for
encontrado;
Visualize: Apresenta um Debug visual do comportamento do
objeto.

Scene
O atuador Scene responsvel pelas funes relativas ao
gerenciamento de cenas na BGE

Parmetros:
Scene: Configura a funo a ser executada:
Resume Scene: Reabre uma Scene previamente suspensa;
Suspend Scene: Suspende Temporariamente uma Scene;.
Remove Scene:Remove definitivamente uma Scene da
memria;
Add Background Scene: Adiciona uma Scene como
Background da atual;
Add Overlay Scene: Adiciona uma Scene frente da atual;
Set Camera: Estabelece o objeto cmera ativo da cena
atual;
Set Scene: Troca a Scene atual pela Scene especificada;
Restart: Reinicializa a cena atual.

Random
119

Livro Blender.indb 119

11/02/2012 12:51:16

B l e n d e r

O atuador Random aplica um valor aleatrio para a propriedade


especificada de acordo com a funo de distribuio configurada

Parmetros:
Seed: Valor base para o calculo de aleatoriedade;
Distribution: Funo de aleatoriedade;
Property: Propriedade a ser setada.

Property
O atuador Property responsvel pelas funes de manipulao
e edio de propriedades.

Parmetros:
Mode: Configura a funo aplicada a propriedade;.
Assign: Aplica o valor especificado;
Add: Adiciona o valor especificado propriedade;
Copy: Copia o valor de uma propriedade de outro objeto
para uma sua;
120

Livro Blender.indb 120

11/02/2012 12:51:17

A t u a d o r e s

Toggle: Reseta/Inverte o valor da propriedade;

Value: Valor aplicado operao.

Parent
O atuador Parent responsvel por criao e remoo de
parentesco entre objetos em tempo de execuo

Parmetros:
Scene: Configura a funo aplicada a propriedade;
Set Parent: Cria parentesco com o objeto especificado;
Remove Parent: Remove parentesco com o objeto
especificado;
Parent Object: Objeto alvo da funo;
Compound: Configura o bound de fsica do objeto para o tipo
compound;
Ghost: Configura a fsica do objeto para o tipo Ghost.

Motion
O atuador Motion responsvel por aplicar operaes relativas
transformao de objeto e fsica;.
OBS: As opes da seo Dynamic Object Settings s esto
disponveis para os tipos Dynamic, Rigid Body e Soft Body.

121

Livro Blender.indb 121

11/02/2012 12:51:17

B l e n d e r

Parmetros:
Motion Type: Configura o tipo de movimentao;
Simple Motion: Movimento aplicado diretamente;
Loc: Operao de translao simples;
Rot: Operao de rotao simples;
Force: Aplicao de Fora;
Torque: Aplicao de Torque;
Linear Velocity: Aplicao de Velocidade Linear;
Angular Velocity: Aplicao de Velocidade Angular;
Damping Frames: Quantidade de frames para se obter a
velocidade aplicada;
Servo Control: Movimento relativo;
Object Reference: Objeto de referncia para o calculo de
velocidade;
122

Livro Blender.indb 122

11/02/2012 12:51:17

A t u a d o r e s

Linear Velocity: Velocidade Linear aplicada ao object;


X,Y,Z: Configura o limite de fora aplicada a cada um dos
eixos.

Message
O atuador Message responsvel pelo envio de mensagens
para outros objetos.

Parmetros:
To: Especifica o objeto que ir receber a mensagem (quando em
branco significa uma mensagem em broadcast);
Subject: Ttulo da mensagem;
Body: Pode conter um texto ou o valor de uma propriedade.

Game
O atuador Message responsvel por funes de manipulao
de arquivos .blend e do fluxo do game

123

Livro Blender.indb 123

11/02/2012 12:51:17

B l e n d e r

Parmetros:
Game: Especifica a funo a ser executada:
Start Game From File: Especifica o arquivo .blend a ser
carregado ( O arquivo .blend pode ser renomeado para qualquer
outro formato, data,.cenrio, etc. e, ainda assim, ser lido
corretamente );
Restart Game: Reinicializa o arquivo .blend atual;
Quit Game: Fecha a aplicao ( Mesma funo do Esc
configurado por default );
Save GlobalDict: Salva um dicionrio de dados;
Load GlobalDict: Abre um dicionrio de dados.

Filter 2D
O atuador Filter 2D responsvel pela aplicao de efeitos de
post process.

Parmetros:
Filter 2D Type: Especifica a funo a ser aplicada

Add Object
O atuador Add Object responsvel pela manipulao de
objetos em tempo de execuo.

124

Livro Blender.indb 124

11/02/2012 12:51:17

A t u a d o r e s

Parmetros:
Edit Object: Configura a funo a ser aplicada.
Add Object: Adiciona o objeto no cenrio, com o tempo de
vida e velocidades angular e linear especificados (NB: O objeto
adicionado tem que estar em uma layer diferente do objeto que
o chama);
End Object: Remove o objeto do cenrio;
Replace Mesh: Troca o mesh do objeto atual, pelo mesh
especificado;
Track To: Atualiza a orientao do objeto para que aponte
para o objeto especificado;
Dynamics: Liga, desliga e restaura opes de Fsica.

Constraints
O atuador Constraints responsvel pela criao de constraints
em tempo de execuo.

125

Livro Blender.indb 125

11/02/2012 12:51:17

B l e n d e r

Parmetros:
Constraints Mode: Configura a funo a ser aplicada.
Location Constraints: Adiciona uma constraint para
limitao de movimentao do objeto no eixo especificado;
Distance Constraints: Adiciona uma constraint para
limitao de movimentao em relao a outro objeto;
Orientation Constraints: O mesmo que location, porm
aplicado orientao;
Force Field Constraint: Cria um campo de fora fsica que
o afasta de qualquer objeto detectado na direo especificada.

Cmera
O atuador cmera faz com que um objeto cmera siga outro
objeto de forma automtica.

Parmetros:
Cmera Object: Especifica o objeto alvo da funo;
Height: Especifica a altura que a cmera estar do objeto;
Axis: Especifica o eixo preferencial.

Action
O atuador Action toca uma animao do objeto especificado.

126

Livro Blender.indb 126

11/02/2012 12:51:17

A t u a d o r e s

Parmetros:
Function: Especifica a funo de player a ser executada;
Action: Especifica a animao a ser executada;
Continue: Continua a animao do ultimo quadro tocado
quando a animao ligada/desligada;
Start: Quadro inicial da animao;
End: Quadro final da animao;
Child: Toca a animao de todos os filhos tambm;
Blending: Nmero de frames mixados na troca de animaes;
Priority: Prioridade de execuo dessa animao;
Layer: Layer da animao;
Layer Weight: O quanto o layer anterior mixa com o atual;
Frame Property: Joga o ndice do keyframe atual para a
propriedade especificada.

Dicas e Sugestes
ACTUATORS e PULSOS
Cada atuador funciona de forma
diferente com relao aos pulsos
recebidos pelos sensores. Fique atento
para configuraes diferentes, usando
Pulse Mode True.

127

Livro Blender.indb 127

11/02/2012 12:51:17

ANOTAES

Livro Blender.indb 128

11/02/2012 12:51:17

B l e n d e r
C a p t u l o
A p r o f u n d a n d o

Livro Blender.indb 129

e m

1 3
L o g i c

B r i c k s

11/02/2012 12:51:17

B l e n d e r

Captulo 13 - Aprofundando em Logic Bricks


J vimos, at aqui, todas as principais funes relativas aos
Logic Bricks. Podemos agora compreender o funcionamento
de caractersticas muito importantes, que iro possibilitar a
construo de programas mais complexos. Estes so os Logic
Bricks compartilhados e sistemas de States.

Logic Bricks Compartilhados


Uma das caractersticas mais importantes do Logic Bricks a
capacidade de compartilhar blocos lgicos (sensores, controladores
e atuadores), entre objetos de forma, proporcionando a criao de
lgicas mais complexas.
Imagine a seguinte situao: ao encostar num boto (uma caixa
de cenrio) tocada uma animao em uma porta (outro objeto
independente). Da forma como vimos, at o momento, poderamos
realizar a comunicao entre eles atravs de mensagens (atuador
e sensor Message). Existe, porm, uma forma mais simples para
realizar esta operao, usando uma caracterstica fundamental dos
Logic Bricks, que o compartilhamento de blocos lgicos.
No caso exemplificado podemos imaginar a estrutura de
funcionamento da lgica da seguinte forma:

O sistema Logic Bricks nos permite realizar exatamente este


tipo de operao, ligando um atuador ou sensor de um objeto no
controlador de outro. Assim, quando o sensor Collision do objeto
boto for ativado, enviar um pulso para atuador Action do objeto
Porta.
130

Livro Blender.indb 130

11/02/2012 12:51:17

A p r o f u n d a n d o

e m

L o g i c

B r i c k s

Para realizar este tipo de operao necessrio somente


selecionar os 2 objetos desejados. Deste modo ser apresentado o
Logic Bricks dos 2 objetos, ao mesmo tempo, no Logic Editor. Os
blocos lgicos so separados por um cabealho que indica a qual
objeto eles se referem. O primeiro da lista sempre o objeto ativo e
a ele pode-se adicionar sensores, controladores e atuadores.

Um ponto a ser observado que possvel ligar no somente


2, mas um ilimitado numero de objetos desta forma ao mesmo
tempo. Porm, devemos tambm ter em mente que essa prtica
s recomendada quando os 2 objetos possuem um vinculo em
toda a execuo da aplicao.

States
Podemos entender o sistema de estados de Logic Bricks como
um conjunto de Layers para programao, onde somente sero
executadas as operaes dos Layers ativos.
Este sistema particularmente til quando um elemento do
game possui vrias funcionalidades diferentes, dependendo do seu
131

Livro Blender.indb 131

11/02/2012 12:51:17

B l e n d e r

estado. Um player, por exemplo, possui diferentes comportamentos


quando est sobre a superfcie da gua e quando est submerso.
Com o sistema de states, podemos separar os 2 eventos citados
em Layers diferentes, aplicando a eles operaes de transio.
Para tornar visvel as opes de states da BGE, clique no boto
+, no lado esquerdo do menu Add Controller. Aparecer uma
srie de layers como na imagem abaixo:

Visible configura o layer atual visvel para edio, enquanto


Initial seta o layer inicial quando a aplicao for executada.
So os controladores que gerenciam a visibilidade dos
elementos. No caso hipottico de um programa com 2 controladores
(CONT1 e CONT2), onde Cont1 e Cont2 esto nos layers 1 e
2, respectivamente, qualquer sensor conectado a Cont1 s ser
visvel e processado caso o layer ativo seja o layer. O mesmo
ocorre com o controlador Cont2. A montagem abaixo exemplifica
o caso:

Dicas e Sugestes
STATES
States podem ser utilizadas como
mquinas de estado finitos e/ou como
arvore decisrias economizando assim
o uso de propriedades.
Tente sempre utilizar states e no
propriedades para qualquer situao em
que haja troca de estados fundamentais
por exemplo On/Off da movimentao
de um player.

Note que ao lado do nome do controlador existe uma opo


para troca de layer. Caso a troca seja efetuada, todos os sensores e
atuadores ligados ao controlador sero tambm transferidos para
outro layer.
Naturalmente precisamos realizar trocas entre os layers ativos
em tempo de execuo. Para isto utilizamos o atuador State.

132

Livro Blender.indb 132

11/02/2012 12:51:17

ANOTAES

Livro Blender.indb 133

11/02/2012 12:51:17

Livro Blender.indb 134

11/02/2012 12:51:17

B l e n d e r
C a p t u l o

1 4

A s s e t M a n a g e m e n t

Livro Blender.indb 135

11/02/2012 12:51:17

B l e n d e r

Captulo 14 - AssetManagement
A conversao de arquivos entre softwares 3D um ponto
crucial para reutilizao de trabalho e para o gerenciamento de
grandes projetos. Neste captulo aprenderemos como trabalhar
com vrios arquivos .blend e como importar modelos de outros
softwares de edio 3D como Maya, 3DMax e/ou Zbrush.

Append e Link de arquivos .blend


Uma das principais caractersticas do Blender a possibilidade
de se trabalhar com vrios arquivos .blend em conjunto para o
desenvolvimento do game. Podemos, assim, separar elementos
do game em arquivos individuais.
Fazemos a juno de objetos em arquivos .blend, separados de
duas formas, atravs das funes Append e Link:

Append
A funo Append funciona criando uma cpia do elemento do
arquivo especificado e o adiciona no seu cenrio atual. Podemos
assim importar objetos, scenes, texturas, materiais, cmeras, etc.
de outros arquivos .blend para o atual.
Atualmente a funo Append est disponvel no menu File/
Append do painel Informations. Assim que a opo selecionada
a interface do Blender apresenta o editor file browser.

136

Livro Blender.indb 136

11/02/2012 12:51:17

A s s e t M a n a g e m e n t

Observe que quando um arquivo .blend selecionado vrias


pastas so mostradas. Os arquivos .blend so organizados de
modo que a possibilitar internamente a separao dos seus
vrios elementos, como materiais, texturas, objetos, etc. Alguns
desses elementos herdam outros quando importados. Assim,
em se importando um material, as suas texturas sero tambm
importadas. De modo semelhante, se importando um objeto, todas
os seus materiais sero tambm importados.

Link
A funo Link age de forma similar ao Append, adicionando
o elemento importado no cenrio atual. Mas ele cria apenas uma
referncia para o arquivo original, e no uma cpia, de modo que
no possvel editar o elemento no .blend destino.
O Uso de um gerenciamento de modelos do tipo Link
importante quando se deseja usar um mesmo objeto ou estrutura
em vrios scenes diferentes. Deste modo, haver modificao no
original, e estas sero propagadas para todos os outros arquivos.

Formatos externos padres


Atualmente o Blender tem suporte importao e exportao
de uma grande gama de arquivos. Alguns esto disponveis por
default; outros so passveis de serem habilitados atravs de addons. Estes esto disponveis atravs da aba add-ons do menu
File/User Preferences.
Podemos encontrar importers e exporters para os principais
formatos como COLADA (.dae) , FBX (.fbx), Autocad (.dxf),
Wavefront (.obj) e outros mais especficos,como UDK (.psk/.psa),
Blizzard M3 (.m3), GIMP Layers (.xcf).

137

Livro Blender.indb 137

11/02/2012 12:51:17

B l e n d e r

Dicas de Resoluo de Problemas


Alguns problemas podem surgir ocasionalmente na converso
de arquivos entre softwares. Os nveis de compatibilidade
dependem tanto da implementao do importer no Blender, quanto
da implementao do exporter no software origem. Os problemas
mais comuns esto listados abaixo:
O Modelo est com as normais invertidas
Entre no modo de edio do objeto com a tecla Tab, depois
aplique a funo para recalcular as normais com o hotkey Ctrl +
N.
O Modelo foi convertido para tringulos.
Para converter um modelo para Quad., entre no modo de edio
do objeto com a tecla Tab, depois aplique a funo Alt + J.
Problemas com materiais e texturas
Na maioria dos formatos as texturas e UVs so importadas
com eficincia. Porm, quase sempre necessrio a recriao do
material para que o modelo funcione de forma correta na BGE.

138

Livro Blender.indb 138

11/02/2012 12:51:17

ANOTAES

Livro Blender.indb 139

11/02/2012 12:51:17

Livro Blender.indb 140

11/02/2012 12:51:18

B l e n d e r
C a p t u l o
I n t r o d u o

Livro Blender.indb 141

1 5
B G E

A P I

11/02/2012 12:51:18

B l e n d e r

Captulo 15 - Introduo a BGE API


Uma das principais caractersticas da BGE a possibilidade
de criao de games inteiros, sem a necessidade de escrita de
scripts em linguagem de programao. Porm, isso no exclui a
possibilidade de utilizarmos esta em conjunto com os logic bricks
para criar comportamentos mais complexos e acessar bibliotecas
de funes externas. Neste captulo, ser descrita uma introduo
programao em Python para a BGE. Este o nico captulo
da apostila voltado a programadores, sendo recomendado, para
sua melhor leitura e compreenso, que se tenha conhecimentos
bsicos em programao estruturada e orientada a objeto.

Python na BGE

Python uma linguagem de programao, interpretada, que


amplamente utilizada no Blender e na BGE. No Blender podemos
utiliz-la para definir elementos da interface visual, para a criao de
ferramentas, bem como outros tipos de add-nos, como importers/
exporters e conexo com aplicaes externas. Na BGE podemos
utiliz-la juntamente com os logic bricks para criar a programao
dos jogos.
A linguagem Python tem algumas vantagens em relao a
outras linguagens de programao. Principalmente com relao
legibilidade de cdigo, facilidade de utilizao e a extensa gama de
bibliotecas build-in nativa, que permite,sem muitas complicaes,
acesso ao SO, comunicao por Socket entre outros.
Como vimos no decorrer de todo o curso, o centro da
programao na BGE o sistema Logic Bricks. Para utilizarmos
scripts python temos ento que entreg-los aos logic Bricks. Isto
feito atravs do controlador do tipo Python.
142

Livro Blender.indb 142

11/02/2012 12:51:18

I n t r o d u o

B G E

A P I

O controlador do tipo Python acessa um script que pode ser


escrito tanto dentro do Blender, com o Text Editor, quanto nos
arquivos externos no formato .py. Estas so as opes Script e
Module respectivamente.
Os scripts python criados so baseados no conceito de que
iremos, atravs de cdigos python, acessar os objetos da interface
visual do Logic Bricks. Deste modo, atravs do controlador Python,
iremos acessar os sensores e atuadores ligados a ele. importante
notar tambm que os scripts python so ativados pelos sensores
exatamente da mesma forma que os atuadores. Deste modo, se
nenhum sensor ligado ao Script python for ativado, o script no
ser executado.
A API do Blender possui alguns mdulos; e o principal deles
o Logic. Podemos entender resumidamente a estrutura de acesso
dos componentes do mdulo Logic na imagem a seguir:

143

Livro Blender.indb 143

11/02/2012 12:51:18

B l e n d e r

O programa abaixo apresenta alguns conceitos da programao


em python da BGE:

# A funo import bge, importa a API do Blender


import bge
# getCurrentController retorna o controlador que est chamando este programa (o mesmo
obj controlador do logic bricks)
cont = bge.logic.getCurrentController()
# a partir do controlador podemos retornar os sensores, atuadores e objeto (owner) que o
contm
obj = cont.owner
s1 = cont.sensors[Sensor1]
act = cont.actuators[Motion1]
#podemos agora aplicar funes ao objeto, realizar a leitura de um sensor e/ou #ativar/
desativar um atuador.
print(obj.worldPosition) # Mostra a posio do objeto no console
if s1.positive: # Testa se o sensor 1 est ativo

print(Sensor 1 ativo) # Caso esteja mostra a mensagem no console

cont.activate(act) # Ativa tambm o atuador act
else: # caso no esteja ativo

cont.deactivate(act) #Desativa o atuador

Podemos ainda acessar outros objetos e realizar operaes de


cena, retornando a Scene ativa com bge.logic.getCurrentScene()
A BGE possui outros mdulos documentados que so:
bge.render: contm opes relativas janela de exibio e
posies relativas na tela,como posio do mouse, etc. Tambm
possvel realizar configuraes em tempo de execuo para modos
de renderizao, entre outros.
bge.texture: permite a manipulao de texturas em tempo de
execuo, como troca de texturas, player de vdeo como texturas,
texturas reflexivas em tempo real e outros..
bge.events: contm funes de gerenciamento de eventos, de
mouse e teclado, de forma mais robusta.
bge.constraints: permite a criao e destruio de constraints
em tempo de execuo.

144

Livro Blender.indb 144

11/02/2012 12:51:18

I n t r o d u o

B G E

A P I

Podemos encontrar a documentao para todos os mdulos do


Blender em: http://www.blender.org/development/
Podemos ainda importar e utilizar libs build-in da linguagem
python, como zip file para compactao, descompactao de
arquivos zip, a lib socket para comunicao TCP/UDP em rede,
entre outras.
Tambm nos possvel definir efeitos em linguagem GLSL,
tanto para materiais, quanto para efeitos de post process. No
caso especfico de materiais, precisamos adicionar algumas
configuraes. Um exemplo de cdigo GLSL de material aplicado
por Logic Bricks e python est abaixo:

Simple Texture GLSL


By Vitor Balbio
import bge
VertexShader =
uniform float timer;
uniform float Vel;
uniform float deform;
varying vec4 texCoords;
void main() {
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}

FragmentShader =
varying vec4 texCoords;
uniform sampler2D diff;
void main() {
vec4 color = texture2D(diff, gl_TexCoord[0].st);
gl_FragColor = color;
}

obj = bge.logic.getCurrentController().owner
mesh = obj.meshes[0]
mat = mesh.materials[0]
shader = mat.getShader()
shader.setSource(VertexShader, FragmentShader,1)
shader.setSampler(diff,0)

145

Livro Blender.indb 145

11/02/2012 12:51:18

B l e n d e r

Abaixo est um exemplo de cdigo GLSL para utilizao com


o sistema de post process da BGE. Para isto, utilize o atuador 2D
configurado para Custom Shader

uniform sampler2D bgl_RenderedTexture;


uniform float vignette_size;
const float tolerance = 0.6;
void main(void)
{

vec2 powers = pow(abs(gl_TexCoord[3].st - 0.5),vec2(2.0));

float radiusSqrd = pow(vignette_size,2.0);

float gradient = smoothstep(radiusSqrd-tolerance, radiusSqrd+tolerance, powers.
x+powers.y);


gl_FragColor = mix(texture2D(bgl_RenderedTexture, gl_TexCoord[0].st),
vec4(0.0), gradient);

gl_FragColor.a = 1.0;}

Dicas e Sugestes
PHYTON
A linguagem python extremamente
simples
e
robusta,
ideal
para
programao de scripts de games. A
API do Blender oferece uma soluo
bastante robusta para aqueles que
querem desenvolver seus games para a
plataforma PC. Investir no aprendizado
de uma linguagem de programao
geralmente algo tedioso para artistas.
Entretanto, a linguagem python
certamente uma boa porta de entrada
para o mundo de programao para
aqueles que desejam aprender esta
etapa do desenvolvimento de jogos.

146

Livro Blender.indb 146

11/02/2012 12:51:18

ANOTAES

Livro Blender.indb 147

11/02/2012 12:51:18

Livro Blender.indb 148

11/02/2012 12:51:18

B l e n d e r
C a p t u l o
F i n a l i z a n d o

Livro Blender.indb 149

u m

1 6
G a m e

11/02/2012 12:51:18

B l e n d e r

Captulo 16 - Finalizando um Game


Neste captulo iremos aprender como gerar executveis
standalone, de modo que as nossas aplicaes possam ser
executadas em qualquer PC, sem a necessidade do Blender estar
instalado na mquina. Alm disto, daremos outras dicas com
relao a organizao de arquivos de projeto.

Gerando executveis
Para gerar um arquivo executvel precisamos habilitar um addon disponvel de forma build-in no Blender.
Para isto, acessamos o editor User preferences, no menu File
no editor Info, e habilitamos o add-on Save Game as Runtime.
E podemos filtrar facilmente o add-on ativando o filtro Game
Engine.

Quando este add-on estiver habilitado, uma nova opo estar


disponvel no menu Export. Acionando esta opo, abriremos a
tela de exporter de aplicaes. Selecione, ento, diretrio, nome
da aplicao e exportar.

150

Livro Blender.indb 150

11/02/2012 12:51:18

F i n a l i z a n d o

u m

G a m e

Terminando o processo, ser criado um arquivo executvel


contendo no seu interior o arquivo .blend atual, de forma
compactada. Sero tambm copiadas todas as dependncias de
sistema como DLLs e as bibliotecas python.
Note que texturas, outros .blends e scripts externos no sero
copiados. Voc ter de executar essa operao manualmente.
Uma prtica comum utilizar um arquivo Main.blend, com
apenas um empty, chamando os outros .blends do game em si,
gerando o executvel a partir do mesmo.
possvel tambm, em vez de gerar executveis contendo
arquivos .blend, utilizar o blender player para executar .blends
externos. E isto pode ser feito atravs de arquivos .bat.

Paths e Pack de Texturas


Um dos problemas mais comuns com a criao de arquivos
executveis finais a perda de referncia das texturas. Por default,
toda textura possui referncia absoluta. Assim, caso seu aplicativo
seja transferido para outro PC, provavelmente perder o path da
textura.
Para tornar os paths relativos, use a funo Make All Paths
Relative, no menu File/ External Data.
O menu File/ External Data disponibiliza outras funes relativas
ao gerenciamento de paths, incluindo a importante funo Pack
into .blend file, que ir fazer com o que o arquivo .blend encapsule
todas as texturas da aplicao, evitando que as texturas fiquem
151

Livro Blender.indb 151

11/02/2012 12:51:18

B l e n d e r

em pastas soltas e visveis. Alm disto, d mais segurana aos


arquivos da aplicao.

Dicas e Sugestes
EXECUTVEIS
Executveis gerados com o Blender s
funcionam no SO no qual ele foi gerado.
Ou seja, uma aplicao gerada no
Windows no ir rodar no Linux e vice
versa.
ARQUIVOS .BLEND
Todas as funes do Blender relativas
a arquivos .blend funcionam mesmo
que a extenso do arquivo no seja
explicitamente esta. Isto permite
que os arquivos .blend possam ser
renomeados para outros formatos,
como, por exemplo, .scene ou .data,
aumentando a segurana da aplicao.

152

Livro Blender.indb 152

11/02/2012 12:51:18

ANOTAES

Livro Blender.indb 153

11/02/2012 12:51:18

Livro Blender.indb 154

11/02/2012 12:51:18

B l e n d e r
C a p t u l o

B o n u s

M a t e r i a i s

Livro Blender.indb 155

11/02/2012 12:51:18

B l e n d e r

Captulo Bonus - Materiais


Uma das habilidades mais interessantes em se tratando da BGE
a possibilidade de edio de materiais baseados em shaders, de
modo visual. Neste captulo bnus iremos aprender como funciona
o sistema de materiais da BGE.

Shaders
Antes de iniciar o estudo de materiais na Blender Game
Engine, precisamos compreender como funcionam os sistemas de
materiais em aplicaes em tempo real.
Basicamente, material o conjunto de propriedades de um
objeto ou geometria que define a forma com que ele reage a
iluminao. Materiais podem ser mais ou menos reflexivos,
translcidos, terem cores diferentes ou mesmo simular geometrias
inexistentes. Tais propriedades podem ser calculadas atravs de
2 modelos de sombreamento (shading): o per vertex e o modelo
per pixel.
No modelo per vertex a iluminao calculada para cada vrtice
do objeto, atravs da formula de Lambert I= Dot(NL), sendo I a
intensidade da luz e Dot o produto interno entre vetores/matrizes.
No vetor normal do vrtice, L o vetor posio da luz. Ou seja:
cada vertex ter um valor relativo sua iluminao. E a face ir,
ento, interpolar os valores dos vrtices em um dgrad, de modo
que no existam descontinuidades.
Este modelo foi muito utilizado durante algum tempo. Mas logo
se detectou um problema: quanto maior a qualidade da iluminao
calculada no objeto, maior tem de ser a quantidade de polgonos.
Assim, aumentando bruscamente a quantidade de polgonos,
aumentava de modo semelhante o custo de processamento. Era,
pois, necessrio um modelo de sombreamento que, independente
da quantidade de vrtices, mantivesse a mesma qualidade. Assim
surgiu o shader e o modelo de iluminao per pixel.
O Modelo de iluminao per pixel atua de forma similar, mas
no calcula a iluminao baseada na normal do vrtice; e sim na
normal do pixel relativo ao objeto.
Toda vez que o processo de renderizao encontra um pixel
156

Livro Blender.indb 156

11/02/2012 12:51:18

M a t e r i a i s

relativo a um objeto, que possui nele um shader associado, o


shader processado e retorna o valor de iluminao do pixel. O
shader , portanto, um programa de computador, executado pela
GPU, que tem como nica funo calcular a forma com que os
objetos reagem iluminao.
Abaixo podemos ver a diferena da aparncia, em um modelo
de poucos polgonos, em se utilizando os modelos de iluminao
per vertex e per pixel:

Shaders na BGE
Podemos habilitar o uso de shaders na View3D e na BGE,
atravs do menu Properties da 3Dview (Boto N), e em seguida
na guia Display/ Shading.
Para habilitar a visualizao na 3D view precisamos setar a
interface para o modo de visualizao de texturas. Esta opo se
encontra no Header da 3Dview.

Neste ponto a interface do Blender3D e a BGE j esto


trabalhando com o modelo de sombreamento per pixel.
Uma das vantagens do Blender que no precisamos definir
os cdigos GLSL dos shaders, pois ele tem um sistema interno de
criao de materiais que, automaticamente, converte o material e
157

Livro Blender.indb 157

11/02/2012 12:51:18

B l e n d e r

o configura na interface para linguagem de cdigo. Este editor de


materiais est disponvel no painel Materials do editor Properties.
Vamos listar aqui as principais funes, quando trabalhando
com a configurao Blender Game da interface:
Difuse: Pigmentao do modelo, modelo de iluminao e
intensidade com que o modelo reflete a luz vinda at ele.
Specular: Highlights de reflexo do modelo.
Shading:
Emit: Valor de auto-iluminao do objeto;
Shadeless: No aplica nenhum modelo de iluminao
somente as texturas aplicadas. (EXPLICAR MELHOR!!!!!)
Game Settings:
Backface Culling: Remove as faces de trs dos objetos,
invisveis, aumentando a velocidade de processamento;
Invisible: Faces que no estaro visveis;
Text: Faces que usaro o sistema de texto buildin da BGE;
Alpha Blend: Configura o modo com que os Objetos
gerenciam a transparncia: Opaque, para objetos sem
transparncia; Alpha Blend, para objetos com mapa de
transparncia em degrad; Clip Alpha, para mapas de
transparncia binrios (com pixel transparente ou no);
Face Orientation: Aplica funes de transformao de
face, como, Billboard e outros.
Physics: Funes relativas fsica do material, como Frico,
Elasticidade e outros.
Options:
Object Color: Mixa a cor do material com o object Color
(configurado no painel Object);
Use Mist: Habilita o mix da cor do material com o sistema
de Fog da BGE.
Transparency: Configura a transparncia do objeto.
necessrio o uso de Ztransp, quando utilizando mapas com alpha.

158

Livro Blender.indb 158

11/02/2012 12:51:18

M a t e r i a i s

Node Editor
Outra caracterstica do sistema de materiais do Blender/BGE
a possibilidade de configurar materiais utilizando o sistema de
Node.
Para isto necessrio dividir um editor e adicionar o Node
Editor em um dos lados. Depois, ative a opo Use Nodes, no
header do Node Editor, e ento o material ativo aparecer no editor.
Em seguida, selecione a que material o Node se refere.

Note que voc pode adicionar operaes no percurso entre a


sada do material e a entrada do Output.
Abaixo esto alguns exemplos de materiais e efeitos criados
com o Node Editor, alguns deles utilizando tambm o mdulo
VideoTexture:
REALTIME CAR SHADER

159

Livro Blender.indb 159

11/02/2012 12:51:18

B l e n d e r

X-RAY SHADER

REFRACTION

OBS: Para uso de refrao, necessrio


programao por script python, usando o mdulo
bge.texture.

160

Livro Blender.indb 160

11/02/2012 12:51:19

ANOTAES

Livro Blender.indb 161

11/02/2012 12:51:19

Livro Blender.indb 162

11/02/2012 12:51:19

Você também pode gostar