Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Game engine do blender, Notas de estudo de Pedagogia

Ambiente integrado, com modelador, animação e ?game player?. - Construção de objetos com Física aplicada (dinâmica de corpo rígido) e simulação de colisão. - De fácil interatividade com sensores predefinidos e outros blocos lógicos. - Multiplataforma: Windows, Linux, FreeBSD, BeOS, Irix e mais...

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 30/05/2010

ricardo-augusto-ricardo-3
ricardo-augusto-ricardo-3 🇧🇷

1 documento

1 / 53

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
GAME ENGINE DO BLENDER
(Traduzido por Aclive)
http://ddj.orgfree.com
1. INTRODUÇÃO:
1.3 - Por que utilizar a engine Blender? Qual o seu potencial?
- Ambiente integrado, com modelador, animação e “game player”.
- Construção de objetos com Física aplicada (dinâmica de corpo rígido) e simulação de colisão.
- De fácil interatividade com sensores predefinidos e outros blocos lógicos.
- Multiplataforma: Windows, Linux, FreeBSD, BeOS, Irix e mais...
1.4 - LÓGICA DE UM JOGO:
A figura abaixo mostra um objeto (o jogador) num cenário simples.
Esta seção corresponde a um pequeno tutorial que irá ensiná-lo a:
- Ajustar os atributos dos objetos;
- adicionar blocos lógicos
- conectar os blocos lógicos
- o uso básico de teclado, “Always” e “Touch Sensor” (sensor de toque)
Este documento não ensina como usar o Blender, a modelar ou fazer qualquer animação. Para
estas informações, procure o manual ou os inúmeros tutoriais dispostos na internet.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35

Pré-visualização parcial do texto

Baixe Game engine do blender e outras Notas de estudo em PDF para Pedagogia, somente na Docsity!

GAME ENGINE DO BLENDER

(Traduzido por Aclive ) http://ddj.orgfree.com

1. INTRODUÇÃO:

1.3 - Por que utilizar a engine Blender? Qual o seu potencial?

  • Ambiente integrado, com modelador, animação e “game player”.
  • Construção de objetos com Física aplicada (dinâmica de corpo rígido) e simulação de colisão.
  • De fácil interatividade com sensores predefinidos e outros blocos lógicos.
  • Multiplataforma: Windows, Linux, FreeBSD, BeOS, Irix e mais...

1.4 - LÓGICA DE UM JOGO:

A figura abaixo mostra um objeto (o jogador) num cenário simples. Esta seção corresponde a um pequeno tutorial que irá ensiná-lo a:

  • Ajustar os atributos dos objetos;
  • adicionar blocos lógicos
  • conectar os blocos lógicos
  • o uso básico de teclado, “Always” e “Touch Sensor” (sensor de toque) Este documento não ensina como usar o Blender, a modelar ou fazer qualquer animação. Para estas informações, procure o manual ou os inúmeros tutoriais dispostos na internet.

Preparando: Inicie o Blender e carregue o arquivo “B-Man1.blend”. Você pode usar a tecla F1 ou o menu “FILE” para carregar a cena. Com a cena já carregada, provavelmente você verá algo parecido com o screenshot abaixo: A janela 3D a esquerda é uma “view” texturizada para a câmera. A janela direita é um frame do arame da observação do caracter “jogador” (player). Ele está selecionado, devido a sua coloração rosa. A parte inferior é onde se encontra os botões com as funções (RealTimeButtons), você pode chamá-las com F8. É aqui que a maioria do trabalho de interatividade dos gráficos 3D no blender serão feitos. Agora podemos iniciar a “gameEngine” movendo o cursor do mouse para a janela 3D e pressionando a tecla “P”. Com nós não definimos qualquer tipo de interatividade você vai ver as linhas de controle desaparecerem e o céu azul em vez de cinza. Pressione ESC para parar a “gameEngine” novamente. Fazendo um ator “que cai”: Agora clique com o botão esquerdo do mouse sobre o “ator” no “RealtimeButtons”. Simplesmente ative o botão escrito “DYNAMIC”. Isto define par o objeto selecionado como um ator que ele será construído com atribuições de “Física” da “gameEngine” (ou seja, será um corpo que é afetado por uma gravidade). Se você acidentalmente tirar a seleção do jogador torne a selecioná-lo com o botão direito do mouse e recarregue a cena.

Selecionando o tipo de “LogikBrick”. O screenshot acima mostra os tipos de “LogicBricks” existentes. Clique no botão escrito “Always” e escolha “Kayboard”. Na versão 2.41 o screen é um pouco diferente do de cima, mas no geral é bem semelhante. Agora clique com o botão esquerdo no interior da caixa fazia correspondente ao campo “key”. O texto “Press any key” aparece. Pressione a tecla que você deseja para mover seu personagem para frente (eu sugiro a seta para cima). Agora nós temos como controlar o movimento. Nós vamos definiar como o jogador vai se mover. A primeira linha de números é chamada “FORCE” e define com que força será aplicada quando o controle de movimento estiver ativo. Os três numeros são as respectivas forças no eixo X, Y e Z. Se olhar na malha do jogador você verá para onde o eixo X está apontando. Para mover para frente é necessário aplicar uma força “positiva” ao longo do eixo X. Para fazer isto basta clicar sobre o número com o botão esquerdo do mouse. Coloque o valor 10.00 para X. Nos temos que fazer as ligações como foram exibidas no screenshot mais acima. Nos precisamos conectar através de linhas os blocos lógicos. Clique e arraste com o botão esquerdo do mouse pressionado sobre a bola amarela do “Keyboard Sensor” e você observará uma linha preta, ligue esta linha preta no anel no controlador AND. Solte o mouse e agora os “LogicBricks” estão conectados. Agora conecte a bola amarela do controlador AND com o anel do controle de movimento (Motion Controller). Para deletar uma conexão mova o mouse sobre a conexão. A linha irá ficar evidente e você poderá apagá-la pressionando a tecla X ou DELETE. Agora pressione a tecla “P” para iniciar a “gameEngine” e então pressione a SETA PARA CIMA e você verá o jogador indo para frente ao longo do eixo X. Mais controles: Agora adicione mais “LogicBricks” como mostrado no screenshot abaixo. Estes “LogicBricks” vai permitir você mudar a orientação do personagem utilizando as teclas de setas. Note que a linha “Torque” do “Motion Actuator” produz um movimento de giro no jogador em torno do eixo especificado. No caso, o eixo Y.

Pulo: Para adicionar mais graus de liberdade e também para mostrar mas um sensor como controle de entrada, iremos fazer o jogador pular.

Disable Sound :: Habilita e desabilita o som. Disable Mipmaps :: Não use mipmap, isto pode aumentar a velocidade de processamento (obviamente vai depender da máquina) Autostart :: Habilita a iniciação automática ao ler o arquivo. 2.3 Opções em linha de comando para a GameEngine: Quando o Blender é carregado com a opção –h na linha de comando (shell do Windows ou janela DOS) ele irá imprimir os parâmetros da linha de comando. Veja abaixo: bash-2.00$ blender -h Blender V 2. Usage: blender [options ...] [file] Render options: -b Render in background -S Set scene -f Render frame and save it -s Set start to frame (use with -a) -e Set end to frame (use with -a) -a Render animation Animation options: -a <file(s)> Playback <file(s)> -m Read from disk (Don't buffer) Window options: -w Force opening with borders -p Open with lower left corner at , and width and height , Game Engine specific options: -g fixedtime Run on 50 hertz without dropping frames -g vertexarrays Use Vertex Arrays for rendering (usually faster) -g noaudio No audio in Game Engine -g nomipmap No Texture Mipmapping -g linearmipmap Linear Texture Mipmapping instead of Nearest (default) Misc options: -d Turn debugging on -noaudio Disable audio on systems that support audio -h Print this help text -y Disable OnLoad scene scripts, use -Y to find out why its -y bash-2.00$ -g fixedtime Esta opção roda a engine em 50 hertz sem baixar os frames. Isto é útil enquanto “executa” para a “Targa-Sequence” ou quando necessita ter certeza que todas as colisões são calculadas sem perdas sobre computadores mais lentos. -g vertexarrays Desabilita o uso de vertexarrays. VertexArrays normalmente aumenta a velocidade de calculos complexos na cena. Se seu systema não suporta OpenGL vertexarrays você pode desabilitar a função.

-g noaudio Desabilita o som. -g nomipmap Não usa mipmap. Isto pode aumentar a velocidade do jogo. -g linermipmap Ajusta o mipmapping de textura para Nearest (default). 2.4 - O “RealTimeButtons”: O “RealtimeButtons” é o conjunto de botões que permite produzir interatividade entre os objetos 3D presente no ambiente no Blender. O Blender é uma ferramenta completa de desenvolvimento para interatividade no mundo virtual incluindo uma “gameEngine” para a criação de jogos. Tudo isso pode ser feito sem precisar compilar o jogo ou o cenário. Simplesmente pressione a tecla P e execute tudo em tempo real. Na janela principal de trabalho encontra-se o botão que dá acesso ao “RealtimeButtons” ( ). Aqui você definirá seus blocos lógicos (LogicBricks) e com isso o comportamento de seus objetos. Informação: A palavra “games” (jogos) aqui é usa para todos os tipos de interatividade 3D. O Blender não existe limitação quanto ao tipo de jogo que se deseja criar. Os “RealtimeButtons” podem ser logicamente ser separados em duas partes. A parte à esquerda contém os ajustes globais para os objetos do jogo (gameObjects). É nesta parte que inclui os ajustes geral para a física, como amortecimento (damping) ou massa do objeto. Aqui você pode definir se um objeto precisa ser calculado na cena com física, como um ator, ou se vai apenas fazer parte do cenário, formando o nível. Ajuste para os objetos: Actor Ativando “Actor” para um objeto permite a gameEngine a avaliar este objeto. O botão “Actor” vai habilitar mais botões descritos mais abaixo. Um objeto sem “Actor” pode formar, fazer parte do cenário (como os suportes de um estágio) e são “vistos” por outros atores também. Ghost Um objeto “Ghost” não possui colisões, mais ainda possui “chave” de sensor de colisão. Ideal para criar algum tipo de evento. Dynamic

“Sensors” são como sensores de uma forma de vida. Eles reagem a tecla pressionadas, colisões, contatos com materiais (touch), eventos com o tempo (timer events) ou valores de propriedades. Os controladores estão coletando eventos dos sensores e são capazes de calcular então o resultado. Os controladores são o “cerebro” das operações. Controladores simplesmente fazem um “E” (AND). Um exemplo é o teste se uma tecla foi pressionada “E” (AND) um certo tempo passou. Há também o controlador “OR” e você pode usar script em python e expressões para criar comportamentos mais complexos. Os atuadores produzem as ações nos objetos. Um atuador de movimento (Motion Actuator) é como um músculo. Um “músculo” pode aplicar força nos objetos para movê-los ou girá-los. Existem atuadores para executar animações pré-definidas (via IPOs), que podem ser comparadas como um reflexo. A lógica é conectada por linhas usando o mouse, “Sensors” para “Controllers” e “Controllers” para “Actuators”. Feito tudo isso corretamente você será capaz de rodar o jogo imediatamente! Se descobrir algo no jogo que não está do seu agrado, basta parar a gameEngine, editar o ambiente 3D e reiniciar e assim por diante. Este caminho pode reduzir drasticamente o tempo de desenvolvimento além de ser mais confortável!!! 2.5 - Propriedades: Propriedades carregam informações limites para o objeto, similar a variáveis locais em linguagens de programação. Nenhum outro objeto pode normalmente acessar estas propriedades, mas é possível copiar propriedades com “Property Copy Actuator”.

O botão “ADD property” adiciona uma nova propriedade. Por default, uma propriedade adicionada é do tipo “float”. Detele um a propriedade com o botão “Del”. O “MenuButton” difine o tipo de propriedade. Clique e com o botão esquerdo do mouse escolha no menu o tipo que deseja. O “Name:” o texto pode ser editado clicando com o botão esquerdo do mouse sobre ele. SHIFT- BACKSPACE apaga o nome. Informação: O nome da propriedade é “case sensitive”, desta forma, “casa” é diferente de “Casa”. O próximo campo é diferente para cada tipo de propriedade. Para o tipo booleano são dois botões a escolher: “True” e “False”. O tipo string aceita cadeia de caracteres. Entre com uma string clicando no campo com o botão esquerdo do mouse. Os outros tipos usam números para definir um certo valor. É possível editar com teclado ou arrastando o mouse. Tipos: Boolean (Bool) Esta propriedade armazena um valor binário, ele pode ser “True” ou “False”. Integer (Int) Armazena números como 1, 2, 3, 4, ... na faixa de -2147483647 a 2147483647. Float Armazena um número de ponto flutuante. String Armazena uma cadeia de caracteres. Timer Este tipo de propriedade faz um “update” (atualização) com o atual tempo do jogo em segundos, iniciando do zero. 2.6 - Ajuste no MaterialButtons: Alguns atributos físicos podem ser definidos com o ajuste de material no Blender. O “MaterialButtons” pode ser acessado via o ícone. Crie um novo material ou escolha um existente com o botão no menu. No “MaterialButtons” você precisa ativar o botão “DYN” para ver os ajustes dinâmicos (de dinâmica). Restitut Este parâmetro controla a elasticidade das colisões. Um valor igual a 1.0 irá converter toda energia cinética em energia elástica, ou seja, será restituído em força igual e oposta. Este objeto tem então uma elasticidade ideal. Um “Restitut” igual a um fará o objeto quicar indefinidamente sobre o terreno. Friction Este valor controla o atrito do objeto. Se o atrito é baixo, seu objeto vai deslizar como no gelo, se é alto terá um efeito tipo “cimento”. Fh Force Em conjunção com “Do Fh” e/ou “Rot Fh” faz o objeto flutuar sobre uma superfície. “Fh Force” controla a força que sustenta o objeto sobre o terreno (superfície).

Luzes podem ser criadas pressionando ESPAÇO -> ADD Lamp. Para uma lâmpada selecionada é possível abrir as suas propriedades. Estas propriedades são a cor, a energia, etc... A GameEngine é totalmente integrada no Blender, existem alguns botões que são somente usuais para animações lineares. Um ajuste comum a todos os tipos de lampadas é a energia e a cor (ajustável com RGB). Para permitir uma face a receber luz em tempo real na GameEngine do Blender a face precisa estar ajustada para “Light” no Paint/FaceButtons. Com a camada (Layer) ajustada para a luz e objetos é possível controlar a luz precisamente. Luzes somente afetam faces sobre a mesma camada. Por camada é possível usar 8 luzes (limitação do OpenGL) para luzes em tempo real. Tipos de luzes da GameEngine: Lamp “Lamp” é uma fonte de luz puntiforme. Spot É uma lâmpada restrica a um espaço cônico. Na janela 3D é possível ver as linhas do cone. Use “SpotSi” para ajustar o ângulo de “visão” da luz. Sun É um tipo de luz direcional. A distância não afeta sua intensidade. A luz direcional é exibida com uma linha que mostra a sua direção. Hemi A luz “Hemi” não é suportada pela game engine. (Este manual é antigo, de 2001! Provavelmente a nova versão da engine 2.41 de 2006 já deve dar suporte a este tipo de luz. É bom conferir). As luzes “Lamp” e “Spot” são sensíveis com a distância. Use “Dist:”, “Quad1:” e “Quad2:” para ajustar isto. 2.8 - O Blender e as Leis da Física: Todos os objetos no Blender com a opção “Dynamic” são avaliados com as Leis da Física e definidos pela engine para usá-las. As propriedade chave para um objeto dinâmico é a sua massa. Gravidade, força e impulsos (limite de colisão) somente trabalham com objetos que possuem massa. Desta forma, somente objetos dinâmicos podem experimentar algum tipo de arrasto, ou velocidade de amortecimento (como o que ocorre com o ar ou resistência da água). Observação: Note que objetos dinâmicos usando “dLoc” e “dRot” não apresenta resultados desejados. Uma vez que um objeto dinâmico é controlado por forças e impulsos, qualquer mudança explícida de posição ou orientação de um objeto pode não corresponder com a velocidade. Para objetos dinâmicos é melhor utilizar “linV” e “angV” para explicitar definições de movimento. Como definimos uma massa para seu objeto dinâmico ele será afetado pela gravidade, causando sua queda no ambiente até encontrar outro objeto com limite para colisão já que o objeto dinâmico possui um limite esférico para colisão. O tamanho da esfera-limite pode ser modificado no parâmetro “Size:”. O valor da gravidade por default está ajustado para 9.81. Você pode modificá-la no “WorldButtons” com o deslizante “Grav”. Uma gravidade zero é muito útil para jogos espaciais ou simulações!

Informação: Use os ajustes “ Damp :” e “ RotDamp :” para a resistência do ar ou simular outros ambientes. Não use estes ajustes para simular atrito! O Atrito (Friction) pode ser simulado usando os ajustes de material dinâmico (dynamic material). Objetos dinâmicos possuem limite por duas razões. Ambos tem “Do Fh” habilitado e tem pequeno arrasto (damping), ou você está usando um valor “ Restitut ” no material dinâmico (dynamic material) que é bem alto. Se você não definir um material, por default a restituição será 1.0. Este é o valor máximo para a restituição e ele irá produzir um efeito bastante interessante pois o objeto ficará quicando indefinidamente no piso (elasticidade perfeita!) No primeiro caso, incrementando um “arrasto” (damping) pode-se reduzir os quiques! No último caso define-se um material para o objeto e ajusta-se o seu valor de restituição para um número menor que 1.0. O valor de restituição determina a elasticidade do material. Um valor igual a zero determina que a velocidade de afastamento depois da colisão será nulo, ou seja, será um choque inelástico. Um valor igual a 1.0 faz com que o momento seja conservado mesmo depois da colisão. O Damping (arrasto) irá decrementar a velocidade em % por segundo. Damping é usual para estabelecer uma velocidade máxima. Um valor alto diminui a velocidade do objeto drasticamente. A velocidade máxima é alcançada quando a força que tende a acelerar o objeto é igual a sua desaceleração provocada pela força de arrasto. Damping é usual para produzir também oscilações amortecidas. Friction (atrito) é uma força tangente ao contato entre as superfícies dos objetos. A força de atrito possui um valor máximo que é proporcional a normal, isto é, a força que pressiona os objetos uns contra os outros. Esta proporcionalidade é denota o coeficiente de atrito. Um valor alto para a força de atrito irá permitir um valor alto para o atrito máximo. A “regra” para o movimento obedece as leis da resultante de forças, ou seja, se a força aplicada for menor que o atrito máximo, o objeto não se move. Se for igual, ele fica na eminência do movimento, se for maior o objeto se move. Se no movimento a força for igual a força de atrito cinético, o objeto se move com velocidade constante. Para alguns objetos é necessário ter diferentes atritos em direções diferentes. Por exemplo, um skate possui pouco atrito quando se move para frente ou para trás, mas um atrito relativamente alto quando se move para os lados. Isto é chamado “anisotropic friction” (atrito anisotrópico). Selecionando o botão “Anisotropic” no “RealTimeButtons” irá habilitar o atrito anisotrópico. Depois de selecionar este botão, três barras deslizantes vão aparecer com o coeficiente relativo para cada eixo local a ser ajustado. Um coeficiente de atrito ao longo de um eixo igual a zero significa que ao longo desse eixo o atrito é zero. Um coeficiente de atrito igual a 1 significa que o atrito máximo é aplicado no dado eixo. 2.9 - EXPRESSÕES: Expressões válidas Expression type Example Integer numbers 15 Float number 12. Booleans TRUE, FALSE Strings "Eu sou uma string!" Properties propname Sensornames sensorname (um nome no LogicBrick)

“MenuButtons” você pode abrir um som existente e criar um novo “SoundObjects”. A cor azul indica que mais de um usuário está utilizando o som, o número indica o número de usuários. O “NumberButton” indica quantos “SoundObjets” partilham o exemplo. Quando o botão “pack/unpack” é pressionado, o “sample” é empacotado dentro do arquivo *.blend. Isto é muito importante quando for distribuir arquivos, já que não é necessário ter os arquivos de sons em separado. Tudo fica embutido dentro do próprio arquivo do blender. O botão “Play” obviamente toca o som e o botão “Loop” ajusta se o som irá tocar uma única vez ou se vai executar repetidamente. Dependendo do “play-mode” no “Sound Actuator” este ajuste pode estar “não disponível”. A barra de ferramenta “Vol:” ajusta o volume global do som. Pitch : com o “pitch” você pode mudar a frequência do som. Atualmente ele suporta valores entre -12 semitons a +12 semitons. Em Hertz: se seu “sample” possui frequência de 1000Hz, o “baixo” possui 500Hz e o “alto” 2000Hz. A próxima linha de botões vai definir o som 3D. Com o botão “3D vol” ativado (se desativar “Fixed”) você habilida o som 3D. Esta medida de volume do som depende da distância entre a fonte sonora e o observador. O observador é a câmera ativa!!! O botão deslizange “ Attn: ” ajusta a atenuação do som. No mundo 3D você pode escalar a relação entre avanço e distância. Por exemplo, se um som passar pela câmera você deseja ajustar o fator que determina como o som vai se comportar quando passa por você (observador – câmera). A próxima linha de botões define a posição estéreo do som. Com “3D pan” ativado o volume do canal direito e esquerdo do som vai depender da posição relativa do ouvinte. Quando “Fixed” está ativado você pode manualmente ajustar o som com o botão deslizante “Pann:” 2.11 - Janela de som:

A janela de som é usada para visualizarmos o som, ou seja, sua forma de onda. A barra verde indica a posição do som que está sendo executada. Isto pode ser usado para sincronizar o som com uma animação IPO. A parte inferior da janela mostra a duração do som em segundos. 2.12 - Performance e design visando a otimização para o melhor resultado: Os computadores tem se tornado cada vez mais velozes. Mas ainda sim algumas performances devem ser buscadas na hora de se criar o design do game para que o framerate mantenha constante e o jogo não fique lento e desagradável ao jogar. Isto não é somente um bom estilo em design e programação mas simplesmente essencial para a plataforma que o programa irá rodar e que o Blender é capaz de fornecer. Assim, ao criar um jogo, tendo em vista as diversas plataformas, tenha em mente algumas regras importantes de otimização: 1] Originalmente para um “AddObject Actuator” precisa estar em uma camada invisível (muito importante, talvez você vai usar isto regularmente no futuro). 2] Não utilize propriedades em combinação com controladores AND/OR/Expr com a linguagem de script. Existe um controlador python. 3] não “divida” (reparta) variáveis (pyhon) entre scrips. 4] Use poucas interligações entre conecções “LogicBrick”, se possível. 5] Use ALT-D (instância de malha para novos objetos) quando for fazer uma réplica, isto é melhor do que SHIFT-D (copia da malha). 6] polígonos com mapeamento “alpha” são expansivos, assim use com moderação. 7] A “bandeira” (flag) para colisão estando desligada melhora bastante a performance. O uso de “ghost” é econômico quando comparado com um objeto “físico” regular. 8] Use o menor número de polígonos possível. É muito fácil adicionar polígonos a um modelo, no entanto, remover polígonos sem distorcer o modelo é difícil. Procure enriquecer os detalhes cobrindo a malha com uma boa textura. 9] Mantenha a resolução das texturas o mais baixo possível. Você pode trabalhar com versões em alta- resolução e então reduzi-las quando for publicar o jogo (veja UV Texturing). 10] Polígonos ajustados para “Light” são expansivos. Um acelerador de hardware irá trabalhar bastante com calculos de transformações e luzes. Use somente se for necessário e verifique sempre a performance. 11] No lugar de luz em tempo real use “VertexPaint” para iluminar, escurecer ou pintar faces como sugestão de situações de luzes. Bastante útil e criativo! 3 - GAME LogikBricks: A lógica do jogo no GameBlender está situada no “RealtimeButtons”. Aqui é possível ligar diferentes “LogicBricks” (bloco lógicos) juntos. A seguir serão descritos todos os blocos lógicos usados pela engine.

O botão de nome “f:” (no caso do screenshot acima, está ajustado para 41), determina o delay (retardo) entre dois pulsos pelo sensor. O valor de “f:” é dada em frames. O botão “Inv” inverte o pulso, se é positivo (TRUE) vai se tornar negativo (FALSE) e vice- versa. Veja o exemplo “pulses.blend”. 3.1.2 - Keyboard: O sensor “Keyboard” é, talvez, um dos sensores mais usados porque ele provê uma interface entre o Blender e o usuário (mais adiante falaremos da entrada através do mouse). Os botões de modo de pulso são comuns para todos os sensores e possuem a mesma funcionalidade descrita no sensor “Always”. Ativando o botão “All keys” o sensor vai reagir com qualquer tecla. No campo “Hold” você pode por chaves de modificação. Metodos python: setKey(int key); Ajusta a tecla que o sensor vai reagir. Int key getkey(); Captura a tecla que o sensor reagiu. setHold1(int key); Ajusta o modificador chave um. Int key getHold1(); Captura o modificador key one. setHold2 (int key); Ajusta o modificador tecla dois. setUseAllKeys(bool all); Ajusta a opção “All keys” para todas=TRUE Bool all getUseAllKeys(); Captura o estado da opção “All Keys” List keys getPressedkeys(); Captura uma lista das teclas pressionadas; List events getkeyEvents(); Captura uma lista dos eventos das teclas. 3.1.3 - Mouse: O sensor mouse inclui os botões usuais presentes nos mouses. O propósito principal desse sensor é obviamente criar uma interface entre o usuário e o aplicativo através do mouse. Atualmente o sensor é capaz de “vigiar” os cliques ou movimento do mouse. Para capiturar a posição atual do ponteiro do mouse será preciso usar um scripth Python. Isto será tratado mais adiante neste documento.

Metodos python: Int xposgetXPosition(); Captura a posição x do mouse. Int yposgetYPosition(); Captura a posição y do mouse. 3.1.4 - Touch: O sensor “Touch” “atira” um pulso quando o objeto está designado para tocar um material. Se você entrar com um nome no campo “MA:” então ele somente reage para o material correspondente ao nome caso contrário irá reagir a todos os materiais. Isto é muito útil para ativar efeitos para materiais específicos. Por exemplo, o personagem deve morrer ou ter o “life” abaixado de um dado valor se tocar no material lava. Metodos python: setTouchMaterial( (char matname));* Ajusta o material na qual o sensor “Touch” vai reagir. Char matname getTouchMaterial();* Captura o material que o sensor ‘Toch’ reagiu. gameObject obj getHitObject(); Retorna o objeto que foi tocado. List objs getHitObjectList(); Retorna uma lista dos objetos que foram tocados. Veja o exemplo ‘touch.blend’. 3.1.5 - Collision: O sensor “Collision” é um sensor geral usado para detector o contato entre dois objetos. Além disso reage sobre materiais e é simplesmente capaz de detectar propriedades de um objeto. Entretando você pode escolher (comutar) o campo de entrada do material para propriedade clicando sobre o botão “M/P”.