Módulo 9 · Aula 9.1 · O mundo em 3D: eixos, câmera e luz
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 8 h/a | ⭐⭐ | Godot 4.7 | C1, C2 |
Objetivos de aprendizagem
- Dizer para onde aponta cada eixo do Godot: X (vermelho), Y (verde), Z (azul).
- Ler e mudar a posição de um objeto em metros.
- Explicar por que uma cena 3D precisa de câmera e de luz para aparecer no jogo.
- Navegar na janela 3D do editor.
Pré-requisitos
Módulo 8 completo (cena, nó, Inspetor, script, Saída).
Materiais
Godot 4.7; projeto exemplos/laboratorio-3d (cena eixos.tscn); papel quadriculado e uma caixa de sapato para a atividade de abertura.
Conceitos
Três eixos. No 2D havia X (para a direita) e Y (para baixo). No 3D do Godot:
| Eixo | Cor no editor | Para onde cresce |
|---|---|---|
| X | vermelho | direita |
| Y | verde | cima |
| Z | azul | na direção de quem olha a tela (para trás do personagem) |
Atenção: no 2D o Y crescia para baixo; no 3D cresce para cima. E a "frente" de um nó 3D é o Z negativo. Isso volta na Aula 9.3.
Unidade. No 2D, posição era em pixels. No 3D, a unidade é o metro. Um cubo pronto do Godot tem 1 m de lado; uma pessoa tem cerca de 1,7 m.
Posição. Três números (X, Y, Z). O cubo apoiado no chão, no centro, fica em (0, 0.5, 0): o centro dele está meio metro acima do chão.
Câmera. No 2D a tela já mostrava a cena. No 3D, o jogo só mostra o que uma Camera3D está vendo. Sem câmera, a tela fica vazia.
Luz. Sem luz, os objetos aparecem escuros ou sem volume. A DirectionalLight3D é o "sol": ilumina tudo na mesma direção, não importa onde ela esteja; o que importa é para onde aponta.
Editor × jogo. O editor tem uma luz e um céu de prévia (botões Alternar prévia da luz solar. e Alternar prévia do ambiente.) para ajudar a montar a cena. Eles não vão para o jogo. Se no jogo tudo ficar escuro, falta pôr um sol de verdade na cena.
Exemplos
| Objeto | Posição | O que significa |
|---|---|---|
| cubo no chão, no centro | (0, 0.5, 0) | meio metro acima do chão |
| cubo 3 m à direita | (3, 0.5, 0) | andou no X |
| cubo 3 m no alto | (3, 3.5, 0) | subiu no Y |
| cubo 3 m para trás | (3, 3.5, 3) | veio no Z |
Tutorial passo a passo
Parte A. Caixa de sapato (40 min)
- Em dupla, um canto da caixa é a origem
(0, 0, 0). Marquem com fita: X para a direita (vermelho), Y para cima (verde), Z para a frente da caixa, na direção de quem olha (azul). - Um aluno diz uma posição, o outro coloca uma borracha nela. Troquem.
Parte B. Laboratório no Godot (120 min)
- Abra o projeto
exemplos/laboratorio-3de a cenacenas/eixos.tscn. - Na janela 3D: botão do meio do mouse gira a vista, rodinha aproxima. Encontre as barras vermelha, verde e azul.
- Use Executar Cena Atual. O cubo anda 3 m no X, sobe 3 m no Y, vem 3 m no Z e volta, parando meio segundo em cada ponto. Olhe a Saída: cada parada escreve a posição.
- Pare o jogo. Selecione o
Cuboe, no Inspetor, em Transform, mudePositionpara(-2, 0.5, 2). Onde ele foi parar?
Parte C. Câmera e sol (120 min)
- Selecione
Camera. No alto da janela 3D aparece a opção Visualização (dica: "Visualizar através da câmera selecionada."): marque e veja a cena pelos olhos da câmera. - Mude a
Positionda câmera e veja o que muda no jogo. - Apague o nó
Sol(Ctrl+Z desfaz) e execute: a cena perde o volume. Desfaça. - Gire o
SolmudandoRotatione observe as sombras.
Parte D. Primeira cena 3D sozinho (100 min)
- Cena → Nova Cena, Criar Nó Raiz: Cena 3D.
- Adicionar Nó Filho... três vezes:
MeshInstance3D(no Inspetor,Mesh→ New BoxMesh),Camera3DeDirectionalLight3D. - Posicione a câmera para ver o cubo e execute. Salve como
primeira_cena_3d.tscn.
Imagens
../../../recursos/imagens/godot/laboratorio-3d-tela-eixos.png
: a cena dos eixos rodando, com as letras X, Y e Z.../../../recursos/imagens/godot/captura-godot3d-editor-labirinto.png
: a janela 3D do editor com a vista Perspectiva e o mini-eixo colorido no canto.
Indicação da interface
| Item | Nome na tela (Godot 4.7.2 em português) |
|---|---|
| tela 3D | botão 3D no alto, ao lado de 2D e Script |
| tipo de vista | Perspectiva (canto da janela 3D) |
| ferramentas | Modo de Seleção, Modo de Movimentação, Modo de Rotação, Modo de Escalonamento |
| menus da janela 3D | Transformar, Visualizar |
| luz e céu só do editor | Alternar prévia da luz solar., Alternar prévia do ambiente. |
| ver pela câmera | opção Visualização com a Camera3D selecionada |
| propriedades | no Inspetor, Transform → Position, Rotation, Scale (em inglês) |
Os nomes das ferramentas, dos botões de prévia e da opção Visualização foram lidos das traduções do Godot 4.7.2; os menus Transformar e Visualizar e a vista Perspectiva aparecem na captura. A opção Visualização (passo 7) não foi fotografada.
O código completo
exemplos/laboratorio-3d/scripts/cubo_passeando.gd:
extends MeshInstance3D
## Aula 9.1: o cubo anda 3 metros em cada eixo, um de cada vez, para meio segundo e volta.
## Olhe a Saída: a posição mostra (X, Y, Z).
const DISTANCIA := 3.0
const PAUSA := 0.5
func _ready() -> void:
var tween := create_tween().set_loops()
tween.tween_callback(mostrar.bind("começo"))
tween.tween_property(self, "position", Vector3(DISTANCIA, 0.5, 0), 1.5)
tween.tween_callback(mostrar.bind("andou no X (vermelho)"))
tween.tween_interval(PAUSA)
tween.tween_property(self, "position", Vector3(DISTANCIA, 0.5 + DISTANCIA, 0), 1.5)
tween.tween_callback(mostrar.bind("subiu no Y (verde)"))
tween.tween_interval(PAUSA)
tween.tween_property(self, "position", Vector3(DISTANCIA, 0.5 + DISTANCIA, DISTANCIA), 1.5)
tween.tween_callback(mostrar.bind("veio no Z (azul)"))
tween.tween_interval(PAUSA)
tween.tween_property(self, "position", Vector3(0, 0.5, 0), 1.5)
func mostrar(onde: String) -> void:
print(onde, ": ", position)Explicação do código
Vector3(x, y, z)é oVector2do Módulo 8 com um número a mais.- O Tween (Aula 8.9) leva a posição de um ponto a outro em 1,5 s;
tween_intervalespera;set_loops()repete para sempre. tween_callback(mostrar.bind("..."))chama a funçãomostrarcom aquele texto, na hora certa da fila.
Na Saída aparece, por exemplo:
começo: (0.0, 0.5, 0.0)
andou no X (vermelho): (3.0, 0.5, 0.0)(linhas copiadas de uma execução real.)
Resultado esperado
O aluno diz para onde cada eixo aponta, move objetos pelo Inspetor e monta uma cena 3D mínima que aparece no jogo.
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| executa e a tela fica cinza, sem nada | falta Camera3D, ou ela olha para o lado errado | pôr uma câmera e conferir pela prévia |
| no editor está claro, no jogo está escuro | só havia a luz de prévia do editor | adicionar DirectionalLight3D à cena |
| o cubo ficou "enterrado" no chão | Position.y igual a 0 (o centro no chão) | usar metade da altura: 0,5 |
| "sumiu" ao mudar o Z | foi para trás da câmera | lembrar que Z positivo vem na direção de quem olha |
Exercício guiado
Um cubo está em (2, 0.5, -4). Ele está à esquerda ou à direita da origem? Mais perto ou mais longe de quem olha pela câmera do laboratório? (Resposta: à direita, porque X é positivo; mais longe, porque Z negativo vai para o fundo.)
Desafio individual
Na sua primeira_cena_3d.tscn, monte uma "mesa": um tampo (caixa achatada) e quatro pernas (caixas finas), usando só Position e Scale.
Desafio avançado (opcional)
Mude o script do cubo para ele desenhar um quadrado no chão (X e Z) em vez de subir no Y.
Critérios de avaliação
- Nomeia os três eixos e o sentido de cada um.
- Explica por que a câmera e a luz são necessárias.
- Cena 3D própria rodando.
Checklist de conclusão
Extensão
Olhe a sala de aula e diga a posição aproximada (em metros) de três objetos, usando um canto como origem.