Class GltfDocument
- Namespace
- Godot
- Assembly
- GodotSharp.dll
GLTFDocument supports reading data from a glTF file, buffer, or Godot scene. This data can then be written to the filesystem, buffer, or used to create a Godot scene.
All of the data in a glTF scene is stored in the GltfState class. GLTFDocument processes state objects, but does not contain any scene data itself. GLTFDocument has member variables to store export configuration settings such as the image format, but is otherwise stateless. Multiple scenes can be processed with the same settings using the same GLTFDocument object and different GltfState objects.
GLTFDocument can be extended with arbitrary functionality by extending the GltfDocumentExtension class and registering it with GLTFDocument via RegisterGltfDocumentExtension(GltfDocumentExtension, bool). This allows for custom data to be imported and exported.
[GodotClassName("GLTFDocument")]
public class GltfDocument : Resource, IDisposable
- Inheritance
-
GltfDocument
- Implements
- Derived
- Inherited Members
Constructors
GltfDocument()
public GltfDocument()
Properties
ImageFormat
The user-friendly name of the export image format. This is used when exporting the glTF file, including writing to a file and writing to a byte array.
By default, Godot allows the following options: "None", "PNG", "JPEG", "Lossless WebP", and "Lossy WebP". Support for more image formats can be added in GltfDocumentExtension classes.
public string ImageFormat { get; set; }
Property Value
LossyQuality
If ImageFormat is a lossy image format, this determines the lossy quality of the image. On a range of 0.0
to 1.0
, where 0.0
is the lowest quality and 1.0
is the highest quality. A lossy quality of 1.0
is not the same as lossless.
public float LossyQuality { get; set; }
Property Value
RootNodeMode
How to process the root node during export. See GltfDocument.RootNodeModeEnum for details. The default and recommended value is SingleRoot.
Note: Regardless of how the glTF file is exported, when importing, the root node type and name can be overridden in the scene import settings tab.
public GltfDocument.RootNodeModeEnum RootNodeMode { get; set; }
Property Value
Methods
AppendFromBuffer(byte[], string, GltfState, uint)
Takes a byte[] defining a glTF and imports the data to the given GltfState object through the state
parameter.
Note: The basePath
tells AppendFromBuffer(byte[], string, GltfState, uint) where to find dependencies and can be empty.
public Error AppendFromBuffer(byte[] bytes, string basePath, GltfState state, uint flags = 0)
Parameters
Returns
AppendFromBuffer(ReadOnlySpan<byte>, string, GltfState, uint)
Takes a byte[] defining a glTF and imports the data to the given GltfState object through the state
parameter.
Note: The basePath
tells AppendFromBuffer(byte[], string, GltfState, uint) where to find dependencies and can be empty.
public Error AppendFromBuffer(ReadOnlySpan<byte> bytes, string basePath, GltfState state, uint flags)
Parameters
bytes
ReadOnlySpan<byte>basePath
stringstate
GltfStateflags
uint
Returns
AppendFromFile(string, GltfState, uint, string)
Takes a path to a glTF file and imports the data at that file path to the given GltfState object through the state
parameter.
Note: The basePath
tells AppendFromFile(string, GltfState, uint, string) where to find dependencies and can be empty.
public Error AppendFromFile(string path, GltfState state, uint flags = 0, string basePath = "")
Parameters
Returns
AppendFromScene(Node, GltfState, uint)
Takes a Godot Engine scene node and exports it and its descendants to the given GltfState object through the state
parameter.
public Error AppendFromScene(Node node, GltfState state, uint flags = 0)
Parameters
Returns
ExportObjectModelProperty(GltfState, NodePath, Node, int)
Determines a mapping between the given Godot nodePath
and the corresponding glTF Object Model JSON pointer(s) in the generated glTF file. The details of this mapping are returned in a GltfObjectModelProperty object. Additional mappings can be supplied via the _ImportObjectModelProperty(GltfState, string[], Array<NodePath>) callback method.
public static GltfObjectModelProperty ExportObjectModelProperty(GltfState state, NodePath nodePath, Node godotNode, int gltfNodeIndex)
Parameters
Returns
GenerateBuffer(GltfState)
public byte[] GenerateBuffer(GltfState state)
Parameters
state
GltfState
Returns
- byte[]
GenerateScene(GltfState, float, bool, bool)
Takes a GltfState object through the state
parameter and returns a Godot Engine scene node.
The bakeFps
parameter overrides the bake_fps in state
.
public Node GenerateScene(GltfState state, float bakeFps = 30, bool trimming = false, bool removeImmutableTracks = true)
Parameters
Returns
GetSupportedGltfExtensions()
Returns a list of all support glTF extensions, including extensions supported directly by the engine, and extensions supported by user plugins registering GltfDocumentExtension classes.
Note: If this method is run before a GLTFDocumentExtension is registered, its extensions won't be included in the list. Be sure to only run this method after all extensions are registered. If you run this when the engine starts, consider waiting a frame before calling this method to ensure all extensions are registered.
public static string[] GetSupportedGltfExtensions()
Returns
- string[]
HasGodotClassMethod(in godot_string_name)
Check if the type contains a method with the given name. This method is used by Godot to check if a method exists before invoking it. Do not call or override this method.
protected override bool HasGodotClassMethod(in godot_string_name method)
Parameters
method
godot_string_nameName of the method to check for.
Returns
HasGodotClassSignal(in godot_string_name)
Check if the type contains a signal with the given name. This method is used by Godot to check if a signal exists before raising it. Do not call or override this method.
protected override bool HasGodotClassSignal(in godot_string_name signal)
Parameters
signal
godot_string_nameName of the signal to check for.
Returns
ImportObjectModelProperty(GltfState, string)
Determines a mapping between the given glTF Object Model jsonPointer
and the corresponding Godot node path(s) in the generated Godot scene. The details of this mapping are returned in a GltfObjectModelProperty object. Additional mappings can be supplied via the _ExportObjectModelProperty(GltfState, NodePath, Node, int, GodotObject, int) callback method.
public static GltfObjectModelProperty ImportObjectModelProperty(GltfState state, string jsonPointer)
Parameters
Returns
InvokeGodotClassMethod(in godot_string_name, NativeVariantPtrArgs, out godot_variant)
Invokes the method with the given name, using the given arguments. This method is used by Godot to invoke methods from the engine side. Do not call or override this method.
protected override bool InvokeGodotClassMethod(in godot_string_name method, NativeVariantPtrArgs args, out godot_variant ret)
Parameters
method
godot_string_nameName of the method to invoke.
args
NativeVariantPtrArgsArguments to use with the invoked method.
ret
godot_variantValue returned by the invoked method.
Returns
RegisterGltfDocumentExtension(GltfDocumentExtension, bool)
Registers the given GltfDocumentExtension instance with GLTFDocument. If firstPriority
is true, this extension will be run first. Otherwise, it will be run last.
Note: Like GLTFDocument itself, all GLTFDocumentExtension classes must be stateless in order to function properly. If you need to store data, use the set_additional_data
and get_additional_data
methods in GltfState or GltfNode.
public static void RegisterGltfDocumentExtension(GltfDocumentExtension extension, bool firstPriority = false)
Parameters
extension
GltfDocumentExtensionfirstPriority
bool
UnregisterGltfDocumentExtension(GltfDocumentExtension)
Unregisters the given GltfDocumentExtension instance.
public static void UnregisterGltfDocumentExtension(GltfDocumentExtension extension)
Parameters
extension
GltfDocumentExtension
WriteToFilesystem(GltfState, string)
Takes a GltfState object through the state
parameter and writes a glTF file to the filesystem.
Note: The extension of the glTF file determines if it is a .glb binary file or a .gltf text file.
public Error WriteToFilesystem(GltfState state, string path)