sábado, 3 de março de 2012

[Curso Gm 3D] Aula 6: Modelos animados (.md2)

ENGINE: Game Maker
NÍVEL: intermediário
TEMA: Game Maker, Modelos animados (.md2).
PRÉVIA:Nesta aula, vamos falar sobre Modelos animados (.md2), que serão renderizados no GM por meio de uma extensão.
DIREITOS: Este tutorial não pode ser copiado nem exibido em outros locais na internet sem a devida autorização do autor.Caso tenha interesse em usá-lo ,contate-me.


INTRODUÇÃO

Bom, começo lhes informando que vamos ter que adotar recursos externos para realizar esta atividade, pois o GM por si só não consegue renderizar os modelos em .md2 , por isso vamos usar o GMSDK,que é uma extensão para o GM, feito pelo jiraya, Colaborador da GMBR.

Muito já se falou da limitação do GM no 3D, com arquivos animados por bones, essa limitação é ainda maior, fiz alguns testes com a velocidade de renderização, e de rotação maior de frames, e o GM não suportou! portanto nem abordarei aqui sobre velocidade de mudança dos frames, visto que o GM não suporta essa ação.
O que vamos fazer será uma engine simples, com um modelo externo .md2 animado.
Então antes de mais nada, baixe o GMSDK.
Aprenda a instalá-lo AQUI.


SEQUÊNCIA

O uso de modelos externos consiste nas etapas:

criação: Onde dizemos ao GM que queremos reservar um espaço na memória para utilizarmos com algo, este espaço será representado por um índice, que usaremos em todas as funções relacionadas a este modelo.
No caso da GMSDK, essa função já vai criar e carregar o modelo para a memória de uma só vez, evitando que usemos duas funções para isso. Por causa dessa função de carregamento ser um tanto quanto pesada e demorada, devemos executá-la apenas uma vez! E é bom que isso seja feito na primeira room do jogo, para depois passarmos às próximas e não voltarmos mais nela.
Iremos usar a função: global.ÍNDICE=d3d_md2_load("nome_do_modelo.md2")
*O modelo deve estar na mesma pasta que o jogo.
*ÍNDICE é a variável que está guardando o id do modelo.

renderização: Nesta parte, o modelo será renderizado na tela!
Por isso devemos usá-la no draw do objeto.
Função: d3d_md2_draw(global.ÍNDICE,x,y,z,background_get_texture(background))
*A background é a textura que o modelo terá.
*ÍNDICE é a var que contém o id do modelo.



PRÁTICA




Abra a nossa primeira engine!
Se nao tem , baixe-a AQUI.
Após abri-la, não se esqueça de ativar a GMSDK para o projeto atual, clicando na "cruzinha verde" do menu, selecionando GMSDK, e dando OK.

««Let´s go»»

*Crie uma nova room, coloque o nome dela de load, e ponha ela como a 1ª do jogo.
no creation code dela, coloque:
//inicia a GMSDK no modo 3d
d3d_init()
//carregamos o modelo animado externo (.md2), e guardamos seu índice de criação na var model_char.
global.char=d3d_load_md2("char.md2")
//mudamos de room
room_goto_next()



*Baixe essa textura: 

http://dl.dropbox.com/u/43446077/tutoriais/bchar.png
Crie uma background, e coloque ela,ponha o nome de: bchar

*Crie um objeto, e coloque o nome dele de: ochar.
No create dele,coloque:
//definimos a var z=0 para o objeto:
z=25


No draw:
//desenhamos o modelo na posição do objetos na room, com a textura indicada:
d3d_md2_draw(global.char,x,y,z,background_get_texture(bchar))


No Key_Press_Space:
//exibimos uma mensagem, mostrando qual frame está sendo renderizado no momento / quantos frames ele tem,
show_message("
FRAMES: "+string(d3d_md2_frame_index(global.char))+" / "+string(d3d_md2_frames(global.char)))


*Coloque o objeto ochar na 2ª room, que é onde está a câmera, e teste o jogo.

Caminhe até o objeto, e veja que o modelo renderiza a animação perfeitamente!


Se você não conseguiu fazer a engine, aqui vai o link: DOWNLOAD

CRÉDITOS:
Modelo do char e textura: Engine de exemplo da md2.dll .


Até + !




Nenhum comentário:

Postar um comentário