GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[Curso Gm 3D] Aula 4: MODELOS

3 participantes

Ir para baixo

[Curso Gm 3D] Aula 4: MODELOS Empty [Curso Gm 3D] Aula 4: MODELOS

Mensagem por Mr.Brum 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: https://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 Sáb 21 Fev 2015, 01:41, editado 5 vez(es) (Motivo da edição : screens)
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : [Curso Gm 3D] Aula 4: MODELOS Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

[Curso Gm 3D] Aula 4: MODELOS Empty Re: [Curso Gm 3D] Aula 4: MODELOS

Mensagem por SIGILOSO 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
SIGILOSO

Games Ranking : Nota A

Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Reputação : 39
Número de Mensagens : 2267
Prêmios : [Curso Gm 3D] Aula 4: MODELOS Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 4 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Curso Gm 3D] Aula 4: MODELOS Empty Re: [Curso Gm 3D] Aula 4: MODELOS

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

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

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 24/03/2010
Reputação : 17
Número de Mensagens : 1129
Prêmios : [Curso Gm 3D] Aula 4: MODELOS Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Curso Gm 3D] Aula 4: MODELOS Empty Re: [Curso Gm 3D] Aula 4: MODELOS

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos