GLTFDocument

Eredita: Resource < RefCounted < Object

Ereditato da: FBXDocument

Classe per importare ed esportare file glTF da Godot.

Descrizione

GLTFDocument supporta la lettura di dati da un file glTF, buffer o scena Godot. È possibile successivamente scrivere questi dati nel file system, buffer o utilizzati per creare una scena Godot.

Tutti i dati in una scena glTF sono archiviati nella classe GLTFState. GLTFDocument elabora oggetti di stato, ma esso stesso non contiene dati di scena. GLTFDocument ha variabili membro per memorizzare impostazioni d'esportazione come il formato immagine, ma è comunque stateless. È possibile elaborare più scene con le stesse impostazioni utilizzando lo stesso oggetto GLTFDocument e diversi oggetti GLTFState.

GLTFDocument può essere esteso con funzionalità arbitrarie estendendo la classe GLTFDocumentExtension e registrandola con GLTFDocument tramite register_gltf_document_extension(). Ciò consente di importare ed esportare dati personalizzati.

Tutorial

Proprietà

String

fallback_image_format

"None"

float

fallback_image_quality

0.25

String

image_format

"PNG"

float

lossy_quality

0.75

RootNodeMode

root_node_mode

0

VisibilityMode

visibility_mode

0

Metodi

Error

append_from_buffer(bytes: PackedByteArray, base_path: String, state: GLTFState, flags: int = 0)

Error

append_from_file(path: String, state: GLTFState, flags: int = 0, base_path: String = "")

Error

append_from_scene(node: Node, state: GLTFState, flags: int = 0)

GLTFObjectModelProperty

export_object_model_property(state: GLTFState, node_path: NodePath, godot_node: Node, gltf_node_index: int) static

PackedByteArray

generate_buffer(state: GLTFState)

Node

generate_scene(state: GLTFState, bake_fps: float = 30, trimming: bool = false, remove_immutable_tracks: bool = true)

PackedStringArray

get_supported_gltf_extensions() static

GLTFObjectModelProperty

import_object_model_property(state: GLTFState, json_pointer: String) static

void

register_gltf_document_extension(extension: GLTFDocumentExtension, first_priority: bool = false) static

void

unregister_gltf_document_extension(extension: GLTFDocumentExtension) static

Error

write_to_filesystem(state: GLTFState, path: String)


Enumerazioni

enum RootNodeMode: 🔗

RootNodeMode ROOT_NODE_MODE_SINGLE_ROOT = 0

Tratta il nodo radice della scena Godot come nodo radice del file glTF e lo contrassegna come singolo nodo radice tramite l'estensione glTF GODOT_single_root. Questo verrà elaborato allo stesso modo di ROOT_NODE_MODE_KEEP_ROOT se l'implementazione non supporta GODOT_single_root.

RootNodeMode ROOT_NODE_MODE_KEEP_ROOT = 1

Tratta il nodo radice della scena Godot come nodo radice del file glTF, ma non lo contrassegnar come qualcosa di speciale. Un ulteriore nodo radice sarà generato durante l'importazione in Godot. Questo utilizza solo le funzionalità vanilla glTF. Ciò equivale al comportamento in Godot 4.1 e precedenti.

RootNodeMode ROOT_NODE_MODE_MULTI_ROOT = 2

Tratta il nodo radice della scena Godot come il nome della scena glTF e aggiunge tutti i suoi figli come nodi radice del file glTF. Usa solo le funzionalità vanilla glTF. Ciò evita un ulteriore nodo radice, ma sarà preservato solo il nome del nodo radice della scena Godot, poiché non sarà salvato come nodo.


enum VisibilityMode: 🔗

VisibilityMode VISIBILITY_MODE_INCLUDE_REQUIRED = 0

Se la scena contiene nodi non visibili, includili, segnali come non visibili con KHR_node_visibility e richiedi agli importatori di rispettarne la non visibilità. Svantaggio: se l'importatore non supporta KHR_node_visibility, il file non può essere importato.

VisibilityMode VISIBILITY_MODE_INCLUDE_OPTIONAL = 1

Se la scena contiene nodi non visibili, includili, segnali come non visibili con KHR_node_visibility e non imporre alcun requisito agli importatori. Svantaggio: se l'importatore non supporta KHR_node_visibility, gli oggetti invisibili saranno visibili.

VisibilityMode VISIBILITY_MODE_EXCLUDE = 2

Se la scena contiene nodi non visibili, non includerli nell'esportazione. Questo è lo stesso comportamento di Godot 4.4 e versioni precedenti. Svantaggio: i nodi invisibili non esisteranno nel file esportato.


Descrizioni delle proprietà

String fallback_image_format = "None" 🔗

  • void set_fallback_image_format(value: String)

  • String get_fallback_image_format()

The user-friendly name of the fallback image format. This is used when exporting the glTF file, including writing to a file and writing to a byte array.

This property may only be one of "None", "PNG", or "JPEG", and is only used when the image_format is not one of "None", "PNG", or "JPEG". If having multiple extension image formats is desired, that can be done using a GLTFDocumentExtension class - this property only covers the use case of providing a base glTF fallback image when using a custom image format.


float fallback_image_quality = 0.25 🔗

  • void set_fallback_image_quality(value: float)

  • float get_fallback_image_quality()

La qualità dell'immagine di riserva, se presente. Per i file PNG, questa opzione riduce l'immagine su entrambe le dimensioni di questo fattore. Per i file JPEG, questa opzione rappresenta la qualità lossy dell'immagine. Si consiglia un valore basso, poiché includere più immagini ad alta qualità in un file glTF vanifica i guadagni in dimensioni del file derivanti dall'utilizzo di un formato immagine più efficiente.


String image_format = "PNG" 🔗

  • void set_image_format(value: String)

  • String get_image_format()

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. A single extension class can provide multiple options for the specific format to use, or even an option that uses multiple formats at once.


float lossy_quality = 0.75 🔗

  • void set_lossy_quality(value: float)

  • float get_lossy_quality()

Se image_format è un formato immagine con perdita di dati, questo determina la qualità con perdita dell'immagine. Su un intervallo da 0.0 a 1.0, dove 0.0 è la qualità più bassa e 1.0 è la qualità più alta. Una qualità con perdita di 1.0 non è la stessa cosa di una qualità senza perdita.


RootNodeMode root_node_mode = 0 🔗

Come elaborare il nodo radice durante l'esportazione. Il valore predefinito e consigliato è ROOT_NODE_MODE_SINGLE_ROOT.

Nota: A prescindere da come viene esportato il file glTF, durante l'importazione, è possibile sovrascrivere il tipo e il nome del nodo radice nella scheda delle impostazioni di importazione della scena.


VisibilityMode visibility_mode = 0 🔗

Come gestire la visibilità dei nodi durante l'esportazione. Questa impostazione non ha alcun effetto se tutti i nodi sono visibili. Il valore predefinito e consigliato è VISIBILITY_MODE_INCLUDE_REQUIRED, che utilizza l'estensione KHR_node_visibility.


Descrizioni dei metodi

Error append_from_buffer(bytes: PackedByteArray, base_path: String, state: GLTFState, flags: int = 0) 🔗

Accetta un PackedByteArray che definisce un glTF e importa i dati nell'oggetto GLTFState specificato tramite il parametro state.

Nota: Il parametro base_path indica a append_from_buffer() dove trovare le dipendenze e può essere vuoto.


Error append_from_file(path: String, state: GLTFState, flags: int = 0, base_path: String = "") 🔗

Accetta un percorso verso un file glTF e importa i dati in quel percorso file nell'oggetto GLTFState specificato tramite il parametro state.

Nota: Il parametro base_path indica a append_from_buffer() dove trovare le dipendenze e può essere vuoto.


Error append_from_scene(node: Node, state: GLTFState, flags: int = 0) 🔗

Accetta un nodo di scena del motore Godot ed esporta esso e i suoi discendenti nell'oggetto GLTFState specificato tramite il parametro state.


GLTFObjectModelProperty export_object_model_property(state: GLTFState, node_path: NodePath, godot_node: Node, gltf_node_index: int) static 🔗

Determina una mappatura tra il percorso di nodo node_path di Godot e i corrispondenti puntatori JSON del modello d'oggetto glTF nel file glTF generato. I dettagli di questa mappatura vengono restituiti in un oggetto GLTFObjectModelProperty. È possibile fornire ulteriori mappature tramite il metodo di callback GLTFDocumentExtension._import_object_model_property().


PackedByteArray generate_buffer(state: GLTFState) 🔗

Accetta un oggetto GLTFState tramite il parametro state e restituisce un PackedByteArray glTF.


Node generate_scene(state: GLTFState, bake_fps: float = 30, trimming: bool = false, remove_immutable_tracks: bool = true) 🔗

Accetta un oggetto GLTFState tramite il parametro state e restituisce un nodo scena di Godot Engine.

Il parametro bake_fps sostituisce bake_fps in state.


PackedStringArray get_supported_gltf_extensions() static 🔗

Restituisce una lista di tutte le estensioni glTF supportate, incluse le estensioni supportate direttamente dal motore e le estensioni supportate dalle estensioni utente che registrano le classi GLTFDocumentExtension.

Nota: Se questo metodo viene eseguito prima che un GLTFDocumentExtension sia registrato, le sue estensioni non saranno incluse nella lista. Assicurati di eseguire questo metodo solo dopo che tutte le estensioni sono state registrate. Se viene eseguito all'avvio del motore, considera di attendere un frame prima di chiamare questo metodo per assicurarti che tutte le estensioni siano state registrate.


GLTFObjectModelProperty import_object_model_property(state: GLTFState, json_pointer: String) static 🔗

Determina una mappatura tra il puntatore JSON json_pointer del modello d'oggetto glTF e i percorsi dei nodi Godot corrispondenti nella scena generata di Godot. I dettagli di questa mappatura vengono restituiti in un oggetto GLTFObjectModelProperty. È possibile fornire ulteriori mappature tramite il metodo di callback GLTFDocumentExtension._export_object_model_property().


void register_gltf_document_extension(extension: GLTFDocumentExtension, first_priority: bool = false) static 🔗

Registra l'istanza GLTFDocumentExtension specificata con GLTFDocument. Se first_priority è true, questa estensione sarà eseguita per prima. Altrimenti, sarà eseguita per ultima.

Nota: Come GLTFDocument stesso, tutte le classi GLTFDocumentExtension devono essere stateless per funzionare correttamente. Se è necessario memorizzare dati, usa i metodi set_additional_data e get_additional_data in GLTFState o GLTFNode.


void unregister_gltf_document_extension(extension: GLTFDocumentExtension) static 🔗

Annulla la registrazione dell'istanza GLTFDocumentExtension specificata.


Error write_to_filesystem(state: GLTFState, path: String) 🔗

Accetta un oggetto GLTFState tramite il parametro state e scrive un file glTF nel file system.

Nota: L'estensione del file glTF determina se si tratta di un file binario .glb o di un file di testo .gltf.