[Curso Gm 3D] Aula 4: MODELOS

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

100% [Curso Gm 3D] Aula 4: MODELOS

Mensagem por Mr.Brum em Ter 21 Fev 2012, 23:50

ENGINE: Game Maker
NÍVEL: intermediário
TEMA: Game Maker, Modelagem.
PRÉVIA: Aprenderemos agora uma outra maneira de modelagem: Por modelos,que iremos usar no GM,o que nos permite importar modelos externos,ou criar nossos próprios, sem o uso de scripts complexos, nem dlls e extensões.


INTRODUÇÃO
O Game Maker possui um método de modelagem mais profissional que o de Shapes.
É o método de Modelos!
Eles são mais velozes,mais fáceis de se usar,e geralmente apresentam melhores resultados.
Os modelos podem ser criados através de Shapes ou carregados de um arquivo externo,e ainda podem ser modelos através de vértices(que não irei abordar aqui).


FUNÇÕES BÁSICAS
INDICE=d3d_model_create ()
Cria um novo modelo e retorna seu índice. Esse índice é usado em todas as outras funções que lidam com modelos. Use esta função somente em eventos não repetitivos, ela deve ser usada apenas uma vez, para não ficar pesando o seu jogo.Por isso é recomendável que a use numa primeira room que não será recarregada,ou no create de um objeto que não seje criado novamente! Dependendo do seu jogo,ela pode ser usada também no evento game_start.
A variável INDICE que eu exemplifiquei, é a variável que irá guardar o id do modelo,recomendo que use var global,e de nome bem fácil de se lembrar.

d3d_model_destroy (ind)
Destrói o modelo com o índice determinado, liberando sua memória. Lembre-se de usá-la sempre que destruir algum modelo definitivamente, para liberar a memória.Geralmente é usada no evento destroy de um objeto.
ind: Variável com Índice do modelo que deseja apagar.

d3d_model_clear (ind)
Limpa o modelo com o índice determinado,removendo todos os seus  shapes e  primitivos.
Se vc vai redesenhar shapes num modelo durante o jogo, é recomendável que use esta função para limpar o modelo antes de adicionar os novos.
ind: Variável com Índice do modelo que deseja limpar.

d3d_model_save (ind, fname)
Salva o modelo para o nome do arquivo indicado.
Com isso você pode exportar seu modelo,no formato que desejar.
Para usá-lo novamente em outro jogo.

ind: Variável com Índice usado na criação do modelo, que contém o modelo.
fname: Nome do arquivo modelo que deseja salvar,(não se esqueça de botar a extensão.),o arquivo será salvo na mesma pasta do projeto.

d3d_model_load (ind, fname)
Carrega o modelo do nome do arquivo indicado.
Esta é a função que permite a você importar modelos externos para o seu jogo.
Geralmente são modelos .d3d(nativos do directx), ou .mod(semelhantes ao d3d),mas se você salvou algum modelo com a função anterior a esta, mesmo que com uma extensão inventada, você pode carregá-lo com esta função, visto que a estrutura dele é compatível.
ind: Variável com Índice usado na criação do modelo, para onde você irá adicionar este que está carregando.
fname: Nome do arquivo modelo que deseja carregar,(não se esqueça de botar a extensão.),o arquivo deve estar na mesma pasta do projeto.Se não estiver,especifique o caminho dele no nome.

d3d_model_draw (ind, x, y, z, texid)
Desenha o modelo guardado na variável ind ,na posição (x, y, z),texid é a textura a ser usada.
Use este evento no draw do objeto que vai renderizar o modelo.


CRIAÇÃO DE MODELOS POR SHAPES
A modelagem por shapes, tem as seguintes funções:

d3d_model_block (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat)
Adiciona uma forma de bloco para o modelo.

d3d_model_cylinder (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat, closed,   steps )
Adiciona uma forma cilíndo para o modelo.

d3d_model_cone (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat,  closed ,   steps )
Adiciona uma forma cone para o modelo.

d3d_model_ellipsoid (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat, steps)
Adiciona uma forma esfera para o modelo.

d3d_model_wall (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat)
Adiciona uma forma de parede para o modelo.

d3d_model_floor (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat)
Adiciona uma forma solo para o modelo.

Note que as funções são bem parecidas com as de d3d_draw, aprendidas na AULA PASSADA,a única diferença é que não temos o parâmetro textura.
Isso foi feito de propósito pelo Tio Mark, pois sua intenção foi permitir que você possa modelar um modelo base, e desenhá-lo várias vezes,com texturas diferentes.Por isso as texturas serão aplicadas no evento draw, na função d3d_model_draw, que renderiza o modelo na tela.
Outra diferença das funções de draw, é que o eixo base para a modelagem aqui,será imaginário. Ou seja, vc vai se basear num eixo para modelar os shapes, mas o modelo pronto não terá eixos.
Porque os eixos também serão definidos na hora da renderização.
Isso vai te possibilitar criar um modelo,e renderizá-lo em lugares diferentes.


PRATICANDO
Vamos criar uma engine,com algumas das funções vistas neste tuto.
Para isso,abra a nossa ENGINE BASE , que foi construída na SEGUNDA AULA .
Ela já tem a câmera, o solo, e os controles básicos para darmos seguimento às aulas.

Vamos iniciar,modelando os shapes básicos, que será renderizado na room em vários objetos.
E vamos importar um modelo externo,e renderizá-lo também.

INSTRUÇÕES
*Baixe ESTE MODELO , e extraia-o para a mesma pasta onde está sua engine.
Este é um modelo de um tank, em formato .mod, que será importado e renderizado na nossa engine.

*Crie uma room, e coloque o nome dela de: Load.
-No creation code dela, ponha o seguinte código:

Código:
//criamos os modelos:
global.cubo=d3d_model_create()
global.esfera=d3d_model_create()
global.cone=d3d_model_create()
global.cilindro=d3d_model_create()
global.solo=d3d_model_create()
global.parede=d3d_model_create()
global.modelo=d3d_model_create()

//adicionamos shapes para os respectivos modelos:
d3d_model_block(global.cubo,-8,-8,8,8,8,24,1,1)
d3d_model_ellipsoid(global.esfera,1-8,-8,0,8,8,16,1,1,24)
d3d_model_cone(global.cone,-8,-8,0,8,8,32,1,1,1,24)
d3d_model_cylinder(global.cilindro,-8,-8,0,8,8,64,1,1,1,24)
d3d_model_floor(global.solo,-128,-128,0.3,128,128,0.3,1,1)
d3d_model_wall(global.parede,-8,0,0,8,0,16,1,1)
d3d_model_load(global.modelo,"modelo.mod")[/i]

//mudar de room
rocom_goto_next();

*Agora crie uma Background,no tamanho de 128x128, com a imagem que preferir,e ponha o nome dela de: btextura.

*Crie objetos com os seguintes nomes ,e os respectivos códigos no draw:

ocubo
Código:
d3d_model_draw(global.cubo,x,y,z,background_get_texture(btextura));
oesfera
Código:
d3d_model_draw(global.esfera,x,y,z,background_get_texture(btextura));
oparede
Código:
d3d_model_draw(global.parede,x,y,z,background_get_texture(btextura));
osolo
Código:
d3d_model_draw(global.solo,x,y,z,background_get_texture(btextura));
ocone
Código:
d3d_model_draw(global.cone,x,y,z,background_get_texture(btextura));
ocilindro
Código:
d3d_model_draw(global.cilindro,x,y,z,background_get_texture(btextura));
omodelo
Código:
d3d_model_draw(global.modelo,x,y,z,background_get_texture(btextura));

*no create de todos estes objetos, coloque o seguinte código:
Código:
//definimos a variável z no objeto.
z=0;

*Espalhe todos os objetos pela segunda room, que já estava na engine,após a room Load.

Teste o jogo!

SCREENS:
Spoiler:




Conclusão

Você poderá notar que o uso de modelos é semelhante ao de Shapes,e poderá até pensar que é perca de tempo!, mas observe que estes modelos são carregados de forma rápida, e adiantam seus projetos, porque você vai modela-los apenas uma vez,e com o índice gerado, poderá usá-lo várias vezes! Inclusive em objetos diferentes, sem precisar fazer o código de modelagem de novo.
O modelo externo se comportou de maneira correta! Isso foi possível porque ele é leve,e está num formato bem aceito pelo GM, que é o .mod! Com o aprendizado dessa aula, você poderá importar vários modelos semelhantes no seu jogo, mas lembre-se de deixá-los sempre bem leves,e use sempre .mod ou .d3d.

Se você tem modelo leves em formato .obj, e deseja convertê-los para .mod, você pode baixar o BRUM SHAPES: http://gmbr.forumeiros.com/t20409-brum-shapes-3d-versao-11#159063 ,e usar o modelo gerado em .mod no seu jogo, como foi explicado aqui.

Se você não conseguiu fazer a engine, você pode baixá-la aqui: DOWNLOAD

Até a próxima aula!  What a Face

FONTE: http://mrbrumgames.blogspot.com/


Última edição por Mr.Brum em Sab 21 Fev 2015, 01:41, editado 5 vez(es) (Razão : screens)

Mr.Brum

Ranking : Nota C
Número de Mensagens : 913
Idade : 25
Data de inscrição : 28/04/2011
Notas recebidas : D + D + C + C + D + B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://mrbrumgames.blogspot.com/

Voltar ao Topo Ir em baixo

100% Re: [Curso Gm 3D] Aula 4: MODELOS

Mensagem por SIGILOSO em Qua 22 Fev 2012, 00:18

Muito bom ter explicado cada função, o que torna o entendimento do conteúdo mais claro. Tente adicionar imagens, enriquecerá o conteúdo se tornando mais dinâmico e demonstrando os resultados para quem precisar das explicações expostas.
afro

SIGILOSO

Ranking : Nota A
Número de Mensagens : 2264
Idade : 23
Data de inscrição : 06/06/2009
Notas recebidas : A+A+A+A+A+A+A
Reputação : 39
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 4
   : 2
   : 1

Voltar ao Topo Ir em baixo

100% Re: [Curso Gm 3D] Aula 4: MODELOS

Mensagem por The Wizard em Qua 22 Fev 2012, 00:55

Adorei,muito bem explicado,merece ser um tutorial aprovado
afro

The Wizard

Ranking : Nota B
Número de Mensagens : 1129
Idade : 18
Data de inscrição : 24/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://awesomewizards.deviantart.com/

Voltar ao Topo Ir em baixo

100% Re: [Curso Gm 3D] Aula 4: MODELOS

Mensagem por Conteúdo patrocinado Hoje à(s) 08:01


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum