O modelador 3D: objetos e cenas para o GEO3D
Desenhe uma forma em linhas, espalhe cópias dela num mapa e voe por cima — sem digitar nenhuma coordenada à mão.
1. O que o modelador faz
O GEO3D desenha objetos feitos de pontos e linhas. Digitar essas listas à mão é cansativo, e é aí que entra o 3D MODEL, no menu Graphics. Ele tem duas partes:
- Objetos: monta a forma (os pontos X, Y, Z e as linhas que ligam esses pontos).
- Cena: espalha cópias dos objetos num mapa visto de cima, cada uma com posição, ângulo e cor.
O modelador não cria o jogo: ele grava listas de dados no seu código, e quem faz a câmera, o movimento e o desenho é o seu programa. Este capítulo usa o exemplo Sobrevoo 3D (menu Sample) para mostrar as duas metades.
2. Montando um objeto
- Abra Graphics > 3D MODEL e fique na aba Objetos.
- Comece com uma peça pronta (caixa, pirâmide, prisma, cilindro, cone, as naves do Comboio Espacial ou o asteroide) ou clique em + Novo para começar vazio.
- Escolha a ferramenta:
- Mover — arraste um ponto numa das vistas;
- Novo ponto — clique numa vista. O eixo que não aparece nela copia o valor do ponto escolhido (ou fica 0);
- Ligar linha — clique em dois pontos;
- Apagar — clique num ponto (apaga as linhas dele) ou numa linha.
- Trabalhe com as vistas FRENTE (X,Y), CIMA (X,Z) e LADO (Z,Y), e confira na PERSPECTIVA, que gira com a barra.
- Para pôr um valor exato, selecione um ponto e digite X, Y e Z.
ATENÇÃO
Pontos em laranja
Um ponto em laranja tem um número par de linhas. Se o programa apaga os objetos redesenhando por cima (GEO3D LOGIC XOR), esse ponto some. Ligue mais uma linha nele.
No exemplo, a seta tem 7 pontos e 7 linhas e se chama CUBO, nome que ficou da peça inicial. Você pode trocar o nome no campo ao lado da lista.
3. Montando a cena
- Vá para a aba Cena. Ela mostra um mapa visto de cima, de −1024 a 1024: X cresce para a direita e Z para cima.
- Escolha o objeto a colocar e a cor, e clique num espaço vazio.
- Clique num objeto para escolhê-lo; arraste para movê-lo. Ajuste X, Z, ângulo (0 a 255 dá uma volta) e cor, ou use Remover.
No exemplo há 5 setas em diagonal, umas viradas para um lado (ângulo 0) e outras para o outro (ângulo perto de 128, meia volta).
4. Indo para o código
Clique em Inserir no código. O modelador grava um bloco logo abaixo da linha USES, entre as marcas ' >>> GEO3D MODELER e ' <<< GEO3D MODELER. Para editar de novo, use Reabrir do código, mude o que quiser e insira outra vez: o bloco antigo é substituído.
ATENÇÃO
Não edite o bloco à mão
A linha ' DOC {...} é o que o modelador lê para reabrir. As linhas VAR são geradas a partir dela. Se você mudar só as VAR, a próxima inserção apaga a mudança.
5. O exemplo, bloco por bloco
Bloco 1 — gerado pelo modelador
| Nome | O que guarda |
|---|---|
CUBO | Os pontos da seta: X, Y, Z de cada um, em sequência (7 pontos = 21 números) |
CUBOA | As linhas: pares de números de ponto (7 linhas = 14 números) |
CENAX, CENAZ | Onde cada seta fica no mapa |
CENAG | O ângulo de cada seta (0..255) |
CENAM | Qual modelo cada item usa (0 = CUBO) |
CENAC | A cor de cada seta |
DICA
Números como 65503
Um WORD não guarda sinal, então −33 aparece como 65536 − 33 = 65503. Nas contas o resultado sai igual, porque as subtrações dão a volta do mesmo jeito.
Bloco 2 — o programa
DIM camx AS WORD ' onde a camera esta no mapa
DIM camz AS WORD
DIM rx AS WORD ' distancia da seta ate a camera
DIM rz AS WORD
Preparação: CPU R800 acelera no Turbo R. Depois V9968 INIT, limpar as duas páginas e GEO3D INIT. A câmera começa atrás da cena (camz = -900).
Controle: STICK(0) lê as setas. Para cima/baixo mexe em camz (avança e recua); para os lados, em camx.
Desenho de cada seta:
rx = CENAX(i) - camx : rz = CENAZ(i) - camz
IF (rz - 50) < 1450 AND (rx + 1500) < 3000 THEN
GEO3D COLOR CENAC(i) ' cor da cena
GEO3D ROTATE 0, CENAG(i) ' angulo da cena
GEO3D MOVE rx, 0 - 90, rz ' 90 abaixo dos olhos
GEO3D MODEL CUBO, 7, CUBOA, 7 ' a forma
GEO3D RUN
END IF
rxerzmedem a distância da seta até a câmera. Essa é a ideia central do "voar": em vez de mover a câmera, movemos o mundo ao contrário.- O
IFsó desenha o que está na frente (rzentre 50 e 1500) e não muito para os lados. O truque(rz - 50) < 1450testa as duas pontas de uma vez: serzfor menor que 50, a subtração dá a volta e vira um número enorme. MOVE rx, -90, rzpõe a seta 90 unidades abaixo dos olhos, e por isso parece que voamos por cima.
Sem piscar: o desenho é feito na página escondida P (V9968 PAGE P), e só depois ela aparece com V9968 SHOW P. No quadro seguinte, as páginas trocam de papel.
6. Ajustes para experimentar
- Altura do voo: troque o
-90. - Velocidade: troque
10e8. - Mais setas: aumente a cena no modelador e mude o
4doFOR i = 0 TO 4para o número de itens menos 1. - Vários modelos: use
CENAM(i)com umIFpara escolher qualGEO3D MODELchamar. - Câmera alta e inclinada: como no Comboio 3D, desenhe as formas já inclinadas no modelador, porque
GEO3D ROTATE ax, aygira primeiro em X e depois em Y.
7. Resumo do capítulo
- O modelador grava dados; o seu programa faz a câmera e o desenho.
- Objeto =
NOME(pontos) +NOMEA(linhas), usados emGEO3D MODEL NOME, pontos, NOMEA, linhas. - Cena = listas
X,Z,G(ângulo),M(modelo) eC(cor). - Para voar, desenhe cada objeto em
posição − câmera. - Reabra o bloco no modelador para editar, sem mexer nele à mão.