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
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Retorno da GMBR!!!
por vinians Qui 14 Mar 2024, 19:07

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


[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 : 914
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