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...
3D Einführung
Die Entwicklung eines 3D-Spiels kann eine Herausforderung sein. Die zusätzliche Z-Koordinate führt dazu, dass viele der gängigen Techniken, die 2D-Spiele einfacher machen, nicht mehr funktionieren. Um diesen Übergang zu erleichtern, ist es erwähnenswert, dass Godot ähnliche APIs für 2D und 3D verwendet. Die meisten Nodes sind die gleichen und sowohl in der 2D- als auch in der 3D-Version vorhanden. In der Tat lohnt es sich, in das 3D-Plattformer-Tutorial oder die Tutorials für kinematische 3D-Charaktere reinzuschauen, die fast identisch mit ihren 2D-Pendants sind.
Godot Third Person Shooter (TPS) Demo, available on the Github repository or the 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 Vektormathematik and 3D-Transformationen verwenden.
3D workspace
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.
Similar to 2D, the tabs below the workspace selector are used to change between currently opened scenes or create a new one using the plus (+) button. The left and right docks should be familiar from editor introduction.
Below the scene selector, the main toolbar is visible, and beneath the main toolbar is the 3D viewport.
Hauptwerkzeugleiste
Some buttons in the main toolbar are the same as those in the 2D workspace. A brief explanation is given with the shortcut if the mouse cursor is hovered over a button for one second. Some buttons may have additional functionality if another keypress is performed. A recap of main functionality of each button with its default shortcut is provided below from left to right:
Transform Mode (Q): Enables a combined move + rotation mode for the selected nodes.
Move Mode (W): Enables move (or translate) mode for the selected nodes. See Raum- und Manipulations-Gizmos for more details.
Rotate Mode (E): Enables rotation mode for the selected nodes. See Raum- und Manipulations-Gizmos for more details.
Scale Mode (R): Enables scaling and displays scaling gizmos in different axes for the selected nodes. See Raum- und Manipulations-Gizmos for more details.
Select Mode (Q): 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.
Show the list of selectable nodes at the clicked position: As the description suggests, this provides a list of selectable nodes at the clicked position as a context menu, if there is more than one node in the clicked area.
Lock (Ctrl + L) the selected nodes, preventing selection and movement in the viewport. Clicking the button again (or using Ctrl + Shift + L) unlocks the selected nodes. Locked nodes can only be selected in the scene tree. They can easily be identified with a padlock next to their node names in the scene tree. Clicking on this padlock also unlocks the nodes.
Group selected nodes (Ctrl + G). This allows selection of the root node if any of the children are selected. Using Ctrl + G ungroups them. Additionally, clicking the ungroup button in the scene tree performs the same action.
Ruler Mode (M): When enabled you can click and drag to measure distance in the scene in meters.
Use Local Space (T): If enabled, gizmos of a node are drawn using the current node's rotation angle instead of the global viewport axes.
Use Snap (Y): If enabled, movement, and rotation snap to grid. Snapping can also temporarily be activated using Ctrl while performing the action. The settings for changing snap options are explained below.
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.
Toggle preview sunlight: If no DirectionalLight3D exist in the scene, a preview of sunlight can be used as a light source. See Preview environment and light for more details.
Toggle preview environment: If no WorldEnvironment exists in the scene, a preview of the environment can be used as a placeholder. See Preview environment and light for more details.
Edit Sun and Environment Settings (three dots): Opens the menu to configure preview sunlight and environment settings. See Preview environment and light for more details.
Transform menu: It has three options:
Snap Object to Floor: Snaps an object to a solid floor.
Transform Dialog: Opens a dialog to adjust transform parameters (translate, rotate, scale, and transform) manually.
Snap Settings: Allows you to change transform, rotate snap (in degrees), and scale snap (in percent) settings.
View menu: Controls the view options and enables additional viewports:
In this menu, you can also show/hide grids, which are set to 1x1 meter by default, and the origin, where the blue, green, and red axis lines intersect. Moreover, specific types of gizmos can be toggled in this menu.
An open eye means that the gizmo is visible, a closed eye means it is hidden. A half-open eye means that it is also visible through opaque surfaces.
Clicking on Settings in this view menu opens a window to change the Vertical Field of View (VFOV) parameter (in degrees), Z-Near, and Z-Far values.
Next to the View menu, additional buttons may be visible. In the toolbar image at the beginning of this chapter, an additional Mesh button appears because a MeshInstance3D is selected. This menu provides some quick actions or tools to work on a specific node or selection.
Koordinatensystem
Godot verwendet für alles das metrische System, wobei eine Einheit einem Meter entspricht. Physik und andere Bereiche sind darauf abgestimmt, daher ist der Versuch, einen anderen Maßstab zu verwenden, in der Regel eine schlechte Idee (es sei denn, Sie wissen, was Sie tun).
Bei der Arbeit mit 3D-Assets ist es immer am besten, im richtigen Maßstab zu arbeiten (stellen Sie die Einheit in Ihrer 3D-Modellierungssoftware auf metrisch). Godot erlaubt die Skalierung nach dem Import, und obwohl dies in den meisten Fällen funktioniert, kann es in seltenen Fällen zu Problemen mit der Float-Präzision (und damit zu Störungen oder Artefakten) in heiklen Bereichen wie Rendering oder Physik kommen. Stellen Sie sicher, dass Ihre Künstler immer im richtigen Maßstab arbeiten!
Die Y-Koordinate wird für "oben" verwendet. Was die horizontalen X/Z-Achsen betrifft, so verwendet Godot ein rechtshändiges Koordinatensystem. Das bedeutet, dass für die meisten Objekte, die ausgerichtet werden müssen (z. B. Lichter oder Kameras), die Z-Achse als "vorwärts" verwendet wird. Diese Konvention bedeutet in etwa Folgendes:
X ist seitlich
Y ist oben/unten
Z ist vorne/hinten
In dieser Tabelle finden Sie einen Vergleich mit anderer 3D-Software:
Bild von Freya Holmér
Raum- und Manipulations-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.).
Einige nützliche Tastenkürzel:
To snap placement or rotation, press Ctrl while moving, scaling, or rotating.
Zum Zentrieren der Ansicht auf das ausgewählte Objekt, drücken Sie F.
In the viewport, the arrows can be clicked and held to move the object on an axis. The arcs can be clicked and held to rotate the object. To lock one axis and move the object freely in the other two axes, the colored rectangles can be clicked, held, and dragged.
If the transform mode is changed from Select Mode to Scale Mode, the arrows will be replaced by cubes, which can be dragged to scale an object as if the object is being moved.
Transformations-Tastenkürzel im Stil von Blender verwenden
Seit Godot 4.2 können Sie Blender-ähnliche Tastenkürzel zum Verschieben, Rotieren und Skalieren von Nodes aktivieren. In Blender sind diese Tastenkürzel:
G zum Verschieben
R zum Rotieren
S zum Skalieren
Nachdem Sie ein Tastenkürzel gedrückt haben, während der Fokus dem 3D-Editor-Viewport liegt, bewegen Sie die Maus oder geben Sie eine Zahl ein, um den/die ausgewählten Node(s) um den angegebenen Betrag in 3D-Einheiten zu verschieben. Sie können die Bewegung auf eine bestimmte Achse beschränken, indem Sie die Achse als Buchstaben und dann den Abstand angeben (wenn Sie einen Wert über die Tastatur eingeben).
Um z. B. die Auswahl um 2,5 Einheiten nach oben zu verschieben, geben Sie nacheinander die folgende Sequenz ein (Y+ steht in Godot für "nach oben"):
G-Y-2-.-5-Enter
Um Blender-ähnliche Transformations-Shortcuts in Godot zu verwenden, gehen Sie in den Editor-Einstellungen auf den Tab Tastenkürzel und dann in den Abschnitt Spatial Editor:
Binden Sie Verschiebungs-Transformation starten an G.
Binden Sie Rotations-Transformation starten an R.
Binden Sie Skalierungs-Transformation starten an S.
Heben Sie schließlich die Bindung von Skalierungsmodus auf, damit sein Tastenkürzel nicht mit Rotations-Transformation starten kollidiert.
Tipp
More shortcuts can be found on the 3D / Spatial editor page.
Node3D-Node
Node2D ist der Basis Node für 2D. Control ist der Basis Node für alle GUI-Belange. Entsprechend verwendet die 3D-Engine den Node3D Node für alle 3D-Themen.
Node3Ds haben eine lokale Transformation, die relativ zum übergeordneten Node ist (solange der übergeordnete Node auch vom Typ Node3D ist oder von Node3D erbt). Auf diese Transformation kann als 3×4 Transform3D oder als 3 Vector3-Member zugegriffen werden, die Position, Euler-Rotation (X-, Y- und Z-Winkel) und Skalierung darstellen.
3D-Inhalt
Im Gegensatz zu 2D, wo das Laden von Bildinhalten und das Zeichnen direkt möglich sind, ist 3D ein wenig schwieriger. Die Inhalte müssen mit speziellen 3D-Werkzeugen (auch Digital Content Creation Tools oder DCCs genannt) erstellt und in ein Austauschdateiformat exportiert werden, um in Godot importiert werden zu können. Dies ist erforderlich, da 3D-Formate nicht so standardisiert sind wie Bilder.
Generierte Geometrie
Es ist möglich, benutzerdefinierte Geometrie mithilfe der Ressource ArrayMesh direkt zu erstellen. Erstellen Sie einfach Ihre Arrays und verwenden Sie die Funktion ArrayMesh.add_surface_from_arrays (). Es steht auch eine Hilfsklasse zur Verfügung, SurfaceTool, die eine einfachere API und Hilfen zum Indizieren, dem Generieren von Normalen, Tangenten etc. bietet.
In jedem Fall ist diese Methode zum Generieren statischer Geometrie (Modelle, die nicht häufig aktualisiert werden) gedacht, da das Erstellen von Vertex-Arrays und deren Übermittlung an die 3D-API erhebliche Performancekosten verursacht.
Bemerkung
To learn about prototyping inside Godot or using external tools, see Level-Prototypen mittels CSG erstellen.
Unmittelbare Geometrie
Wenn Sie stattdessen eine einfache Geometrie erzeugen müssen, die häufig aktualisiert wird, bietet Godot eine spezielle Ressource ImmediateMesh, die in einem MeshInstance3D-Node verwendet werden kann. Dies bietet eine OpenGL 1.x-ähnliche Immediate-Mode-API, um Punkte, Linien, Dreiecke usw. zu erstellen.
2D in 3D
Während Godot eine leistungsstarke 2D-Engine enthält, verwenden viele Arten von Spielen 2D in einer 3D-Umgebung. Durch die Verwendung einer festen Kamera (entweder orthogonal oder perspektivisch), die sich nicht dreht, können Nodes wie Sprite3D und AnimatedSprite3D verwendet werden, um 2D-Spiele zu erstellen, die das Mischen mit 3D-Hintergründen, realistische Parallax-Effekte, Licht- / Schatteneffekte etc. nutzen.
Der Nachteil ist natürlich, dass die Komplexität zunimmt und die Performance im Vergleich zu einfachem 2D, sowie die fehlenden Bezugspunkte für die Arbeit in Pixeln verringert wird.
Environment
Neben der Bearbeitung einer Szene ist es häufig üblich, die Environment zu bearbeiten. Godot bietet einen WorldEnvironment-Node, der es erlaubt, die Hintergrundfarbe, den Modus (z.B. wie setze ich eine Skybox) zu ändern und verschiedene Arten von built-in-Nachbearbeitungseffekten anzuwenden. Environments können auch in der Kamera überschrieben werden.
Preview environment and light
Standardmäßig wird für jede 3D-Szene, die keinen WorldEnvironment-Node oder einen DirectionalLight3D-Node hat, eine Vorschau für das, was ihr zur Beleuchtung der Szene fehlt, eingeschaltet.
Das Vorschau-Licht und die Environment sind nur in der Szene sichtbar, wenn Sie sich im Editor befinden. Wenn Sie die Szene ausführen oder das Projekt exportieren, haben sie keinen Einfluss auf die Szene.
The preview light and environment can be turned on or off from the top menu by clicking on their respective icon.
The three dots dropdown menu next to those icons can be used to adjust the properties of the preview environment and light if they are enabled.
Die gleiche Vorschau-Sonne und Environment wird für jede Szene im selben Projekt verwendet. Nehmen Sie also nur Anpassungen vor, die für alle Szenen gelten, für die Sie ein Vorschau-Licht und eine Environment benötigen.
Kameras
Unabhängig davon, wie viele Objekte im 3D-Raum platziert sind, wird nichts angezeigt, wenn nicht auch eine Camera3D zur Szene hinzugefügt wird. Kameras können entweder in orthogonalen oder perspektivischen Projektionen arbeiten:
Kameras sind mit einem Parent oder Grandparent-Viewport verbunden (und werden nur dort angezeigt). Da der Root des Szenenbaums ein Viewport ist, werden Kameras standardmäßig in diesem angezeigt. Wenn jedoch Unter-Viewports (entweder als Rendering-Target oder als Bild-im-Bild) gewünscht sind, benötigen sie ihre eigenen untergeordneten Kameras, um angezeigt zu werden.
Wenn man mit mehreren Kameras zu tun hat, werden folgende Regeln für jeden Viewport angewendet:
Wenn keine Kameras im Szenenbaum vorhanden sind, wird die erste Kamera, die in die Szene eintritt, die aktive Kamera. Weitere Kameras, die der Szene betreten, werden ignoriert (es sei denn, sie sind als aktuell eingestellt).
Wenn für eine Kamera die Property "current" gesetzt ist, wird sie unabhängig von allen anderen Kameras in der Szene verwendet. Wenn die Property gesetzt ist, wird sie aktiv und ersetzt die vorherige Kamera.
Wenn eine aktive Kamera den Szenenbaum verlässt, wird die erste Kamera in der Baumreihenfolge an ihre Stelle treten.
Lichter
Die Hintergrund-Environment strahlt ein gewisses Umgebungslicht aus, das auf den Oberflächen erscheint. Ohne Lichtquellen in der Szene erscheint die Szene jedoch recht dunkel, es sei denn, die Hintergrund-Environment ist sehr hell.
Die meisten Außenszenen haben ein gerichtetes Licht (die Sonne oder den Mond), während Innenszenen typischerweise mehrere Positionslichter (Lampen, Fackeln, ...) haben. Siehe 3D Beleuchtung und Schatten für weitere Informationen zum Einrichten von Lichtern in Godot.