Curso completo de DarkGdk
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 10.1

index << >>



10.1 Criando um terreno com dbMakeMatrix()

10.1 Aspectos gerais

Terreno
O terreno na DarkGdk é basicamente um plano com a possibilidade de ser
segmentado, reposicionado e texturizado:



Cada polígono ou 'quadradinho' resultante da segmentação vertical e horizontal
pode ser texturizado individualmente. Os pontos ou vértices  destes  polígonos
podem ser reposicionados para se criar elevações e  depressões  no  relevo  do 
terreno. Cada polígono ganha uma coordenada  que  representa  sua  posição  no 
terreno, por exemplo na nossa foto, o primeiro polígono  tem  coordenada  (0,0),
e o último coordenada (3,2); essas coordenadas são usadas como referência para
texturização e reposicionamento.

Cada ponto ou vértice ganha uma coordenada  conforme  sua  localização  no
terreno, na nosso foto alguns vértices estão identificados com um pontinho 
vermelho. O primeiro vértice tem coordenada (0,0), e o último na nossa foto
tem coordenada (4,3) que é o último do canto direito superior.  É necessário
prestar atenção nesse sistema de coordenada e localização de  cada  vértice
na matrix para que depois você possa levantar  cada  vértice  corretamente e
assim criar elevações e depressões no relevo do seu terreno.

No inglês da Darkgdk o terreno recebe o nome de matrix, e esta é a palavra
chave das funções que fazem a manipulação de terrenos. O  quadradinho  que
chamamos de polígono, o DarkGdk nomeia-o como tile, azulejo em  português.

Como todo e qualquer objeto, a matrix deve receber um número de identificação
pelo qual o terreno criado vai ser manipulado.

Câmera
A imagem que vemos em nosso monitor representa um ponto de vista dado por uma
câmera. Em outras palavras, a câmera é um objeto 3D que recorta do mundo 3D 
a imagem que vemos. Obviamente que algumas das propriedades dessa imagem vai 
depender da localização e rotação da câmera, vai depender para aonde ela 
aponta e da distância da câmera em relação aos objetos. Não vamos estudar
funções de câmera neste capítulo, abordamos o assunto porque vamos precisar
de uma câmera para visualizar nosso terreno. Quando você usa os comandos 3D,
tal  como  as  funções  de  manipulação  de  terreno,  a  DarkGdk  coloca 
automaticamente  uma  câmera  no  ambiente.

Criando um terreno (matrix)  simples


// matrix01.cpp // Esse programa apresenta a criação de terreno (matrix) #include "DarkGDK.h" // Protótipo das funções void initsys(); // inicializa o sistema // ---------------------------------------------------------------------------- void DarkGDK ( void ) { // Começo da aplicação DarkGdk initsys(); while ( LoopGDK ( ) ) { dbSync ( ); } // fim do while return; } // fim da função: DarkGDK // ---------------------------------------------------------------------------- void initsys() { // Esta função inicializa o sistema dbSyncOn( ); dbSetWindowTitle("matrix01.cpp"); // Criação básica de um terreno com o posicionamento da câmera para visualizá-lo dbMakeMatrix (1,1000,1000,4,3); dbPositionCamera (950, 300, 1500); dbPointCamera(10,-500, -500); } // fim da função: initsys()
Criando a matrix void dbMakeMatrix (nMatrix, nLargura, nAltura, recorte-x, recorte-z); void dbMakeMatrix ( int MatrixNumber, float Width, float Height, int Xsegments, int Zsegments ); dbMakeMatrix (1,1000,1000,4,3); A função dbMakeMatrix() cria um terreno com a largura (nLargura) e altura (nAltura) especificadas. Os argumentos recorte-x e recorte-y segmentam o terreno respectivamente na largura e altura. Perceba a segmentação na foto do programa exemplo, tem 4 quadrados no eixo x, e 3 quadrados no eixo y. Cada quadrado é formado por dois triângulos que são chamado de faces. dbPositionCamera (950, 300, 1500); Essa função determina a posição (x,y,z) da câmera. dbPointCamera(10,-500, -500); Essa função determina o ponto (x,y,x) para o qual a câmera aponta.
index << >>


Produzido por Gameprog: Jair Pereira - Setembro/2013 © gameprog.br@gmail.com http://www.gameprog.com.br http://www.nucleoararat.com.br