segunda-feira, 12 de julho de 2010

Tutorial Animação Bones(ossos) para BGE

Este tutorial tem a finalidade de desenvolver técnicas de animação para a Game Engine do Blender, mas pode ser utilizado também para produção de animações em vídeo, necessita conhecimento básico do Blender 3d. Vamos ao tutorial e bons estudos!
Esse tipo de animação é muito utilizado em personagens, pois se assemelha muito ao mundo real, por usar um corpo movimentado por ossos.
Vamos criar um corpo para se animado, tanto para renderização quanto para utilização na BGE. Mude a visualização para a visão lateral, tecle num3.
Vá para o modo de edição e crie duas extrusões uma para a direita e outra para a esquerda como na imagem acima. Saia do modo de edição, vá para o modo objeto e adicione um objeto do tipo Armature.
Coloque em modo edição e selecione os nós para movê-los na na posição conforme a figura abaixo:
Esse objeto se comporta como um osso, com isso podemos montar um esqueleto, suas pontas são as articulações, assim como utilizamos a ferramenta de extrusão para criar novas faces e vértices, podemos criar novas articulações e ossos. Selecione um nó e tecle E de extrusão. Veja a figura abaixo:

Agora vamos lincar o corpo com os ossos, saia do modo edição e selecione o cubo, logo após selecione o objeto armature, pressione ctrl+p e escolha a opção Make Parente ToArmature e Create From Bone Heat.
Mude agora para o modo pose, conforme a figura acima. Nesse modo podemos testar e manipular os ossos e influenciando a malha, será aqui que também faremos a animação. Selecione um nó e tecle G para mover, veja o resultado, a malha acompanha o osso.
Crie outros objetos e experimente para ver os resultados, estenda os objetos e os ossos, lembrando que o nó do osso deve influenciar diretamente a malha. Agora vamos criar nossa animação.
Divida a tela do 3d view e selecione o modo da janela para Action Editor.

Vamos utilizar o método de chaves para criar nossa animação, através da time line,
coloque o osso na posição inicial desejada, no frame 1 e tecle I e escolha a opção
LOCROT, com isso criamos nossa primeira chave da animação.
Próximo passo, mude o frame para 50 por exemplo, desloque um dos nós e repita o
processo de criar chave descrito anteriormente.
Volte para o frame 1 e tecle alt+a para rodar a animação.
Pronto nossa animação já esta funcionando e pronta para ser usada. Agora podemos
escolher se queremos usá-la para renderização ou para a game-engine do blender.
Para utilizar na renderização ou seja criar um vídeo, tecle F10 para mudar a janela
Buttons para o modo Scene, onde primeiramente escolheremos qual o formato de saído
queremos, logo após o tempo de duração e por fim a renderização.
-No formato de saída podemos escolher imagens do tipo jpeg ou formato vídeo em mpeg
dentre várias outras opções a gosto.
-Na duração de frames vamos colocar o início como 1 e o final como 50, já que nossa
animação possui este número como último frame.
-Para renderizar clique no botão ANIM e aguarde o termino do processo e tecle PLAY
para ver o resultado.
Agora iremos controlar nossa animação para Game-Engine do Blender.
Para isso usaremos o bloco de lógica, no qual não vamos entrar em detalhes de
funcionamento e sim maior atenção ao Actuators Action que é o diferencial para que possa
funcionar nossa animação em um jogo. Siga os passo de montagem de acordo com a
imagen abaixo, tecle F4, selecione o objeto Armature e adicione um sensor, um
controlador e um actuators ligue-os entre si.
No sensor ligue o botão de repetição e no Actuators mode de Motion para Action:


Mude no Action de Play para Loop End e digite em AC: Action que é nossa ação criada
na time line Editor Action, mude End: 1 para 50.
Feito esse processo, vamos testar nossa animação na game-engine do blender. Tecle P
com o mouse na janela 3d View, assim estaremos em modo jogo e a animação deverá
estar rodando.
Um possibilidade interessante de se testar é a ação controlada da animação, experimente
trocar no sensor Always por Keybords, que é um sensor do tipo teclado, no campo Key
clique com o botao direito do mouse e tecla barra de espaço ou outra tecla que você
quiser, essa tecla será o acionador da animação durante o jogo, esse recurso é muito
usado para animação de personagens em jogos.
Espero que tenha conseguido ajudar nos princípios básicos de animação de ossos, claro
que existem muito mais recursos no blender para animação de ossos, mas com esse
tutorial você pode começar a se aventurar nessa área.





quinta-feira, 1 de abril de 2010

Desenvolvendo Jogos - Game Design



Começando seu projeto de Game!

Antes que se inicie os trabalhos de desenvolvimento de um jogo, deve-se passar por etapas de elaboração, as quais irão determinar o como serão os trabalhos e prazos para a criação do game.
Um bom exemplo desse processo é a criação de um filme, como os de hollywood, onde é impossível para uma só pessoa fazer esse trabalho, mas divide-se em equipes especializadas nas diversas áreas.Durante muito tempo desenvolvi meus projetos sozinho, mas como o passar do tempo e com o aprimoramento das técnicas ficou praticamente impossível faze-lo sozinho assim criei um grupo para que possamos juntos poder desenvolver nossos projetos com o máximo de qualidade possível, para isso dividi o grupo em áreas de produção as quais vou tentar descrever logo abaixo.

Aqui vão algumas idéias básicas de como vamos fazer esse trabalho:

PRODUÇÃO

- Pré-produção:
Consiste em um processo chamado BRAINSTORMINGS, como o nome sugere, é onde a equipe se reuni para  debates sobre o projeto, onde surge ideias e conceitos para o projeto.

- Produção:
É a parte em que o se coloca a ''mão na massa'', onde a equipe trabalha e desenvolve o projeto. 

- Pós-produção:
São realizados melhorias e correções de Bugs, conteúdo adicional para download e patches.

Áreas de desenvolvimento

Como comentado no início do texto, aqui você terá uma ideia de qual área você se identifica e poderá escolher para trabalhar no desenvolvimento do jogo.

Gráfico
Envolve-se com todo o visual do jogo e é subdividido em algumas sub-áreas.
- Conceito Visual: é basicamente a guia para todos os trabalhos de gráficos, definindo estilos, cores, traços e criação de storeboards.
- Criação de Texturas e shaders: trabalha com a criação de imagens para o jogo, como ambiente, aparência dos objetos e personagens, inclui também iluminação do cenário.

Modelagem 3D
Cria os objetos de um jogo em 3d ou pseudo 3d, necessários para o jogo, como personagens, inimigos etc... A Modelagem 3D para jogos requer o usa de uma técnica chamada de Lowpoly, que quer dizer poucos polígonos para um objeto 3d, para que haja um desempenho maior por parte da CPU.  

Animação
Tem como objetivo dar vida aos objetos e personagens do jogo, usando movimentos que imitem a realidade ou movimentos estilizados, para aqueles que acham que é brincadeira dar vida a esses objetos, não se engane existem muito material para estudo nessa área e exige muita dedicação, mas o resultado é prático e prazeroso.

Temática e Historia
Envolve criar uma história para o jogo e coloca-lo em um ambiente, uma boa história ajuda muito para que o game se torne mais emocionante. Também tem a questão da continuidade e desenvolvimento das fases.

Interface e jogabilidade
É fundamental para um bom fluxo do jogo, verifica-se onde ficam os botões do menu e de que maneira o jogador deve interagir com o personagem ou com o jogo, não tem nada pior que um jogo com combinações de botões ruins ou pressionar milhares de vezes os botões sem necessidade.

Efeitos sonoros e trilha sonora
Um jogo sem sons e música não tem a mesma emoção, então esta parte ajuda muito a trazer emoções para jogo, mas deve-se ter em mente o público alvo para não errar na receita de sons e prejudicar o game, uma música ruim ou um som muito repetitivo devem ser evitados a todo custo.

Lógica e programação
É o que traz a vida ao jogo, sem essa etapa não há interação. O programador deve ter em mente que a lógica vem em primeiro lugar, desenvolver a lógica é importante para o bom desenvolvimento dos scripts. Jogos exigem muito tempo de desenvolvimento, mesmo jogos considerados simples, ou casuais tem sempre um alto índice de complexidade, exigindo do programador vastos conhecimentos em estruturas-computacionais. 

Bem pessoal, acho que consegui resumir como é o processo de criação de jogos, independente de que plataforma seja, os processos são os mesmo, claro há muito mais coisas para se ver mas esse é um ponto de partida. 


terça-feira, 23 de junho de 2009




Tutorial de Python Script na Game Engine do Blender

Pré-Requisitos

Conhecimento em:

Game Engine do Blender, bem como o seu Bloco de Lógica

Noções basicas de Python Script

Esse tutorial se destina para aqueles que desejam ir além dos Blocos de Lógica da GE do Blender, para isso precisam entrar para o mundo da programação na linguagem Python. Para quem não sabe ainda, python é o script usado no blender para tanto para o ambinte do blender como para GE, onde podemos expandir em muito as possibilidades utilizando essa linguagem.

Em muitas vezes quando começamos a desenvolver um jogo na GE utilizando o bloco de lógica as coisas no princípio parecem fáceis, mas depois com o desenvolv

imento do projeto começa a ficar muito confuso com a grande quantidade de bloco de logica interagindo entre si, sem falar nas limitações que o próprio sistema tem. Por exemplo se criarmos um projeto utilizando scripts Python, podemos reduzir consideravelmente a quantidade de blocos de lógica e aumentando as possibilidades de desenvolvimento do projeto.

Controle de rotação


Como o título acima sugere, vamos fazer um pequeno programa

de controle de rotação que pode ser adaptado de várias maneiras, rotação, deslocamento, animação e etc... Mais adiante vou demonstrar como proceder para utilizar das maneiras já descritas. Vamos botar a mão na massa.


Antes de sair digitando o script vamos a alguns conceito importantes sobre como o blender usa python.


Com o blender aberto vamos dividir a tela para podermos visualizar o modo texto onde será feito o script. Crie um novo arquivo de texto e salve-o com o nome de script por exemplo.


Primeiramente precisamos ligar o script ao objeto, para que o mesmo possa ser controlado pelo mesmo. Para isso adicione um controlador do tipo python e nomeo com o mesmo nome que foi dado ao script.


Depois ligar os sensores ao script, no nosso caso sensores de teclado.

E ligar os atuadores ao script, que irão fazer o objeto rotacionar.


Vamos ao script:

#Para obter um controlador

import GameLogic

cont = GameLogic.getCurrentController()


#Para obter o objeto associado a este controlador

own = cont.getOwner()


#Para obter um sensor associado a este controlador

up = cont.getSensor('up')

down = cont.getSensor('down')


#Para obter um atuador ligado ao controlador

act = cont.getActuator("rot")


#Definindo valores para o atuador

act.setDRot(0,0,+0.1,1)


#Ativando um atuador

if up.isPositive():

GameLogic.addActiveActuator(act,1)

elif down.isPositive():

GameLogic.addActiveActuator(act,0)



A primeira parte do script se refere a inicialização do modulo da Game Logic, import GameLogic e a linha seguinte se refere aos controles ligados ao script, cont = GameLogic.getCurrentController() a variavel cont é apenas um nome sugerido podendo ser trocado por qualquer outro nome.


*Obs: O sinal de # serve para inserir comentários no script.


#Para obter o objeto associado a este controlador

own = cont.getOwner() se refere ao objeto e suas propriedades, por exemplo suas variáveis, own também é uma variável que pode ter seu nome alterado.


*Obs: As variáveis em python são atribuidas com o sinal de =, exemplo: raiz=5, a variável raiz recebeu o valor de 5.


#Para obter um sensor associado a este controlador

up = cont.getSensor('up')

down = cont.getSensor('down')

Adicione um sensor do tipo teclado e set uma tecla por exemplo seta p/ cima.

Para ligar um sensor ao script precisamos nomealo com o mesmo nome tanto no Bloco de Logica quanto no scritp, já o nome da variável não afeta o funcionamento.

Exemplo: up = cont.getSensor('up') ou setap/cima = cont.getSensor('up')


#Para obter um atuador ligado ao controlador

act = cont.getActuator("rot")

Este é responsável por ligar o actuador motion ao script, lembre-se de colocar o mesmo nome no script e no atuador do bloco de lógica.



#Definindo valores para o atuador

act.setDRot(0,0,+0.1,1)

Aqui esta uma parte muito importante, pois é aqui que definimos o que vamos fazer com o actuador ligado ao script, neste casso escolhi o setDRot(0,0,0,0) para a variável act, mas você pode escolher setDLoc(0,0,0,0) que serve para incrementar o deslocamento do objeto. A lista de zeros indica o valor das variáveis X,Y,Z e o último se é local on = 1 ou local off = 0.


*Dica: Para que você possa utilizar todas as possibilidades que o blender lhe da é fundamental consultar a API do blender, onde se visualiza as opções em python para você desenvolver seu projeto.


#Ativando um atuador

if up.isPositive():

GameLogic.addActiveActuator(act,1)

elif down.isPositive():

GameLogic.addActiveActuator(act,0)

Aqui é a parte lógica, basicamente é o seguinte:

se a tecla up for pressionada faça:

act,1 – ou seja, ativa o act

e se a tecla down for pressionada faça:

act,0 – ou seja, desliga o act


Pronto! Agora vá para a janela do 3DView e tecle P, e teste as teclas para ver o funcionamento.


Conclusão;


Este é um ponto de partida para se compreender a forma de utilização do python na GE do blender e desenvolver seus projetos de forma mais eficiente e profissional.

Projetos feitos em python expandem em muito o poder do blender, trazendo toda uma nova game de possibilidades.

Espero que este tutorial tenha lhe sido útil.

Meu email para contato e sugestões de melhoria e tutoriais.

marcosamaralrg@hotmal.com