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.

Import-Konfiguration

Godot bietet mehrere Möglichkeiten zur Anpassung der importierten Daten, wie z.B. das Import-Dock, den erweiterten Import-Einstellungsdialog und geerbte Szenen. Auf diese Weise können Sie weitere Änderungen an der importierten Szene vornehmen, z.B. Meshes anpassen, Physikinformationen hinzufügen und neue Nodes hinzufügen. Sie können auch ein Skript schreiben, das am Ende des Importvorgangs Code ausführt, um beliebige Anpassungen vorzunehmen.

Beachten Sie, wenn möglich, dass es besser ist, die Originaldaten zu ändern, als die Szene nach dem Import zu konfigurieren. Dies hilft, die Unterschiede zwischen der 3D-Modellierungs-Software und der importierten Szene zu minimieren. Siehe die Artikel Überlegungen zum Modellexport und Benutzerdefinierte Anpassungen des Node-Typs mithilfe von Namenssuffixen für weitere Informationen.

Import-Workflows

Da Godot nur sein eigenes Szenenformat (.tscn/.scn) speichern kann, kann Godot nicht über die ursprüngliche 3D-Szenendatei (die ein anderes Format verwendet) speichern. Dies ist auch ein sichererer Ansatz, da er versehentliche Änderungen an der Quelldatei vermeidet.

Damit die Szene und ihre Materialien individuell angepasst werden können, ermöglicht der Godot-Szenenimporter verschiedene Workflows für den Datenimport.

Import-Dock nach Auswahl einer 3D-Szene im Dateisystem-Dock

Import-Dock nach Auswahl einer 3D-Szene im Dateisystem-Dock

Dieser Importprozess kann je nach Bedarf über 3 verschiedene Schnittstellen angepasst werden:

  • Das Import-Dock, nachdem Sie die 3D-Szene durch einmaliges Anklicken im Dateisystem-Dock ausgewählt haben.

  • The Advanced Import Settings dialog, which can be accessed by double-clicking the 3D scene in the FileSystem dock or by clicking the Advanced… button in the Import dock. This allows you to customize per-object options in Godot, and preview models and animations. please see the Advanced Import Settings page for more information.

  • Import-Hints sind spezielle Suffixe, die den Objektnamen in der 3D-Modellierungssoftware hinzugefügt werden. Damit können Sie die Optionen in der 3D-Modellierungssoftware objektspezifisch anpassen.

Für grundlegende Anpassungen reicht die Verwendung des Importdocks aus. Für komplexere Vorgänge, wie z.B. das Definieren von Materialüberschreibungen für jedes einzelne Material, müssen Sie jedoch das Dialogfeld Erweiterte Importeinstellungen, Import-Hints oder möglicherweise beides verwenden.

Verwenden des Importdocks

Die folgenden Optionen können im Import-Dock eingestellt werden, nachdem eine 3D-Szene im Dateisystem-Dock ausgewählt wurde:

  • Root-Typ: Der Node-Typ, der als Root-Node verwendet werden soll. Es wird empfohlen, Node-Typen zu verwenden, die von Node3D erben. Andernfalls verlieren Sie die Möglichkeit, den Node direkt im 3D-Editor zu positionieren.

  • Root-Name: Der Name des Root-Nodes in der importierten Szene. Dies ist im Allgemeinen nicht bemerkbar, wenn die Szene im Editor instanziiert wird (oder per Drag-and-Drop aus dem Dateisystem-Dock), da der Root-Node in diesem Fall umbenannt wird, um dem Dateinamen zu entsprechen.

  • Root-Skalierung anwenden: Wenn diese Option aktiviert ist, wird die Root-Skalierung direkt auf die Meshes und Animationen angewendet, während die Skalierung des Root-Nodes auf dem Default-Wert (1, 1, 1) bleibt. Das bedeutet, dass wenn Sie später einen Child-Node in der importierten Szene hinzufügen, dieser nicht skaliert wird. Wenn es deaktiviert ist, wird Root-Skalierung stattdessen die Skalierung des Root-Nodes multiplizieren.

Meshes

  • Tangenten gewährleisten: Wenn diese Option aktiviert ist, werden Vertex-Tangenten mit Mikktspace erzeugt, wenn die Eingabemeshes keine Tangentendaten haben. Wenn möglich, wird empfohlen, die 3D-Modellierungssoftware beim Export die Tangenten erzeugen zu lassen, anstatt sich auf diese Option zu verlassen. Tangenten sind für die korrekte Anzeige von Normalen- und Höhenkarten sowie für alle Material-/Shader-Features erforderlich, die Tangenten benötigen. Wenn Sie keine Materialfunktionen benötigen, die Tangenten benötigen, kann die Deaktivierung dieser Option die Größe der Ausgabedatei verringern und den Import beschleunigen, wenn die 3D-Quelldatei keine Tangenten enthält.

  • LODs erzeugen: Wenn diese Option aktiviert ist, werden Varianten des Meshes mit geringeren Details erzeugt, die in der Ferne angezeigt werden, um die Performance des Renderings zu verbessern. Nicht alle Meshes profitieren von LOD, insbesondere wenn sie nie aus der Ferne gerendert werden. Die Deaktivierung dieser Option kann die Größe der Ausgabedatei verringern und den Import beschleunigen. Siehe Mesh-Level of Detail (LOD) für weitere Informationen.

  • Schattenmeshes erstellen: Wenn diese Option aktiviert ist, werden beim Import Schattenmeshes erstellt. Dies optimiert das Rendering von Schatten, ohne die Qualität zu beeinträchtigen, indem Vertices wenn möglich zusammengeschweißt werden. Dies wiederum reduziert die für das Rendern von Schatten erforderliche Speicherbandbreite. Die Erzeugung von Schattenmeshes unterstützt derzeit nicht die Verwendung einer niedrigeren Detailstufe als die des Quellmeshes (beim Schattenrendering werden jedoch LODs verwendet, wenn dies relevant ist).

  • Licht-Backen: Konfiguriert den Global Illumination-Modus der Meshes in der 3D-Szene. Wenn er auf Statische Lightmaps gesetzt ist, setzt er den GI-Modus der Meshes auf Statisch und generiert UV2 beim Import für Lightmap-Backen.

  • Lightmap-Texelgröße: Nur sichtbar, wenn Licht-Backen auf Statische Lightmaps eingestellt ist. Steuert die Größe der einzelnen Texel auf der gebackenen Lightmap. Ein kleinerer Wert führt zu präziseren Lightmaps, zum Preis von größeren Lightmap-Größen und längeren Backzeiten.

Skins

  • Benannte Skins verwenden: Wenn diese Option aktiviert ist, werden benannte Skins für die Animation verwendet. Der MeshInstance3D-Node enthält 3 hier relevante Propertys: einen Skelett-NodePath, der auf den Skeleton3D-Node zeigt (normalerweise ..), ein Mesh und eine Skin:

    • Der Skeleton3D-Node enthält eine Liste von Knochen mit Namen, deren Pose und Standardpose, einen Namen und einen Parent-Knochen.

    • Das Mesh ist die Gesamtheit der rohen Vertex-Daten, die zur Darstellung eines Meshes benötigt werden. Das Mesh weiß, wie Vertices gewichtet werden und verwendet eine interne Nummerierung, die oft aus 3D-Modellierungssoftware importiert wird.

    • Die Skin enthält die Informationen, die erforderlich sind, um dieses Mesh an dieses Skeleton3D zu binden. Für jede der internen Knochen-IDs, die von der 3D-Modellierungssoftware ausgewählt wurden, enthält sie zwei Dinge. Erstens, eine Matrix, die Bind Pose Matrix, Inverse Bind Matrix oder kurz IBM genannt wird. Zweitens enthält die Skin den Namen des jeweiligen Knochens (wenn Benannte Skins verwenden aktiviert ist) bzw. den Index des Knochens innerhalb der Skeleton3D-Liste (wenn Benannte Skins verwenden deaktiviert ist).

Zusammen reichen diese Informationen aus, um Godot mitzuteilen, wie die Knochenposen im Skeleton3D-Node verwendet werden sollen, um das Mesh von jedem MeshInstance3D zu rendern. Beachte, dass jedes MeshInstance3D Binds teilen kann, wie es in aus Blender exportierten Modellen üblich ist, oder jedes MeshInstance3D kann ein separates Skin-Objekt verwenden, wie es in aus anderen Tools wie Maya exportierten Modellen üblich ist.

Animation

  • Importieren: Wenn diese Option aktiviert ist, werden Animationen aus der 3D-Szene importiert.

  • FPS: Die Anzahl der Bilder pro Sekunde, die für das Backen von Animationskurven zu einer Reihe von Punkten mit linearer Interpolation verwendet wird. Es wird empfohlen, diesen Wert so zu konfigurieren, dass er mit dem Wert übereinstimmt, den Sie als Grundlinie in Ihrer 3D-Modellierungssoftware verwenden. Höhere Werte führen zu präziseren Animationen mit schnellen Bewegungsänderungen, allerdings zum Preis höherer Dateigrößen und des Speicherbedarfs. Dank der Interpolation bringt es in der Regel nicht viel, über 30 FPS zu gehen (da die Animation auch bei höheren Rendering-Framerates noch flüssig erscheint).

  • Beschneiden: Schneiden Sie den Anfang und das Ende von Animationen ab, wenn es keine Keyframe-Änderungen gibt. Dies kann die Größe der Ausgabedatei und die Speichernutzung bei bestimmten 3D-Szenen reduzieren, je nach Inhalt der Animations-Tracks.

  • Unveränderliche Tracks entfernen: Entfernt Animationstracks, die nur Default-Werte enthalten. Dies kann die Größe der Ausgabedatei und die Speichernutzung bei bestimmten 3D-Szenen reduzieren, je nach Inhalt der Animations-Tracks.

Import-Skript

glTF

  • Behandlung eingebetteter Texturen: Steuert, wie in glTF-Szenen eingebettete Texturen behandelt werden sollen. Alle Texturen verwerfen importiert keine Texturen, was nützlich ist, wenn Sie stattdessen Materialien manuell in Godot einrichten möchten. Texturen extrahieren extrahiert Texturen in externe Bilder, was zu kleineren Dateigrößen und mehr Kontrolle über die Importoptionen führt. Einbetten als Basis Universal und Einbetten als Unkomprimiert lässt die Texturen in der importierten Szene eingebettet, mit bzw. ohne VRAM-Kompression.

FBX

  • Importer Which import method is used. ubfx handles fbx files as fbx files. FBX2glTF converts FBX files to glTF on import and requires additional setup. FBX2glTF is not recommended unless you have a specific reason to use it over ufbx or working with a different file format.

  • Geometrie-Hilfsknoten zulassen aktiviert oder deaktiviert Geometrie-Hilfsknoten

  • Behandlung eingebetteter Texturen: Steuert, wie mit in FBX-Szenen eingebetteten Texturen umgegangen werden soll. Alle Texturen verwerfen importiert keine Texturen, was nützlich ist, wenn Sie Materialien stattdessen manuell in Godot einrichten möchten. Texturen extrahieren extrahiert Texturen in externe Bilder, was zu kleineren Dateigrößen und mehr Kontrolle über die Importoptionen führt. Als Basis universell einbetten und Als unkomprimiert einbetten behalten die Texturen in der importierten Szene eingebettet bei, mit bzw. ohne VRAM-Komprimierung.

Blender-specific options

Only visible for .blend files.

Nodes

  • Visible: All imports everything, even invisible objects. Visible Only only imports visible objects. Renderable only imports objects that are marked as renderable in Blender, regardless of whether they are actually visible. In Blender, renderability is toggled by clicking the camera icon next to each object in the Outliner, while visibility is toggled by the eye icon.

  • Active Collection Only: If checked, only imports nodes that are in the active collection in Blender.

  • Punctual Lights: If checked, imports lights (directional, omni, and spot) from Blender. "Punctual" is not to be confused with "positional", which is why directional lights are also included.

  • Cameras: If checked, imports cameras from Blender.

  • Custom Properties: If checked, imports custom properties from Blender as glTF extras. This data can then be used from an editor plugin that uses GLTFDocument.register_gltf_document_extension(), which can set node metadata on import (among other use cases).

  • Modifiers: If set to No Modifiers, object modifiers are ignored on import. If set to All Modifiers, applies modifiers to objects on import.

Meshes

  • Colors: If checked, imports vertex colors from Blender.

  • UVs: If checked, imports vertex UV1 and UV2 from Blender.

  • Normals: If checked, imports vertex normals from Blender.

  • Export Geometry Nodes Instances: If checked, imports geometry node instances from Blender.

  • GPU Instances If checked, imports instances and particle systems as GLTF's buffer/accessor data instead of numerous singular Mesh3D object. This does not include Geometry Nodes instancing.

  • Tangents: If checked, imports vertex tangents from Blender.

  • Skins: None skips skeleton skin data import from Blender. 4 Influences (Compatible) imports skin data to be compatible with all renderers, at the cost of lower precision for certain rigs. All Influences imports skin data with all influences (up to 8 in Godot), which is more precise but may not be compatible with all renderers.

  • Export Bones Deforming Mesh Only: If checked, only imports bones that deform the mesh from Blender.

Materials

  • Unpack Enabled: If checked, unpacks the original images to the Godot filesystem and uses them. This allows changing image import settings like VRAM compression. If unchecked, allows Blender to convert the original images, such as repacking roughness and metallic into one roughness + metallic texture. In most cases, this option should be left checked, but if the .blend file's images aren't in the correct format, this must be disabled for correct behavior.

  • Export Materials: If set to Placeholder, does not import materials, but keeps surface slots so that separate materials can be assigned to different surfaces. If set to Export, imports materials as-is (note that procedural Blender materials may not work correctly). If set to Named Placeholder, imports materials, but doesn't import images that are packed into the .blend file. Textures will have to be reassigned manually in the imported materials.

Animation

  • Limit Playback: If checked, limits animation import to the playback range defined in Blender (the Start and End options at the right of the animation timeline in Blender). This can avoid including unused animation data, making the imported scene smaller and faster to load. However, this can also result in missing animation data if the playback range is not set correctly in Blender.

  • Always Sample: If checked, forces animation sampling on import to ensure consistency between how Blender and glTF perform animation interpolation, at the cost of larger file sizes. If unchecked, there may be differences in how animations are interpolated between what you see in Blender and the imported scene in Godot, due to different interpolation semantics between both.

  • Group Tracks: If checked, imports animations (actives and on NLA tracks) as separate tracks. If unchecked, all the currently assigned actions become one glTF animation.

Verwendung von Importskripten für die Automatisierung

Ein spezielles Skript zur Verarbeitung der gesamten Szene nach dem Import kann bereitgestellt werden. Dies eignet sich hervorragend für die Nachbearbeitung, das Ändern von Materialien, lustige Sachen mit der Geometrie und vieles mehr.

Erstellen Sie ein Skript, das keinem Node zugeordnet ist, indem Sie mit der rechten Maustaste in das Dateisystem-Dock klicken und Neu > Skript... wählen. Schreiben Sie Folgendes in den Skript-Editor:

@tool # Needed so it runs in editor.
extends EditorScenePostImport

# This sample changes all node names.
# Called right after the scene is imported and gets the root node.
func _post_import(scene):
    # Change all node names to "modified_[oldnodename]"
    iterate(scene)
    return scene # Remember to return the imported scene

# Recursive function that is called on every node
# (for demonstration purposes; EditorScenePostImport only requires a `_post_import(scene)` function).
func iterate(node):
    if node != null:
        print_rich("Post-import: [b]%s[/b] -> [b]%s[/b]" % [node.name, "modified_" + node.name])
        node.name = "modified_" + node.name
        for child in node.get_children():
            iterate(child)

Die Funktion _post_import(scene: Node) nimmt die importierte Szene als Argument (der Parameter ist eigentlich der Root-Node der Szene). Die Szene, die letztendlich verwendet wird, muss zurückgegeben werden (auch wenn die Szene völlig anders sein kann).

Um Ihr Skript zu verwenden, suchen Sie das Skript auf dem "Import"-Tab in der Kategorie "Skript importieren" unter der Option "Pfad".

Verwendung von Animationsbibliotheken

You can also choose to import only animations from a glTF file and nothing else. This is used in some asset pipelines to distribute animations separately from models. For example, this allows you to use one set of animations for several characters, without having to duplicate animation data in every character.

Wählen Sie dazu die glTF-Datei im Dateisystem-Dock aus und ändern Sie dann den Importmodus im Import-Dock auf Animationsbibliothek:

Ändern des Importtyps in Animationsbibliothek im Importdock

Ändern des Importtyps in Animationsbibliothek im Importdock

Klicken Sie auf Neuimport und starten Sie den Editor neu, wenn Sie dazu aufgefordert werden. Nach dem Neustart wird die glTF-Datei als AnimationLibrary anstelle einer PackedScene importiert. Diese Animationsbibliothek kann dann in einem AnimationPlayer-Node referenziert werden.

Die Importoptionen, die nach dem Ändern des Importmodus in der Animationsbibliothek sichtbar sind, verhalten sich genauso wie bei der Verwendung des Importmodus "Szene". Siehe Verwenden des Importdocks für weitere Informationen.

Filter-Skript

Es ist möglich, ein Filterskript in einer speziellen Syntax anzugeben, um zu entscheiden, welche Tracks von welchen Animationen behalten werden sollen.

Das Filterskript wird für jede importierte Animation ausgeführt. Die Syntax besteht aus zwei Arten von Anweisungen, die erste für die Auswahl der zu filternden Animationen, die zweite für die Filterung einzelner Tracks innerhalb der übereinstimmenden Animation. Alle Namensmuster werden mit einer Groß-/Kleinschreibung-unabhängigen Ausdrucksvergleichs ausgeführt, mit Unterstützung für ?- und *-Wildcards (unter der Haube wird String.matchn() verwendet).

The script must start with an animation filter statement (as denoted by the line beginning with an @). For example, if we would like to apply filters to all imported animations which have a name ending in "_Loop":

@+*_Loop

Similarly, additional patterns can be added to the same line, separated by commas. Here is a modified example to additionally include all animations with names that begin with "Arm_Left", but also exclude all animations which have names ending in "Attack":

@+*_Loop, +Arm_Left*, -*Attack

Im Anschluss an die Erklärung zum Animationsauswahlfilter fügen wir Track-Filter-Muster hinzu, um anzugeben, welche Animations-Tracks beibehalten oder verworfen werden sollen. Wenn keine Track-Filter-Muster angegeben wurden, werden alle Tracks innerhalb der übereinstimmenden Animationen verworfen!

Es ist wichtig zu beachten, dass die Anweisungen des Track-Filters für jeden Track innerhalb der Animation der Reihe nach angewendet werden, d.h. eine Zeile kann einen Track enthalten, eine spätere Regel kann ihn immer noch verwerfen. In ähnlicher Weise kann ein durch eine frühe Regel ausgeschlossener Track dann durch eine Filterregel weiter unten im Filterskript wieder aufgenommen werden.

For example: include all tracks in animations with names ending in "_Loop", but discard any tracks affecting a "Skeleton" which end in "Control", unless they have "Arm" in their name:

@+*_Loop
+*
-Skeleton:*Control
+*Arm*

Im obigen Beispiel würden Tracks wie "Skeleton:Leg_Control" verworfen, während Tracks wie "Skeleton:Head" oder "Skeleton:Arm_Left_Control" beibehalten würden.

Alle Track-Filter-Linien, die nicht mit einem + oder - beginnen, werden ignoriert.

Szenenvererbung

In vielen Fällen kann es erwünscht sein, manuelle Änderungen an der importierten Szene vorzunehmen. Standardmäßig ist dies nicht möglich, da Godot bei einer Änderung des Quell-3D-Assets immer die gesamte Szene neu importiert.

Es ist jedoch möglich, lokale Änderungen mit Hilfe der Szenenvererbung vorzunehmen. Wenn Sie versuchen, die importierte Szene mit Szene > Szene öffnen... oder Szene > Szene schnell öffnen... zu öffnen, wird der folgende Dialog angezeigt:

Dialog beim Öffnen einer importierten 3D-Szene im Editor

Dialog beim Öffnen einer importierten 3D-Szene im Editor

Bei geerbten Szenen sind die einzigen Einschränkungen für Modifikationen:

  • Nodes aus der Basisszene können nicht entfernt werden, aber zusätzliche Nodes können überall hinzugefügt werden.

  • Subresourcen können nicht bearbeitet werden. Stattdessen müssen Sie sie, wie oben beschrieben, extern speichern.

Ansonsten ist alles erlaubt.