Brasil G4mes
Registre-se para ter acesso total à todas as seções do fórum!
Jogue, brinque e o mais importante, divirta-se!

Participe do fórum, é rápido e fácil

Brasil G4mes
Registre-se para ter acesso total à todas as seções do fórum!
Jogue, brinque e o mais importante, divirta-se!
Brasil G4mes
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

3D Parte 3

Ir para baixo

3D Parte 3 Empty 3D Parte 3

Mensagem por dodoop Qui Jul 09, 2009 11:19 am

Créditos:
psycon:Por traduzir.
dodoop:Por disponibilizar.

Tutorial:

Uso específico do seno

O que você aprenderá: criar um movimento para a camera.
1.1. Introduction
O que você aprenderá:
· Movendo a camera numa direçao,
· Usando o seno para rodar/yaw (rodar/ virar na horizontal),
· Usando o seno para nivel/pitch (subir descer na vertical),
· Movendo a camera para cima e para baixo,
· Rodando o programa.

------------------------------------
1.2. Movendo a camera numa direçao

No tutorial anterior sobre z values vimos como apontar a camera para um obj.
Talvez você reconheca o código seguinte daquele tutorial? Aqui está:
Código:

//mostrar o q a camera ve
d3d_set_projection(0,0,0, obj_Ball.x,obj_Ball.y,obj_Ball.z, 0,0,1);
Se a camera estiver sempre de frente ao objeto (como a bola) esse seria o cod. Se a camera se move livremente
sem apontar algo em particular, não há nenhum objeto para apontar.
Se a camera tem que planar pelo espaço, passando todos os tipos de objetos sem
apontar para algum em particular, nós precisaremos usar outro tipo de código, algo como isso:
Código:

//mostrar o q a camera ve
d3d_set_projection(x,y,z, xt,yt,zt, 0,0,1);
Os primeiros dos tres valores (x,y,z) define o ponto de onde a camera ve, vc provavelmente ja sabia disso. Os ultimos tres valores determina que lado é para cima. Mas e sobre estes valores xt, yt e zt?

---------------------------------------
1.3. Usando o seno para rodar /yaw

Temos aqui seno (e sua contraparte: coseno) vamos ve-los. Para pegar a projeçao correta ao se mover pela room, teremos que usar o codigo seguinte:
Código:

xt=x+cos(direction*pi/180);
yt=y-sin(direction*pi/180);
Você não tem que entender por que deste código é necessario. Mas vc provavelmente vera que nao há nenhum objeto designado necessariamente a qual apontar a camera.
A camera sera apontada na direçao que está olhando ou está movendo. Isso pode ser muito usual em jogos.
Em muitos jogos vc querera que a camera mostre na direcao em que esta se movendo, como, por exemplo, em jogos de tiro de primeira pessoa.
Com xt e yt determinados, iremos tb escrever o codigo para o zt value.
O xt e yt value cobre o olhar da esquerda e direita (também conhecido como yaw), mas nao cima e baixo!

---------------------------------------
1.4. Usando o seno para nivel/pitch

Nao somente precisamos declarar a variavel z, como vimos no exemplo anterior, mas tb precisamos apontar a camera para cima e para baixo. Para isso, usaremos o seguinte codigo:
Código:

//declare z value
z=0;
zdirection=0;
O zdirection foi setado para zero para começar neutro, nem para cima nem para baixo(Nivel).
Adivinhe por que? Isto é onde o seno entra novamente:
Código:

zt=z+sin(zdirection*pi/180);
A direcao cima e baixo (também conhecido como lance/pitch) é calculado baseado na
zdirection usando a funçao seno. Agora teremos que determinar xt, yt e zt, entao formar a direçao.
Poderiamos fazer a camera se mover na zdirection, ou seja onde esta apontando. Just read on.

----------------------------------------
1.5. Movendo a camera para cima e para baixo

Se quizermos que a camera se mova na zdirection, precisaremos mudar o z
value (sua altura efetivamente) que será feito pelo código seguinte:
Código:

//move in zdirection
z+=zdirection*speed/128
O valor 128 é usado para que diminua o movimento um pouco. (Confirme o gm6 arquivo que é
incluído com este texto para ver como e por que funciona.) Como você pode ver pelo código,
o z é mudado, baseado no zdirection e speed.
Para fazer a camera’s pitch retornar para o nivel automaticamente, teremos que diminuir o
zdirection com o passar do tempo, usando o código seguinte:
Código:

//diminuir zdirection
zdirection*=.98
O zdirection é decrementado a cada passo de forma que ele se torne zero (Nivel / altura da direcao da camera)
no final.

1.6. Rodando o programa
Embora há muito mais àprender sobre o uso específico de seno em 3D, como
movimento circular ou ondulado, isto é tudo que falarei por agora.
Veja agora o arquivo gm6 para ver como seno foi usado para criar o efeito de voar pelo espaço. (Use as setas para mover.)
***
dodoop
dodoop
Membro
Membro

Mensagens Mensagens : 41
Fama Fama : 14

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