Curso completo de DarkGdk
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 10.1
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.