GLTFDocument
继承: Resource < RefCounted < Object
派生: FBXDocument
用于在 Godot 中导入和导出 glTF 文件的类。
描述
GLTFDocument 支持从 glTF 文件、缓冲区或 Godot 场景中读取数据。然后可以将该数据写入文件系统、缓冲区或用于创建 Godot 场景。
glTF 场景中的所有数据都存储在 GLTFState 类中。GLTFDocument 处理状态对象,但本身不包含任何场景数据。GLTFDocument 有成员变量来存储如图像格式等导出配置设置,但在其他方面是无状态的。可以使用相同的 GLTFDocument 对象和不同的 GLTFState 对象以相同的设置处理多个场景。
通过扩展 GLTFDocumentExtension 类并通过 register_gltf_document_extension() 将其注册到 GLTFDocument,则可以使用任意功能来扩展 GLTFDocument。这允许自定义数据被导入和导出。
教程
属性
|
||
|
||
|
方法
append_from_buffer(bytes: PackedByteArray, base_path: String, state: GLTFState, flags: int = 0) |
|
append_from_file(path: String, state: GLTFState, flags: int = 0, base_path: String = "") |
|
append_from_scene(node: Node, state: GLTFState, flags: int = 0) |
|
export_object_model_property(state: GLTFState, node_path: NodePath, godot_node: Node, gltf_node_index: int) static |
|
generate_buffer(state: GLTFState) |
|
generate_scene(state: GLTFState, bake_fps: float = 30, trimming: bool = false, remove_immutable_tracks: bool = true) |
|
get_supported_gltf_extensions() static |
|
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 |
write_to_filesystem(state: GLTFState, path: String) |
枚举
enum RootNodeMode: 🔗
RootNodeMode ROOT_NODE_MODE_SINGLE_ROOT = 0
将 Godot 场景的根节点视为 glTF 文件的根节点,并通过 GODOT_single_root glTF 扩展将其标记为单根节点。如果实现不支持 GODOT_single_root,这将与 ROOT_NODE_MODE_KEEP_ROOT 进行相同的解析。
RootNodeMode ROOT_NODE_MODE_KEEP_ROOT = 1
将 Godot 场景的根节点视为 glTF 文件的根节点,但不要将其标记为任何特殊的东西。导入 Godot 时会生成一个额外的根节点。这仅使用普通 glTF 功能。这相当于 Godot 4.1 及更早版本中的行为。
RootNodeMode ROOT_NODE_MODE_MULTI_ROOT = 2
将 Godot 场景的根节点视为 glTF 场景的名称,并将其所有子节点添加为 glTF 文件的根节点。这仅使用普通 glTF 功能。这避免了额外的根节点,但只会保留 Godot 场景根节点的名称,因为它不会被保存为节点。
属性说明
导出图像格式的用户友好名称,用于导出 glTF 文件,包括写入文件和写入字节数组。
默认情况下,Godot 允许以下选项:“无”“PNG”“JPEG”“无损 WebP”“有损 WebP”。可以使用 GLTFDocumentExtension 类添加对更多图像格式的支持。
如果 image_format 是有损图像格式,则这决定了该图像的有损质量。在 0.0 到 1.0 范围内,其中 0.0 是最低质量,1.0 是最高质量。1.0 的有损质量不同于无损质量。
RootNodeMode root_node_mode = 0 🔗
void set_root_node_mode(value: RootNodeMode)
RootNodeMode get_root_node_mode()
导出时如何处理根节点。详见 RootNodeMode。默认和推荐值为 ROOT_NODE_MODE_SINGLE_ROOT。
注意:无论 glTF 文件如何导出,导入时,根节点类型和名称都可以在场景导入设置选项卡中被覆盖。
方法说明
Error append_from_buffer(bytes: PackedByteArray, base_path: String, state: GLTFState, flags: int = 0) 🔗
接受定义 glTF 的 PackedByteArray,将数据导入通过 state 参数给定的 GLTFState 对象。
注意:base_path 代表 append_from_buffer() 寻找依赖项的位置,可以为空。
Error append_from_file(path: String, state: GLTFState, flags: int = 0, base_path: String = "") 🔗
接受 glTF 文件的路径,将文件路径处的数据导入通过 state 参数给定的 GLTFState 对象。
注意:base_path 代表 append_from_file() 寻找依赖项的位置,可以为空。
Error append_from_scene(node: Node, state: GLTFState, flags: int = 0) 🔗
接收一个 Godot 引擎的场景节点,并通过 state 参数将其及其后代导出到给定的 GLTFState 对象。
GLTFObjectModelProperty export_object_model_property(state: GLTFState, node_path: NodePath, godot_node: Node, gltf_node_index: int) static 🔗
确定给定 Godot node_path 与生成的 glTF 文件中相应的 glTF 对象模型 JSON 指针之间的映射。该映射的详细信息以 GLTFObjectModelProperty 对象的形式返回。可以通过 GLTFDocumentExtension._import_object_model_property() 回调方法提供额外的映射。
PackedByteArray generate_buffer(state: GLTFState) 🔗
通过 state 参数接收一个 GLTFState 对象,并返回一个 glTF PackedByteArray。
Node generate_scene(state: GLTFState, bake_fps: float = 30, trimming: bool = false, remove_immutable_tracks: bool = true) 🔗
通过 state 参数接收一个 GLTFState 对象,并返回一个 Godot 引擎的场景节点。
bake_fps 参数会覆盖 state 中的 bake_fps。
PackedStringArray get_supported_gltf_extensions() static 🔗
返回所有支持的 glTF 扩展列表,包括引擎直接支持的扩展和用户插件注册的 GLTFDocumentExtension 类支持的扩展。
注意:如果在注册 GLTFDocumentExtension 之前运行该方法,则列表中不会包含它所对应的扩展。请确保在注册所有扩展后再运行该方法。如果在引擎启动时运行该方法,请考虑在调用g该方法之前等待一帧,确保所有扩展都已注册。
GLTFObjectModelProperty import_object_model_property(state: GLTFState, json_pointer: String) static 🔗
确定给定 glTF 对象模型 json_pointer 与生成的 Godot 场景中相应的 Godot 节点路径之间的映射。该映射的详细信息以 GLTFObjectModelProperty 对象的形式返回。可以通过 GLTFDocumentExtension._export_object_model_property() 回调方法提供额外的映射。
void register_gltf_document_extension(extension: GLTFDocumentExtension, first_priority: bool = false) static 🔗
使用 GLTFDocument 注册给定的 GLTFDocumentExtension 实例。如果 first_priority 为 true,则该扩展将被首先运行。否则,它将被最后运行。
注意:与 GLTFDocument 本身一样,所有 GLTFDocumentExtension 类都必须是无状态的才能正常运行。如果需要存储数据,使用 GLTFState 或 GLTFNode 中的 set_additional_data 和 get_additional_data 方法。
void unregister_gltf_document_extension(extension: GLTFDocumentExtension) static 🔗
将给定的 GLTFDocumentExtension 实例取消注册。
Error write_to_filesystem(state: GLTFState, path: String) 🔗
通过 state 参数接收一个 GLTFState 对象,并将一个 glTF 文件写入文件系统。
注意:glTF 文件的扩展名决定了它是一个 .glb 二进制文件还是一个 .gltf 文本文件。