Feeds:
Posts
Comentários

Archive for abril \21\UTC 2010

Continuando a construção de nosso game temos que fazer o senário.

Esse tutorial vai ser dividido em pelo menos em  2 partes para não ficar muito grande num post apenas.

Pensei em fazer uma pequena casa primeiro para podermos aprender como fazer um cenário, então modelei uma pequena maquete virtual.

Peguei uma planta baixa de uma casa, que é muito facíl de se arrumar na internet.

Planta sendo modelada no Blender

Comecei a modelar primeiro as paredes, usei o minimo de poligonos possiveis.

Pos o  Desing de jogos e WEb tem que pensar também no desempenho das midias onde serão expostos seus trabalhos.

Aqui no nosso caso a Web.

Planta sendo modelada no Blender paredes

Coloco as texturas nas paredes e no chão de nosa humilde casa.

E a casa  fica assim:

var gaJsHost = ((“https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);
document.write(unescape(“%3Cscript src='” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));

try {
var pageTracker = _gat._getTracker(“UA-15902220-1”);
pageTracker._trackPageview();
} catch(err) {}

Anúncios

Read Full Post »

Continuação do post Anterior sobre modelos 3D no Papervision.

Agora que modelamos o perssonagem vamos para aparte do script no flash.

Abra o flash inicie um novo arquivo actionscript 3.0.

Comece o codigo a seguir. Aconcelho e não copiar mas escrver o codigo para compreender melhor as funções.

package {
//importando as class necessárias
import flash.events.Event;
//importando a class de eventos do flash
import flash.events.KeyboardEvent;
//importando a class KeyboardEvente para podermos usar o teclado
import flash.ui.Keyboard;
//importando a classe Keyboard que será usa para detectar as teclas do teclado.
import org.papervision3d.events.FileLoadEvent;
//importando a class FileLooadEvent do papervision onde usaremos
//a propiedade LOAD_COMPLETE, garantindo que todos ao arquivos sejam carregados.
import org.papervision3d.objects.DisplayObject3D;
//importando a class DisplayObject3D para podermos usar as propriedades
//dessa class para manipulação dos objetos, como nesse casso o perssonagem colada
import org.papervision3d.core.animation.clip.AnimationClip3D;
//importando a class AnimationClip3D para podermos fazer um controle da animação
import org.papervision3d.objects.parsers.DAE;
//importando a class DAE, class importante para podermos carregar o modelo 3D do Max3D
import org.papervision3d.view.BasicView;
//A class BasicView faz a mesma coisa que a class Sprit
//sendo que a class BasicView você não precisa ficar importando e
//configurando camera, viewport, scene, já ta tudo basicamente configurado.
[SWF(width=”700″, height=”600″, backgroundColor=”0x000000″, frameRate=”30″)]
//estou setando a janela do play do flahs manualmente.
public class Modelo3D extends BasicView
//declaramos a class Modelo3D e extendemos a class BasicView
{
private var modelo3D:DisplayObject3D;
//declaramos a 1ª variavél onde instaciamos  como sendo um
//objeto do tipo DiaplayObject3D

public function Modelo3D()
//declaramos a função construtora que tem o mesmo nome da class principal
{

stage.frameRate = 40;
//na class BasicView podemos setar o frameRate usando o metodo super

init();
//carregamos a função init()
startRendering();
//carregamos o renderizador
}
public function init()
//aqui iremos construir a cena 3D na função já inicializada init()
{
modelo3D = new DAE();
/*declaramos a variavel modelo3D que já estava instanciada como um DisplayObject3D
como contendo um arquivo do tipo DAE, onde começamos a importar o arquivo DAE feito
no 3DMax.*/
modelo3D.addEventListener(FileLoadEvent.LOAD_COMPLETE, _completo);
/*adicionamos um Evento no addEventListener, onde o ouvinte é o modelo3D
evento do tipo FileLoadEvent, propiedade LOAD_COMPLETE que vai dizer se o arquivo foi
carregado completamente, onde chamamos a função _completo como resposta do evento.*/
DAE(modelo3D).load(“sonic3D_0.dae”);
//aqui endicamos o local onde está o arquivo do tipo DAE .

}
private function _completo(e:FileLoadEvent):void
//função _completo que dara a resposta ao evento FileLoadEvent.LOAD_COMPLETE.
{
scene.addChild(modelo3D);
/*Carregamos o modelo3D a sena
declaramos que se o evento LOAD_COMPLETE for realizado com sucesso
adicionamos o modelo3D a DisplayLIst*/

var animationRight:AnimationClip3D = new AnimationClip3D(“right”,0,15.2);
var animationLeft:AnimationClip3D = new AnimationClip3D(“left”,15.2,35);
/*decalramos a variaveis que usaremos para controlar a animação feita no max3D
onde instanciamos na variavel animationRight que é um objeto do tipo
AnimationClip3D ,que terá o nome right como referencia ao controle do frame, que será
feito de 0 a 15.2 segundos, isso é feito devido ao total de tempos calculado pelo total de
frames. para saber o total de tempo só dividir total de frame por segundos.
um exemplo se temos uma animação feita com 360 frames com 30 frames por segundo
então é só dividir 360/30 que vai dar um total de 12 segundos, no meu casofoi um total
de 35 segundo onde eu instanciei que a primeira metade da animação tera de 0 a
15.2 segundos e apartir dai eu iniciarei a segunda
metade da animação que será de 6 a 12 segundos.*/

DAE(modelo3D).animation.addClip(animationRight);
DAE(modelo3D).animation.addClip(animationLeft);
/*aqui instanciamos o controle da animação ao modelo3D
apartir de agora podemos inicializar um evento que poderá controlar
essa animação, dizemos que a animação contida no modelo3D terá um controle
pelo metodo addClip, instaciamos as variaveis que faram referencia a esse
controle*/

DAE(modelo3D).play(“right”);
/*digo que a animação ira começar pela 1ª metade da animação que será de 0 a 15.2
segundos*/

stage.addEventListener(KeyboardEvent.KEY_DOWN, _controle);
//Adiciono um EventListener para captar um evento de teclado.
}
public function _controle(e:KeyboardEvent):void{
/*Na função _controle eu adiciono um “if” para testar quais as tecals
foram clickadas*/
if(e.keyCode == Keyboard.LEFT)
/* No “if” digo se a tecla que foi clickada é a seta da esqueda
comece a animação da segunda parte*/{
DAE(modelo3D).play(“left”);
//Dou um play na segunda parte da animação

}if(e.keyCode == Keyboard.RIGHT)
/*Nesse segundo “if” digo se atecla que foi pressionada é a da direita
do teclado então comece a animação pelo primeiro frame.*/
{
DAE(modelo3D).play(“right”);
// Dou um play na animação
}

}

override protected function onRenderTick(e:Event=null):void
/*É nessa função que rederizo tudo, Aqui estou sub escrevendo a função
onRenderTick já existente na class BasicView.*/
{

super.onRenderTick();
//Mando rederizar a cena
modelo3D.z = -960;
//Digo a posição z do modelo
modelo3D.scale=9;
//A escala do tamanho do modelo
modelo3D.rotationY -= 1;
//Rotaciono o modelo no eixo Y

}
}
}

Salve o arquivo onde está seu modelo 3D .dae.

Abra um novo arquivo FLA 3.0 e instancie o nome da class em propriedades.

De um CTRL+ENTER.

Tudo certo vai ficar assim.
Click para ver o video

Read Full Post »

Vamos usar agora um controle de sena pelo mouse e teclado.
Isso será um preparativo para próxima aula onde pretendo montar um game.
Nesta aula também usaremos um modelo Collada, extenção muito usada por jogos onde amaioria dos modeladores 3D tem a capacidade de exportar( Blender, 3d Max, Scketup, Maya).
Só que no caso do 3d max o plugin que vem com ele dá muitos bugs então sugiro baixarem esse aki,
ColladaNexGen :http://sourceforge.net/projects/colladamaya/ que é muito recomendado por todos os proficionas que usam papervision e 3d max.

Vamos começar usando o arquivo base da aula anterior:

O perssonagem em 3D que iremos usar Será modelado no Blender mas isso não impede de ser modelado em outro progragama como 3D Max, basta apenas depois importar como Collada.

Modele seu perssonagem usado bones ou outro metodo como objetos 3D da sena pivot e etc…

Faça uma pequena sena, onde no meu caso tem 35 segundos.

Ao terminar vá em file (tanto no Blender como no 3D max)

No Blender e no Max3D Vá em Export.

Agora no Blender vá em  COLLADA 1.4(dae). (ATENÇÂO tem que ser o 1.4).

Vai aparecer uma janela amarela onde você vai dizer onde vai ficar o arquivo (tem que ficar na mesma pasta do SWF do flash), as configurações são as que estão na imagem.
Tuto Sonic Blender

Agora no Max 3D depois de export, no Submenu va em COLLADA(dae), as configurações estão na imagem.

Tuto Sonic Max 3D

Agora podemos  ir para o flash.

Continuaremos no proximo post por que senão vai ficar muito grnade o tutorial num unico post então até o proximo post.

Read Full Post »