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.

GLTFState

继承: Resource < RefCounted < Object

派生: FBXState

代表 GLTF 文件中的所有数据。

描述

包含 GLTF 文件中的所有节点和资源。用于 GLTFDocument 的数据存储,能够让 GLTFDocument 和所有 GLTFDocumentExtension 类保持无状态。

GLTFState 的填写可以通过 GLTFDocument 读取文件进行,也可以通过转换 Godot 场景进行。填写完成后,可以将数据用于 Godot 场景的创建或者 GLTF 文件的保存。与 Godot 场景之间进行转换的代码可以通过 GLTFDocumentExtension 类在任意时刻拦截。这样就能够在 GLTF 文件中存储自定义数据,也可以将自定义数据保存到 Godot 节点或者从 Godot 节点读取。

教程

属性

float

bake_fps

30.0

String

base_path

""

Array[PackedByteArray]

buffers

[]

String

copyright

""

bool

create_animations

true

String

filename

""

PackedByteArray

glb_data

PackedByteArray()

bool

import_as_skeleton_bones

false

Dictionary

json

{}

int

major_version

0

int

minor_version

0

PackedInt32Array

root_nodes

PackedInt32Array()

String

scene_name

""

bool

use_named_skin_binds

false

方法

void

add_used_extension(extension_name: String, required: bool)

int

append_data_to_buffers(data: PackedByteArray, deduplication: bool)

Array[GLTFAccessor]

get_accessors()

Variant

get_additional_data(extension_name: StringName)

AnimationPlayer

get_animation_player(idx: int)

int

get_animation_players_count(idx: int)

Array[GLTFAnimation]

get_animations()

Array[GLTFBufferView]

get_buffer_views()

Array[GLTFCamera]

get_cameras()

int

get_handle_binary_image()

Array[Texture2D]

get_images()

Array[GLTFLight]

get_lights()

Array[Material]

get_materials()

Array[GLTFMesh]

get_meshes()

int

get_node_index(scene_node: Node)

Array[GLTFNode]

get_nodes()

Node

get_scene_node(idx: int)

Array[GLTFSkeleton]

get_skeletons()

Array[GLTFSkin]

get_skins()

Array[GLTFTextureSampler]

get_texture_samplers()

Array[GLTFTexture]

get_textures()

Array[String]

get_unique_animation_names()

Array[String]

get_unique_names()

void

set_accessors(accessors: Array[GLTFAccessor])

void

set_additional_data(extension_name: StringName, additional_data: Variant)

void

set_animations(animations: Array[GLTFAnimation])

void

set_buffer_views(buffer_views: Array[GLTFBufferView])

void

set_cameras(cameras: Array[GLTFCamera])

void

set_handle_binary_image(method: int)

void

set_images(images: Array[Texture2D])

void

set_lights(lights: Array[GLTFLight])

void

set_materials(materials: Array[Material])

void

set_meshes(meshes: Array[GLTFMesh])

void

set_nodes(nodes: Array[GLTFNode])

void

set_skeletons(skeletons: Array[GLTFSkeleton])

void

set_skins(skins: Array[GLTFSkin])

void

set_texture_samplers(texture_samplers: Array[GLTFTextureSampler])

void

set_textures(textures: Array[GLTFTexture])

void

set_unique_animation_names(unique_animation_names: Array[String])

void

set_unique_names(unique_names: Array[String])


常量

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 🔗

将无损压缩的纹理嵌入到生成的场景中,匹配旧行为。


属性说明

float bake_fps = 30.0 🔗

  • void set_bake_fps(value: float)

  • float get_bake_fps()

用于导入或导出的动画的烘焙 fps。


String base_path = "" 🔗

与该 GLTF 数据关联的文件夹路径。这用于查找该 GLTF 文件引用的其他文件,例如图像或二进制缓冲区。这将在导入期间从文件追加时设置,并将在导出期间写入文件时设置。


Array[PackedByteArray] buffers = [] 🔗

该属性目前没有描述,请帮我们贡献一个吧!


该 GLTF 文件的资产标头中的版权字符串。如果存在,则在导入期间设置;如果非空则在导出期间设置。详见 GLTF 资产标头文档。


bool create_animations = true 🔗

  • void set_create_animations(value: bool)

  • bool get_create_animations()

该属性目前没有描述,请帮我们贡献一个吧!


String filename = "" 🔗

与该 GLTF 数据关联的文件名。如果它以 .gltf 结尾,则这是基于文本的 GLTF,否则这是二进制 GLB。这将在导入期间从文件追加时设置,并将在导出期间写入文件时设置。如果写入到缓冲区,这将是一个空字符串。


PackedByteArray glb_data = PackedByteArray() 🔗

附加到 .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 🔗

  • void set_import_as_skeleton_bones(value: bool)

  • bool get_import_as_skeleton_bones()

True 则强制文档中的所有 GLTFNode 成为单个 Skeleton3D godot 节点的骨骼。


Dictionary json = {} 🔗

与该 GLTFState 对应的原始 JSON 文档。


int major_version = 0 🔗

  • void set_major_version(value: int)

  • int get_major_version()

该属性目前没有描述,请帮我们贡献一个吧!


int minor_version = 0 🔗

  • void set_minor_version(value: int)

  • int get_minor_version()

该属性目前没有描述,请帮我们贡献一个吧!


PackedInt32Array root_nodes = PackedInt32Array() 🔗

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.


String scene_name = "" 🔗

  • void set_scene_name(value: String)

  • String get_scene_name()

场景的名称。导入时,如果没有指定,这将是文件名。导出时,如果指定,场景名称将被保存到 GLTF 文件中。


bool use_named_skin_binds = false 🔗

  • void set_use_named_skin_binds(value: bool)

  • bool get_use_named_skin_binds()

该属性目前没有描述,请帮我们贡献一个吧!


方法说明

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) 🔗

返回该 GLTFStateAnimationPlayer 节点的数量。这些节点仅在将 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


Array[GLTFNode] get_nodes() 🔗

返回 GLTF 文件中所有 GLTFNode 的数组。这些是 GLTFNode.childrenroot_nodes 引用的节点。这包括可能不会在 Godot 场景中生成的节点,或者可能生成多个 Godot 场景节点的节点。


Node get_scene_node(idx: int) 🔗

返回指定索引的 GLTFNode 对应生成的 Godot 场景节点。这个方法与 get_node_index