MSXInício
Capítulo 29Disponível

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

  1. Abra Graphics > 3D MODEL e fique na aba Objetos.
  2. 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.
  3. 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.
  4. Trabalhe com as vistas FRENTE (X,Y), CIMA (X,Z) e LADO (Z,Y), e confira na PERSPECTIVA, que gira com a barra.
  5. 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

  1. 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.
  2. Escolha o objeto a colocar e a cor, e clique num espaço vazio.
  3. 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

NomeO que guarda
CUBOOs pontos da seta: X, Y, Z de cada um, em sequência (7 pontos = 21 números)
CUBOAAs linhas: pares de números de ponto (7 linhas = 14 números)
CENAX, CENAZOnde cada seta fica no mapa
CENAGO ângulo de cada seta (0..255)
CENAMQual modelo cada item usa (0 = CUBO)
CENACA 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
  • rx e rz medem 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 IF só desenha o que está na frente (rz entre 50 e 1500) e não muito para os lados. O truque (rz - 50) < 1450 testa as duas pontas de uma vez: se rz for menor que 50, a subtração dá a volta e vira um número enorme.
  • MOVE rx, -90, rz põ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 10 e 8.
  • Mais setas: aumente a cena no modelador e mude o 4 do FOR i = 0 TO 4 para o número de itens menos 1.
  • Vários modelos: use CENAM(i) com um IF para escolher qual GEO3D MODEL chamar.
  • Câmera alta e inclinada: como no Comboio 3D, desenhe as formas já inclinadas no modelador, porque GEO3D ROTATE ax, ay gira 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 em GEO3D MODEL NOME, pontos, NOMEA, linhas.
  • Cena = listas X, Z, G (ângulo), M (modelo) e C (cor).
  • Para voar, desenhe cada objeto em posição − câmera.
  • Reabra o bloco no modelador para editar, sem mexer nele à mão.
Comunidade

Discussão · O modelador 3D: objetos e cenas para o GEO3D

Curta, marque como lido e comente o que achou deste capítulo.

0 comentários
Entre para participar
Crie uma conta ou faça login para curtir, marcar como lido e comentar.

Carregando comentários…