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...
GLTFState¶
继承: Resource < RefCounted < Object
派生: FBXState
代表 GLTF 文件中的所有数据。
描述¶
包含 GLTF 文件中的所有节点和资源。用于 GLTFDocument 的数据存储,能够让 GLTFDocument 和所有 GLTFDocumentExtension 类保持无状态。
GLTFState 的填写可以通过 GLTFDocument 读取文件进行,也可以通过转换 Godot 场景进行。填写完成后,可以将数据用于 Godot 场景的创建或者 GLTF 文件的保存。与 Godot 场景之间进行转换的代码可以通过 GLTFDocumentExtension 类在任意时刻拦截。这样就能够在 GLTF 文件中存储自定义数据,也可以将自定义数据保存到 Godot 节点或者从 Godot 节点读取。
教程¶
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
常量¶
HANDLE_BINARY_DISCARD_TEXTURES = 0
🔗
丢弃所有内嵌的纹理,并使用无纹理的材质。
HANDLE_BINARY_EXTRACT_TEXTURES = 1
🔗
提取内嵌的纹理以重新导入和压缩。仅限编辑器。在运行时充当未压缩的。
HANDLE_BINARY_EMBED_AS_BASISU = 2
🔗
将使用 Basis Universal 压缩的纹理 VRAM 嵌入到生成的场景中。
HANDLE_BINARY_EMBED_AS_UNCOMPRESSED = 3
🔗
将无损压缩的纹理嵌入到生成的场景中,匹配旧行为。
属性说明¶
用于导入或导出的动画的烘焙 fps。
与该 GLTF 数据关联的文件夹路径。这用于查找该 GLTF 文件引用的其他文件,例如图像或二进制缓冲区。这将在导入期间从文件追加时设置,并将在导出期间写入文件时设置。
Array[PackedByteArray] buffers = []
🔗
void set_buffers(value: Array[PackedByteArray])
Array[PackedByteArray] get_buffers()
该属性目前没有描述,请帮我们贡献一个吧!
该 GLTF 文件的资产标头中的版权字符串。如果存在,则在导入期间设置;如果非空则在导出期间设置。详见 GLTF 资产标头文档。
bool create_animations = true
🔗
该属性目前没有描述,请帮我们贡献一个吧!
与该 GLTF 数据关联的文件名。如果它以 .gltf
结尾,则这是基于文本的 GLTF,否则这是二进制 GLB。这将在导入期间从文件追加时设置,并将在导出期间写入文件时设置。如果写入到缓冲区,这将是一个空字符串。
PackedByteArray glb_data = PackedByteArray()
🔗
void set_glb_data(value: PackedByteArray)
PackedByteArray get_glb_data()
附加到 .glb 文件的二进制缓冲区。
Note: The returned array is copied and any changes to it will not update the original property value. See PackedByteArray for more details.
bool import_as_skeleton_bones = false
🔗
True 则强制文档中的所有 GLTFNode 成为单个 Skeleton3D godot 节点的骨骼。
Dictionary json = {}
🔗
void set_json(value: Dictionary)
Dictionary get_json()
与该 GLTFState 对应的原始 JSON 文档。
该属性目前没有描述,请帮我们贡献一个吧!
该属性目前没有描述,请帮我们贡献一个吧!
PackedInt32Array root_nodes = PackedInt32Array()
🔗
void set_root_nodes(value: PackedInt32Array)
PackedInt32Array get_root_nodes()
GLTF 文件的根节点。通常,一个 GLTF 文件只有一个场景,因此只有一个根节点。然而,一个 GLTF 文件可能有多个场景,因此可以有多个根节点,它们将作为彼此的兄弟节点生成,并作为生成的 Godot 场景的根节点的子节点生成。
Note: The returned array is copied and any changes to it will not update the original property value. See PackedInt32Array for more details.
场景的名称。导入时,如果没有指定,这将是文件名。导出时,如果指定,场景名称将被保存到 GLTF 文件中。
bool use_named_skin_binds = false
🔗
该属性目前没有描述,请帮我们贡献一个吧!
方法说明¶
void add_used_extension(extension_name: String, required: bool) 🔗
在序列化期间,将一个扩展名追加到该 GLTF 文件使用的扩展名列表在。如果 required
为 true,则该扩展名也将被添加到所需扩展名列表中。不要在 GLTFDocumentExtension._export_post 中运行它,因为那个阶段已来不及添加扩展。最终的列表将按字母顺序排序。
int append_data_to_buffers(data: PackedByteArray, deduplication: bool) 🔗
将给定的字节数组数据附加到缓冲区并为其创建一个 GLTFBufferView。返回目标 GLTFBufferView 的索引。如果 deduplication
为 true,则将首先在缓冲区中搜索重复数据,否则将始终追加新字节。
Array[GLTFAccessor] get_accessors() 🔗
该方法目前没有描述,请帮我们贡献一个吧!
Variant get_additional_data(extension_name: StringName) 🔗
在该 GLTFState 实例中,获取额外的任意数据。这可用于保留在 GLTFDocumentExtension 类中的每个文件的状态数据,这很重要,因为它们是无状态的。
该参数应该是 GLTFDocumentExtension 的名称(不必与 GLTF 文件中的扩展名相匹配),而该返回值可以是你设置的任何东西。如果没有设置任何东西,则该返回值为 null。
AnimationPlayer get_animation_player(idx: int) 🔗
返回具有给定索引的 AnimationPlayer 节点。这些节点仅在将 Godot AnimationPlayer 节点转换为 GLTF 动画时的导出过程中使用。
int get_animation_players_count(idx: int) 🔗
返回该 GLTFState 中 AnimationPlayer 节点的数量。这些节点仅在将 Godot AnimationPlayer 节点转换为 GLTF 动画时的导出过程中使用。
Array[GLTFAnimation] get_animations() 🔗
返回 GLTF 文件中所有 GLTFAnimation 的数组。导入时,这些将在一个 AnimationPlayer 节点生成为动画。导出时,这些将从 Godot AnimationPlayer 节点生成。
Array[GLTFBufferView] get_buffer_views() 🔗
该方法目前没有描述,请帮我们贡献一个吧!
Array[GLTFCamera] get_cameras() 🔗
返回 GLTF 文件中所有 GLTFCamera 的数组。这些是 GLTFNode.camera 索引引用的相机。
int get_handle_binary_image() 🔗
该方法目前没有描述,请帮我们贡献一个吧!
Array[Texture2D] get_images() 🔗
以 Texture2D 数组的形式获取 GLTF 文件中的图像。这些是 GLTFTexture.src_image 索引引用的图像。
Array[GLTFLight] get_lights() 🔗
返回 GLTF 文件中所有 GLTFLight 的数组。这些是 GLTFNode.light 索引引用的灯。
Array[Material] get_materials() 🔗
该方法目前没有描述,请帮我们贡献一个吧!
Array[GLTFMesh] get_meshes() 🔗
返回 GLTF 文件中所有 GLTFMesh 的数组。这些是 GLTFNode.mesh 索引引用的网格。
int get_node_index(scene_node: Node) 🔗
返回与该 Godot 场景节点对应的 GLTFNode 的索引。这个方法与 get_scene_node 互逆。可以在导出过程中使用。
注意:并不是所有 Godot 场景节点都有对应的 GLTFNode,也并不是所有 GLTFNode 都会生成场景节点。如果该场景节点没有 GLTFNode 索引,则会返回 -1
。
返回 GLTF 文件中所有 GLTFNode 的数组。这些是 GLTFNode.children 和 root_nodes 引用的节点。这包括可能不会在 Godot 场景中生成的节点,或者可能生成多个 Godot 场景节点的节点。
Node get_scene_node(idx: int) 🔗
返回指定索引的 GLTFNode 对应生成的 Godot 场景节点。这个方法与 get_node_index