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
Creating a 3D game can be challenging. That extra Z coordinate makes many of the common techniques that helped to make 2D games simpler no longer work. To aid in this transition, it is worth mentioning that Godot uses similar APIs for 2D and 3D. Most nodes are the same and are present in both 2D and 3D versions. In fact, it is worth checking the 3D platformer tutorial, or the 3D kinematic character tutorials, which are almost identical to their 2D counterparts.
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 mathemeticians or engineers, check out Matemática vetorial and Usando transformadores 3D.
espaço de trabalho 3D
Editing 3D scenes is done in the 3D workspace. This workspace can be selected manually, but it will be automatically selected when a Node3D node is selected.
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.
Main toolbar
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:
Transform Mode (Q): Enables a combined move + rotation mode for the selected nodes.
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.
Modo Seleção (Q): Permite a seleção de nós na janela de exibição. Clique com o botão esquerdo em um nó para selecioná-lo. Clicar e arrastar um retângulo com o botão esquerdo seleciona todos os nós dentro dos limites do retângulo ao soltar o botão. Manter pressionado Shift enquanto seleciona adiciona mais nós à seleção. Clicar em um nó já selecionado enquanto mantém Shift pressionado irá remover a seleção. Neste modo, você pode usar os gizmos para mover ou rotacionar.
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.
Use Trackball (U): When enabled, dragging the center of a node (represented by a subtle ray disc highlight) will rotate the node like a physical trackball.
Preserve Children Transform (P): When enabled, transforming a node will preserve the global transform of its children.
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 Preview environment and light 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 Preview environment and light 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 Preview environment and light 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).
When working with 3D assets, it's always best to work in the correct scale (set the unit to metric in your 3D modeling software). Godot allows scaling post-import and, while this works in most cases, in rare situations it may introduce floating-point precision issues (and thus, glitches or artifacts) in delicate areas such as rendering or physics. Make sure your artists always work in the right scale!
The Y coordinate is used for "up". As for the horizontal X/Z axes, Godot uses a right-handed coordinate system. This means that for most objects that need alignment (such as lights or cameras), the Z axis is used as a "pointing towards" direction. This convention roughly means that:
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
Moving, rotating, and scaling objects in the 3D view is done through the manipulator gizmos. Each axis is represented by a color: Red, Green, Blue represent X, Y, Z respectively. This convention applies to the grid and other gizmos too (and also to the shader language, ordering of components for Vector3, Color, etc.).
Algumas combinações de teclas úteis:
To snap placement or rotation, press Ctrl while moving, scaling, or rotating.
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.
Dica
Mais atalhos podem ser encontrados na página 3D / Spatial editor.
Node3D node
Node2D is the base node for 2D. Control is the base node for everything GUI. Following this reasoning, the 3D engine uses the Node3D node for everything 3D.
Node3Ds have a local transform, which is relative to the parent node (as long as the parent node is also of or inherits from the type Node3D). This transform can be accessed as a 3×4 Transform3D, or as 3 Vector3 members representing location, Euler rotation (X, Y and Z angles) and scale.
Conteúdo 3D
Unlike 2D, where loading image content and drawing is straightforward, 3D is a little more difficult. The content needs to be created with special 3D tools (also called Digital Content Creation tools, or DCCs) and exported to an exchange file format to be imported in Godot. This is required since 3D formats are not as standardized as images.
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 Prototyping levels with CSG.
Geometria imediata
If, instead, you need to generate simple geometry that will be updated often, Godot provides a special ImmediateMesh resource that can be used in a MeshInstance3D node. This provides an OpenGL 1.x-style immediate-mode API to create points, lines, triangles, 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.
Preview environment and light
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
No matter how many objects are placed in the 3D space, nothing will be displayed unless a Camera3D is also added to the scene. Cameras can work in either orthogonal or perspective projections:
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.