sábado, 11 de fevereiro de 2012

[Curso Gm 3D] Aula 3: MODELAGEM DE SHAPES

ENGINE: Game Maker
NÍVEL: intermediário
TEMA: Game Maker, Modelagem.
PRÉVIA: Vamos aprender o básico da modelagem no Game Maker,falarei sobre a criação de shapes básicos,que temos no GM.
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

A modelagem por gml pode parecer complicada, mas com experiência pode tornar-se fácil!
Os eixos devem ser observados antes de se modelar algo,lembre-se que a referência do ponto,é a origem da room,ou seja, se você fornece a coordenada 320 como x1,a origem no eixo x do objeto será a posição x: 320 da room.Mas se você define x1 como x-16,a origem do modelo no eixo x, será:  16pixels antes do seu modelo no eixo x.


ATRIBUTOS

A modelagem de um shape é definida por uso de funções pré-definidas, com atributos a serem configurados.
Os atributos vão definir a posição,escala e texturização de um shape.
Abaixo eu detalho cada um:

Observem um exemplo de cubo,com as coordenadas destacadas:

Como podem ver, cada coordenada define o limite de renderização do objeto.São elas:
x1= é a origem do modelo no eixo x.
x2= é o fim do modelo no eixo x.
y1= é a origem do modelo no eixo y.
y2= é o fim do modelo no eixo y.
z1= é a origem do modelo no eixo z.
z2= é o fim do modelo no eixo z.

Além das coordenadas, os shapes podem ter os seguintes parâmetros:
texid= aplica uma textura ao shape,podendo ser uma cor,background ou sprite:
   cor= -1 ; vai deixar o shape com a cor definida no draw_set_color().
   background= background_get_texture(NOME_DA_BACKGROUND)
   sprite= sprite_get_texture(NOME_DA_SPRITE,SUB_IMAGEM)
hrepeat= quantidade de vezes que a textura se repetirá na horizontal, no shape.
vrepeat= quantidade de vezes que a textura se repetirá na vertical, no shape.
closed= indica se o shape será:    fechado(1) ou aberto(0) . (cilindro e cone)
steps= arredondamento do shape,tenha 24 como padrão,aumente pra ficar mais "redondo" ou diminua pra deixar mais "quadrado". (elipsoid,cilindro e cone)




SHAPES


 Os shapes do GM são modelados por códigos gml,cada shape tem sua função pré-determinada,com atributos a serem configurados.
São eles:

Floor(solo)
Os Floors,são os shapes mais simples de se modelar,são uma malha plana e fina,que se desenha da origem(x1,y1), até o fim(x2,y2),tendo a as coordenadas de altura(z1,z2) como inclinação.
Eles são usados na intenção de simular uma plataforma,por isso suas coordenadas z1 e z2 devem ser iguais(ou próximas),para que ele não fique desequilibrado.
Textura: se repete em ambos os lados.
Code:  d3d_draw_floor(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)



Wall(parede)
A wall é bem parecida com o floor,porém é usada para simular paredes.
Ela deixa a critério do maker a escolha se será vertical ou horizontal.
Por exemplo,se vc quer a parede no eixo y, vc terá que definir valores não-nulos para x1,x2,z1,z2, deixando o eixo y(y1,y2) =0, verás que a parede fica reta, e de pé! Caso queira incliná-la lateralmente,altere o eixo y(y1,y2).
Textura: se repete em ambos os lados.
Code:  d3d_draw_wall(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)


Block(cubo)
Os blocks são bastante usados no GM3D,ele aprsenta uma forma que deve ocupar espaço nas 3dimensões e são bem simples de se modelar.
Você não precisa anular nenhum eixo.
Textura: se repete em ambos os lados.
Code:  d3d_draw_block(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)



Elipsoid(esfera)
A elisoid é uma das formas mais interessantes do GM, com ela podemos dar um toque melhor ao jogo, e através de um atributo chamado steps , você pode definir o arredondamento do shape.
Textura: Envolve toda a forma,se originando do centro superior do shape até o centro inferior.
Code: d3d_draw_ellipsoid(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,steps)

Cyllinder(cilindro)
Os cyllinders são desenhados de forma vertical(em pé).O atributo closed dele vai indicar se suas superfícies serão fechadas.Já o step vai indicar o arredondamento da forma.
Textura: Envolve toda a forma,lateralmente. As superfícies terão a cor base da textura, mas não serão propriamente texturizadas.
Code: d3d_draw_cylinder(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps)

Cone(pirâmide)
Os cones são algo como uma pirâmide, e também são desenhados na vertical(em pé).
Iniciam com uma ponta bem fina,e vai se largueando,até a base.Seu atributo closed indica o fechamento da malha, e steps , o arredondamento.
Textura:  Envolve toda a forma,lateralmente. A superfície inferior(larga) terá a cor base da textura, mas não serão propriamente texturizada.
Code:  d3d_draw_cone(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps)



PRATICANDO

Vamos criar uma engine com todos os shapes que aprendemos aqui.
Abriremos a engine da aula passada,para aproveitar a câmera e o solo,e introduziremos as outros shapes.

1º-> Abra a engine da aula anterior , ou se não a fez, baixe ela AQUI.

2º-> Crie um objeto, e chame-o de ofloor.
Coloque no draw:
/*modelamos um shape floor(solo), na altura(z1,z2) 0,que vai da origem(0,0) da room, até o final da room. Com a textura do solo,se repetindo 32x.*/
d3d_draw_floor(0,0,0,room_width,room_height,z,bsolo,32,32)

3º-> Crie uma background de 128x128,com a textura que desejar,coloque o nome dela de besfera.
Crie um objeto,e chame-o de oelipsoid.
Coloque no draw:

//definimos a transparência de desenho para 0.7
draw_set_alpha(0.7)

/*modelamos uma esfera,na posição onde colocamos ela na room,com uma textura de repetição única.E um arredondamento de 24.*/
d3d_draw_ellipsoid(x-8,y-8,0,x+8,y+8,16,background_get_texture(besfera),1,1,24)

//voltamos o a transparência de desenho para 1.
draw_set_alpha(1)

4º-> Crie um objeto,e chame-o de oblock.
Coloque no create:
//declaramos a var z=5.
z=15
Coloque no draw:
/*criamos um bloco,e desenhamos ele na posição do objeto na room,e na altura definida em z, este bloco não terá textura, e será renderizado com a cor usada para desenhar.(que neste caso,é branco!)*/
d3d_draw_block(x-10,y-10,z-10,x+10,y+10,z+10,-1,1,1)


5º-> Crie uma background de 128x128 e coloque o nome de bmuro.
Crie um objeto,e chame-o de owall.

Coloque no Create:
z=0
Coloque no draw:
/*modelamos uma parede em pé,no eixo x,anulamos o eixo y,para que ela fique reta,será desenhada no local onde está o objeto,com a textura do muro,se repetindo 10x hor e 1x ver.*/
d3d_draw_wall(x-100,y,z,x+100,y,z+10,background_get_texture(bmuro),10,1)


6º-> Crie uma objeto e coloque o nome de ocone.
Coloque no Create:
z=20
Coloque no draw:
//definimos a cor de desenho para amarelo.
draw_set_color(c_yellow)
/*modelamos um cone,no local do objeto,na altura de z,sem textura,usaremos a cor de desenho,definindo ele como fechado, e com um arredondamento de 8.*/
d3d_draw_cone(x-10,y-10,z-10,x+10,y+10,z+10,-1,1,1,1,8)
//voltamos a cor de desenho para branco novamente,para que o resto do jogo não fique amarelo.
draw_set_color(c_white) 

7º-> Crie uma background e coloque o nome de bcilindro.
Crie um objeto,e coloque o nome de ocilindro.
Coloque no create dele:
z=0
Coloque no draw:
//modelamos um cilindro fechado,no local onde está o objeto,na altura de z,com 24 de arredondamento.
d3d_draw_cylinder(x-10,y-10,z,x+10,y+10,z+30,background_get_texture(bcilindro),1,1,1,24)

8º-> Crie uma nova room, coloque o nome dela de: Shapes.
Coloque a câmera nela.
Coloque os objetos espalhados por ela.
Teste o jogo.
Mova-se pelo cenário, e olhe atentamente cada forma.
Perceba , como cada uma tem características individuais, note também os efeitos que aplicamos a cada uma:
-O solo,que tem o eixo na origem da room.
-A esfera com transparência.
-O bloco que está sem textura, usando a cor de desenho que é branco.
-O muro, com textura que se repete apenas na horizontal.
-O cone que fica no alto e é desenhado com a cor amarela sem afetar os outros shapes.
-O cilindro com altura e textura não repetida.


Existem outras formas de modelagem no GM, porém, essa é a mais fácil, e a mais provável.
Fique atento para suas texturas, que devem ter medidas proporcionais aos modelos.
As texturas de 128x128, 256x256 e derivadas, quase sempre dão certo no seu shape, mas às vezes é preciso alterá-las.
Nas próximas aulas eu vou abordar outras formas de modelagem e falarei mais sobre as texturas.
Edit: Aqui está o link,pra quem não conseguiu criar a engine:

























Nenhum comentário:

Postar um comentário