Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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.

No 3D, a matemática é um pouco mais complexa que no 2D, então verifique a entrada :ref:`doc_vector_math`no wiki(que foi criada especialmente para desenvolvedores de jogos, não para matemáticos ou engenheiros) isto ajudará a preparar o caminho para você desenvolver jogos 3D com eficiência.

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.

Nota

Be aware that "Spatial" Nodes are now called "Node3D" starting with Godot 4. Any Godot 3.x references to "Spatial" Nodes refer to "Node3D" in Godot 4.

../../_images/tuto_3d1.png

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 4×3 Transform3D, or as 3 Vector3 members representing location, Euler rotation (X, Y and Z angles) and scale.

../../_images/tuto_3d2.png

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.

Manually authored models (using 3D modeling software)

There are two pipelines to import 3D models in Godot. The first and most common one is by Importando cenas 3D, which allows you to import entire scenes (exactly as they look in the 3D modeling software), including animation, skeletal rigs, blend shapes, etc.

The second pipeline is by importing simple .OBJ files as mesh resources, which can be then put inside a MeshInstance3D node for display.

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.

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.

Viewport 3D

Editing 3D scenes is done in the 3D tab. This tab can be selected manually, but it will be automatically enabled when a Node3D node is selected.

../../_images/tuto_3d3.png

Os controles de navegação de cena 3D padrão são semelhantes aos do Blender (com o objetivo de ter algum tipo de consistência no pipeline de software livre...), mas são incluídas opções para personalizar os botões e o comportamento do mouse para serem semelhantes a outras ferramentas nas Configurações do Editor:

../../_images/tuto_3d4.png

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

See this chart for comparison with other 3D software:

3D coordinate systems comparison chart

Image by Freya Holmér

Espaço e manipulação gizmos

A movimentação de objetos na visualização 3D é feita por meio de gizmos manipuladores. Cada eixo é representado por uma cor: Vermelho, Verde, Azul representam X, Y, Z respectivamente. Essa convenção também se aplica à grade e a outros dispositivos (e também à linguagem de shader, ordenação de componentes para Vector3, Color, etc.).

../../_images/tuto_3d5.png

Algumas combinações de teclas úteis:

  • Para posicionamento ou rotação encaixada, pressione Ctrl enquanto move, dimensiona ou gira.

  • Para centralizar a visualização no objeto selecionado, pressione F.

Using Blender-style transform shortcuts

Since Godot 4.2, you can enable Blender-style shortcuts for translating, rotating and scaling nodes. In Blender, these shortcuts are:

  • G for translating

  • R for rotating

  • S for scaling

After pressing a shortcut key while focusing on the 3D editor viewport, move the mouse or enter a number to move the selected node(s) by the specified amount in 3D units. You can constrain movement to a specific axis by specifying the axis as a letter, then the distance (if entering a value with the keyboard).

For instance, to move the selection upwards by 2.5 units, enter the following sequence in order (Y+ is upwards in Godot):

G-Y-2-.-5-Enter

To use Blender-style transform shortcuts in Godot, go to the Editor Settings' Shortcuts tab, then in the Spatial Editor section:

  • Bind Begin Translate Transformation to G.

  • Bind Begin Rotate Transformation to R.

  • Bind Begin Scale Transformation to S.

  • Finally, unbind Scale Mode so that its shortcut won't conflict with Begin Rotate Transformation.

Menu "Exibir"

As opções de exibição são controladas pelo menu "Exibir" na barra de ferramentas da janela de exibição.

../../_images/tuto_3d6.png

Você pode ocultar os gizmos na visualização 3D do editor através deste menu:

../../_images/tuto_3d6_1.png

Para ocultar um tipo específico de gizmos, você pode desativá-los no menu "Exibir".

../../_images/tuto_3d6_2.png

Ambiente padrão

Quando criado a partir do Gerente de Projeto, o ambiente 3D tem um céu padrão.

../../_images/tuto_3d8.png

Given how physically-based rendering works, it is advised to always try to work with a default environment in order to provide indirect and reflected light to your objects.

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:

../../_images/tuto_3d10.png

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.

../../_images/tuto_3d11.png

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

The background environment emits some ambient light which appears on surfaces. Still, without any light sources placed in the scene, the scene will appear quite dark unless the background environment is very bright.

Most outdoor scenes have a directional light (the sun or moon), while indoor scenes typically have several positional lights (lamps, torches, …). See Luzes e sombras 3D for more information on setting up lights in Godot.