Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Introdução ao 3D
Criar um jogo 3D pode ser desafiador. A coordenada Z adicional faz com que muitas das técnicas comuns que simplificavam jogos 2D deixem de funcionar. Para auxiliar nessa transição, vale mencionar que o Godot utiliza APIs semelhantes para 2D e 3D. A maioria dos nós é a mesma e possui versões tanto em 2D quanto em 3D. Na verdade, vale a pena consultar o tutorial de plataforma 3D ou os tutoriais de personagens cinemáticos 3D, que são quase idênticos às suas versões 2D.
Demo de Godot Third Person Shooter (TPS), disponível no repositório do Github ou na Asset Library.
In 3D, math is a little more complex than in 2D. For an introduction to the relevant math written for game developers, not mathematicians or engineers, check out Matemática vetorial and Usando transformadores 3D.
espaço de trabalho 3D
A edição de cenas 3D é feita no espaço de trabalho 3D. Esse espaço pode ser selecionado manualmente, mas será escolhido automaticamente quando um nó Node3D for selecionado.
Semelhante ao 2D, as abas abaixo do seletor de área de trabalho são usadas para alternar entre as cenas atualmente abertas ou criar uma nova usando o botão de mais (+). As abas à esquerda e à direita devem ser familiares a partir da introdução ao editor.
Abaixo do seletor de cenas, a barra de ferramentas principal está visível, e abaixo dela encontra-se a janela de exibição 3D.
Barra de ferramentas principal
Alguns botões na barra de ferramentas principal são os mesmos da área de trabalho 2D. Uma breve explicação é exibida com o atalho se o cursor do mouse permanecer sobre o botão por um segundo. Alguns botões podem ter funcionalidade adicional se outra tecla for pressionada. Abaixo está um resumo da funcionalidade principal de cada botão com seu atalho padrão, da esquerda para a direita:
Modo de Transformação (Q): Ativa um modo combinado de movimento e rotação para os nós selecionados.
Modo Mover (W): Ativa o modo de movimentação (ou translação) para os nós selecionados. Veja Espaço e manipulação gizmos para mais detalhes.
Modo Rotacionar (E): Ativa o modo de rotação para os nós selecionados. Veja Espaço e manipulação gizmos para mais detalhes.
Modo Escala (R): Ativa o redimensionamento e exibe gizmos de escala em diferentes eixos para os nós selecionados. Veja Espaço e manipulação gizmos para mais detalhes.
Select Mode (V): Allows selection of nodes in the viewport. Left clicking on a node to select one. Left clicking and dragging a rectangle selects all nodes within the rectangle's boundaries, once released. Holding Shift while selecting adds more nodes to the selection. Clicking on a selected node while holding Shift deselects the node. In this mode, you can use the gizmos to perform movement or rotation.
Mostrar a lista de nós selecionáveis na posição clicada: Como a descrição sugere, isso exibe uma lista de nós selecionáveis na posição clicada como um menu de contexto, caso haja mais de um nó na área clicada.
Travar (Ctrl + L) os nós selecionados, impedindo sua seleção e movimentação na janela de exibição. Clicar no botão novamente (ou usar Ctrl + Shift + L) destrava os nós selecionados. Nós travados só podem ser selecionados na árvore de cena. Eles podem ser facilmente identificados por um cadeado ao lado de seus nomes na árvore de cena. Clicar nesse cadeado também destrava os nós.
Agrupar Nó(s) Selecionado(s) (Ctrl + G). Isso permite a seleção do nó raiz se algum dos filhos estiver selecionado. Usar Ctrl + G novamente desfaz o agrupamento. Além disso, clicar no botão de desagrupar na árvore de cena realiza a mesma ação.
Modo Régua (M): Quando ativado, você pode clicar e arrastar para medir distâncias na cena em metros.
Usar Espaço Local (T): Se ativado, os gizmos de um nó são desenhados usando o ângulo de rotação do nó atual em vez dos eixos globais da viewport.
Usar Alinhamento (Y): Se ativado, o movimento e a rotação se alinham à grade. O alinhamento também pode ser ativado temporariamente mantendo pressionado Ctrl durante a ação. As configurações para alterar as opções de alinhamento são explicadas abaixo.
Usar Trackball (U): Quando ativado, arrastar o centro de um nó (representado por um discreto destaque em forma de disco de raio) irá girar o nó como um trackball físico.
Preservar Transformação dos Filhos (P): Quando ativado, transformar um nó preservará a transformação global de seus filhos.
Alternar visualização da luz do sol: Se não houver um DirectionalLight3D na cena, uma visualização da luz do sol pode ser usada como fonte de luz. Veja Ambiente e iluminação de visualização para mais detalhes.
Alternar visualização do ambiente: Se não houver um WorldEnvironment na cena, uma visualização do ambiente pode ser usada como espaço reservado. Veja Ambiente e iluminação de visualização para mais detalhes.
Editar configurações do Sol e do Ambiente (três pontos): Abre o menu para configurar as configurações de visualização da luz do sol e do ambiente. Veja Ambiente e iluminação de visualização para mais detalhes.
Menu Transformar: Ele possui três opções:
Alinhar Objeto ao Chão: Alinha um objeto a um chão sólido.
Diálogo de Transformação: Abre um diálogo para ajustar manualmente os parâmetros de transformação (translação, rotação, escala e transformação).
Configurações de Alinhamento: Permite alterar as configurações de alinhamento para transformação, rotação (em graus) e escala (em porcentagem).
Menu Visualizar: Controla as opções de visualização e ativa viewports adicionais:
Neste menu, você também pode mostrar/ocultar grades, definidas como 1x1 metro por padrão, e a origem, onde as linhas dos eixos azul, verde e vermelho se cruzam. Além disso, tipos específicos de gizmos podem ser ativados ou desativados nesse menu.
Um olho aberto significa que o gizmo está visível, um olho fechado significa que ele está oculto. Um olho meio aberto significa que ele também está visível por meio de superfícies opacas.
Clicar em Configurações nesse menu de visualização abre uma janela para alterar o parâmetro Campo de Visão Vertical (VFOV) (em graus), os valores de Z-Perto e Z-Longe.
Ao lado do menu Visualizar, botões adicionais podem estar visíveis. Na imagem da barra de ferramentas no início deste capítulo, um botão adicional Mesh aparece porque um MeshInstance3D está selecionado. Esse menu fornece algumas ações rápidas ou ferramentas para trabalhar em um nó ou seleção específica.
Sistema de coordenadas
O Godot usa o sistema métrico para tudo. A física 3D e outras áreas são ajustadas para isso, então tentar usar uma escala diferente é geralmente uma má ideia (a menos que você saiba o que está fazendo).
Ao trabalhar com ativos 3D, é sempre melhor trabalhar na escala correta (defina a unidade como métrica no seu software de modelagem 3D). O Godot permite escalonamento pós-importação e, embora isso funcione na maioria dos casos, em situações raras pode introduzir problemas de precisão de ponto flutuante (e, portanto, falhas ou artefatos) em áreas delicadas como renderização ou física. Certifique-se de que seus artistas trabalhem sempre na escala correta!
A coordenada Y é usada para "cima". Quanto aos eixos horizontais X/Z, a Godot usa um sistema de coordenadas destro (right-handed). Isso significa que, para a maioria dos objetos que precisam de alinhamento (como luzes ou câmeras), o eixo Z é usado como uma direção de "apontando para". Essa convenção significa basicamente que:
X são lados
Y é para cima/para baixo
Z é frente/trás
Veja este gráfico para comparação com outros softwares 3D:
Imagem de Freya Holmér
Espaço e manipulação gizmos
Mover, rotacionar e escalar objetos na visualização 3D é feito através dos manipuladores (gizmos). Cada eixo é representado por uma cor: Vermelho, Verde e Azul representam X, Y e Z respectivamente. Essa convenção também se aplica à grade e aos demais gizmos (assim como à linguagem de shaders, à ordenação de componentes de Vector3, Color etc.).
Algumas combinações de teclas úteis:
Para encaixar movimentação ou rotação, pressione Ctrl enquanto move, escala ou rotaciona.
Para centralizar a visualização no objeto selecionado, pressione F.
Na janela de exibição, as setas podem ser clicadas e mantidas pressionadas para mover o objeto em um eixo. Os arcos podem ser clicados e mantidos para rotacionar o objeto. Para travar um eixo e mover o objeto livremente nos outros dois eixos, os retângulos coloridos podem ser clicados, mantidos e arrastados.
Se o modo de transformação for alterado de Modo Seleção para Modo Escala, as setas serão substituídas por cubos, que podem ser arrastados para redimensionar um objeto como se ele estivesse sendo movido.
Usando atalhos de transformação no estilo do Blender
Desde o Godot 4.2, é possível ativar atalhos no estilo do Blender para translação, rotação e escala de nós. No Blender, esses atalhos são:
G para translação
R para rotação
S para escala
Após pressionar uma tecla de atalho com o foco na janela de exibição do editor 3D, mova o mouse ou insira um número para mover os nós selecionados pela quantidade especificada em unidades 3D. Você pode restringir o movimento a um eixo específico informando a letra do eixo e, em seguida, a distância (se estiver inserindo um valor pelo teclado).
Por exemplo, para mover a seleção para cima em 2.5 unidades, insira a seguinte sequência na ordem (Y+ é para cima no Godot):
G-Y-2-.-5-Enter
Para usar os atalhos de transformação no estilo do Blender no Godot, vá até a aba Shortcuts nas Configurações do Editor e, em seguida, na seção Spatial Editor:
Vincule Comece a Transformação da Tradução à tecla G.
Vincule Iniciar a Transformação de Rotação à tecla R.
Vincule Comece a Transformação em Escala à tecla S.
Por fim, desvincule Modo de Escala para que seu atalho não entre em conflito com Iniciar a Transformação de Rotação.
Nó Node3D
Node2D é o nó base para 2D. Control é o nó base para tudo relacionado a GUI. Seguindo esse raciocínio, a engine 3D usa o nó Node3D para tudo em 3D.
Os Node3Ds possuem uma transformação local, que é relativa ao nó pai (desde que o nó pai também seja do tipo ou herde do tipo Node3D). Essa transformação pode ser acessada como uma Transform3D de 3×4, ou como 3 membros Vector3 representando localização, rotação de Euler (ângulos X, Y e Z) e escala.
Conteúdo 3D
Ao contrário do 2D, onde carregar e desenhar imagens é algo simples, o 3D é um pouco mais complexo. O conteúdo precisa ser criado com ferramentas 3D especializadas (também chamadas de ferramentas de Criação de Conteúdo Digital, ou DCCs) e exportado para um formato de intercâmbio que possa ser importado pelo Godot. Isso é necessário porque formatos 3D não são tão padronizados quanto imagens.
Geometria gerada
É possível criar geometria personalizada usando o recurso ArrayMesh diretamente. Simplesmente crie seus arrays e use a função ArrayMesh.add_surface_from_arrays(). Uma classe auxiliar também está disponível, SurfaceTool, que fornece uma API mais simples e auxiliares para indexação, geração de normais, tangentes, etc.
De qualquer forma, este método é destinado a gerar geometria estática (modelos que não serão atualizados com frequência), pois criar arrays de vértices e enviá-los à API 3D tem um custo significativo de desempenho.
Nota
Para saber mais sobre prototipagem dentro do Godot ou usando ferramentas externas, veja Prototipando níveis com CSG.
Geometria imediata
Se, por outro lado, você precisar gerar geometria simples que será atualizada com frequência, a Godot fornece um recurso especial ImmediateMesh que pode ser usado em um nó MeshInstance3D. Isso fornece uma API de modo imediato ao estilo OpenGL 1.x para criar pontos, linhas, triângulos, etc.
2D em 3D
Embora Godot tenha um poderoso engine 2D, muitos tipos de jogos usam 2D em um ambiente 3D. Usando uma câmera fixa (ortogonal ou perspectiva) que não gira, nós como Sprite3D e AnimatedSprite3D podem ser usados para criar jogos 2D que aproveitam a mistura com fundos 3D, paralaxe mais realista, efeitos de iluminação/sombra, etc.
A desvantagem é, claro, que aumentou a complexidade e reduziu o desempenho em comparação com o 2D simples, bem como a falta de referência de trabalho em pixels.
Ambiente
Além de editar uma cena, muitas vezes é comum editar o ambiente. Godot fornece um nó WorldEnvironment que permite alterar a cor de fundo, o modo (como em, colocar um skybox) e aplicar vários tipos de efeitos de pós-processamento integrados. Os ambientes também podem ser substituídos na câmera.
Ambiente e iluminação de visualização
Por padrão, qualquer cena 3D que não tenha um nó WorldEnvironment ou um DirectionalLight3D terá uma visualização ativada automaticamente para suprir o que estiver faltando e iluminar a cena.
A luz e o ambiente de visualização só serão visíveis na cena enquanto estiver no editor. Se você executar a cena ou exportar o projeto, eles não afetarão a cena.
A luz e o ambiente de visualização podem ser ativados ou desativados no menu superior clicando em seus respectivos ícones.
O menu de lista de três pontos ao lado desses ícones pode ser usado para ajustar as propriedades do ambiente e da luz de visualização, se estiverem ativados.
O mesmo sol e ambiente de visualização são usados para todas as cenas dentro do mesmo projeto. Portanto, faça apenas ajustes que se apliquem a todas as cenas nas quais você precisará de uma luz e ambiente de visualização.
Câmeras
Não importa quantos objetos sejam colocados no espaço 3D, nada será exibido a menos que uma Camera3D também seja adicionada à cena. As câmeras podem funcionar em projeções ortogonais ou em perspectiva:
As câmeras são associadas a (e exibidas apenas para) uma janela de exibição pai ou avô. Como a raiz da árvore de cena é uma janela de exibição, as câmeras serão exibidas nela por padrão, mas se sub-janelas de exibição (como destino de renderização ou picture-in-picture) forem desejadas, elas precisarão de suas próprias câmeras filhas para exibição.
Ao lidar com várias câmeras, as seguintes regras são aplicadas para cada janela de exibição:
Se nenhuma câmera estiver presente na árvore de cenas, a primeira que entrar nela se tornará a câmera ativa. Outras câmeras entrando na cena serão ignoradas (a menos que sejam definidas como atual).
Se uma câmera tiver a propriedade "atual" definida, ela será usada independentemente de qualquer outra câmera na cena. Se a propriedade estiver definida, ela ficará ativa, substituindo a câmera anterior.
Se uma câmera ativa deixar a árvore de cena, a primeira câmera na ordem da árvore ocupará seu lugar.
Luzes
O ambiente de fundo emite uma certa luz ambiente que aparece nas superfícies. Ainda assim, sem fontes de luz colocadas na cena, ela parecerá bastante escura, a menos que o ambiente de fundo seja muito brilhante.
A maioria das cenas externas possui uma luz direcional (o sol ou a lua), enquanto cenas internas normalmente têm várias luzes posicionais (lâmpadas, tochas, ...). Veja Luzes e sombras 3D para mais informações sobre como configurar luzes no Godot.