Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

GLTFState

继承: Resource < RefCounted < Object

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

描述

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

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

教程

属性

String

base_path

""

PackedByteArray[]

buffers

[]

String

copyright

""

bool

create_animations

true

String

filename

""

PackedByteArray

glb_data

PackedByteArray()

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 ( String extension_name, bool required )

GLTFAccessor[]

get_accessors ( )

Variant

get_additional_data ( StringName extension_name )

AnimationPlayer

get_animation_player ( int idx )

int

get_animation_players_count ( int idx )

GLTFAnimation[]

get_animations ( )

GLTFBufferView[]

get_buffer_views ( )

GLTFCamera[]

get_cameras ( )

int

get_handle_binary_image ( )

Texture2D[]

get_images ( )

GLTFLight[]

get_lights ( )

Material[]

get_materials ( )

GLTFMesh[]

get_meshes ( )

int

get_node_index ( Node scene_node )

GLTFNode[]

get_nodes ( )

Node

get_scene_node ( int idx )

GLTFSkeleton[]

get_skeletons ( )

GLTFSkin[]

get_skins ( )

GLTFTextureSampler[]

get_texture_samplers ( )

GLTFTexture[]

get_textures ( )

String[]

get_unique_animation_names ( )

String[]

get_unique_names ( )

void

set_accessors ( GLTFAccessor[] accessors )

void

set_additional_data ( StringName extension_name, Variant additional_data )

void

set_animations ( GLTFAnimation[] animations )

void

set_buffer_views ( GLTFBufferView[] buffer_views )

void

set_cameras ( GLTFCamera[] cameras )

void

set_handle_binary_image ( int method )

void

set_images ( Texture2D[] images )

void

set_lights ( GLTFLight[] lights )

void

set_materials ( Material[] materials )

void

set_meshes ( GLTFMesh[] meshes )

void

set_nodes ( GLTFNode[] nodes )

void

set_skeletons ( GLTFSkeleton[] skeletons )

void

set_skins ( GLTFSkin[] skins )

void

set_texture_samplers ( GLTFTextureSampler[] texture_samplers )

void

set_textures ( GLTFTexture[] textures )

void

set_unique_animation_names ( String[] unique_animation_names )

void

set_unique_names ( String[] unique_names )


常量

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

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


属性说明

String base_path = ""

  • void set_base_path ( String value )

  • String get_base_path ( )

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


PackedByteArray[] buffers = []

目前没有这个属性的描述。请帮我们贡献一个


  • void set_copyright ( String value )

  • String get_copyright ( )

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


bool create_animations = true

  • void set_create_animations ( bool value )

  • bool get_create_animations ( )

目前没有这个属性的描述。请帮我们贡献一个


String filename = ""

  • void set_filename ( String value )

  • String get_filename ( )

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


PackedByteArray glb_data = PackedByteArray()

目前没有这个属性的描述。请帮我们贡献一个


Dictionary json = {}

目前没有这个属性的描述。请帮我们贡献一个


int major_version = 0

  • void set_major_version ( int value )

  • int get_major_version ( )

目前没有这个属性的描述。请帮我们贡献一个


int minor_version = 0

  • void set_minor_version ( int value )

  • int get_minor_version ( )

目前没有这个属性的描述。请帮我们贡献一个


PackedInt32Array root_nodes = PackedInt32Array()

GLTF 文件的根节点。通常,一个 GLTF 文件只有一个场景,因此只有一个根节点。然而,一个 GLTF 文件可能有多个场景,因此可以有多个根节点,它们将作为彼此的兄弟节点生成,并作为生成的 Godot 场景的根节点的子节点生成。


String scene_name = ""

  • void set_scene_name ( String value )

  • String get_scene_name ( )

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


bool use_named_skin_binds = false

  • void set_use_named_skin_binds ( bool value )

  • bool get_use_named_skin_binds ( )

目前没有这个属性的描述。请帮我们贡献一个


方法说明

void add_used_extension ( String extension_name, bool required )

在序列化期间,将一个扩展名追加到该 GLTF 文件使用的扩展名列表在。如果 required 为 true,则该扩展名也将被添加到所需扩展名列表中。不要在 GLTFDocumentExtension._export_post 中运行它,因为那个阶段已来不及添加扩展。最终的列表将按字母顺序排序。


GLTFAccessor[] get_accessors ( )

目前没有这个方法的描述。请帮我们贡献一个


Variant get_additional_data ( StringName extension_name )

在该 GLTFState 实例中,获取额外的任意数据。这可用于保留在 GLTFDocumentExtension 类中的每个文件的状态数据,这很重要,因为它们是无状态的。

该参数应该是 GLTFDocumentExtension 的名称(不必与 GLTF 文件中的扩展名相匹配),而该返回值可以是你设置的任何东西。如果没有设置任何东西,则该返回值为 null。


AnimationPlayer get_animation_player ( int idx )

返回具有给定索引的 AnimationPlayer 节点。这些节点仅在将 Godot AnimationPlayer 节点转换为 GLTF 动画时的导出过程中使用。


int get_animation_players_count ( int idx )

返回该 GLTFStateAnimationPlayer 节点的数量。这些节点仅在将 Godot AnimationPlayer 节点转换为 GLTF 动画时的导出过程中使用。


GLTFAnimation[] get_animations ( )

返回 GLTF 文件中所有 GLTFAnimation 的数组。导入时,这些将在一个 AnimationPlayer 节点生成为动画。导出时,这些将从 Godot AnimationPlayer 节点生成。


GLTFBufferView[] get_buffer_views ( )

目前没有这个方法的描述。请帮我们贡献一个


GLTFCamera[] get_cameras ( )

返回 GLTF 文件中所有 GLTFCamera 的数组。这些是 GLTFNode.camera 索引引用的相机。


int get_handle_binary_image ( )

目前没有这个方法的描述。请帮我们贡献一个


Texture2D[] get_images ( )

Texture2D 数组的形式获取 GLTF 文件中的图像。这些是 GLTFTexture.src_image 索引引用的图像。


GLTFLight[] get_lights ( )

返回 GLTF 文件中所有 GLTFLight 的数组。这些是 GLTFNode.light 索引引用的灯。


Material[] get_materials ( )

目前没有这个方法的描述。请帮我们贡献一个


GLTFMesh[] get_meshes ( )

返回 GLTF 文件中所有 GLTFMesh 的数组。这些是 GLTFNode.mesh 索引引用的网格。


int get_node_index ( Node scene_node )

返回与该 Godot 场景节点对应的 GLTFNode 的索引。这个方法与 get_scene_node 互逆。可以在导出过程中使用。

注意:并不是所有 Godot 场景节点都有对应的 GLTFNode,也并不是所有 GLTFNode 都会生成场景节点。如果该场景节点没有 GLTFNode 索引,则会返回 -1


GLTFNode[] get_nodes ( )

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


Node get_scene_node ( int idx )

返回指定索引的 GLTFNode 对应生成的 Godot 场景节点。这个方法与 get_node_index 互逆。可以在导入过程中使用。

注意:并不是所有 GLTFNode 都会生成场景节点,也并不是所有 Godot 场景节点都有对应的 GLTFNode。如果该 GLTFNode 索引没有场景节点,则会返回 null


GLTFSkeleton[] get_skeletons ( )

返回 GLTF 文件中所有 GLTFSkeleton 的数组。这些是 GLTFNode.skeleton 索引引用的骨架。


GLTFSkin[] get_skins ( )

返回 GLTF 文件中所有 GLTFSkin 的数组。这些是 GLTFNode.skin 索引引用的皮肤。


GLTFTextureSampler[] get_texture_samplers ( )

检索 GLTF 中包含的纹理所使用的纹理采样器的数组。


GLTFTexture[] get_textures ( )

目前没有这个方法的描述。请帮我们贡献一个


String[] get_unique_animation_names ( )

返回一组唯一的动画名称。这仅在导入过程中使用。


String[] get_unique_names ( )

返回唯一节点名称的数组。这用于导入过程和导出过程。


void set_accessors ( GLTFAccessor[] accessors )

目前没有这个方法的描述。请帮我们贡献一个


void set_additional_data ( StringName extension_name, Variant additional_data )

在这个 GLTFState 实例中设置额外的任意数据。这可以用来保留在 GLTFDocumentExtension 类中的每个文件的状态数据,这很重要,因为它们是无状态的。

第一个参数应该是 GLTFDocumentExtension 的名称(不必与 GLTF 文件中的扩展名相匹配),第二个参数可以是任何你想要的东西。


void set_animations ( GLTFAnimation[] animations )

设置该状态中的 GLTFAnimation。导入时,这些将在 AnimationPlayer 节点中生成为动画。导出时,这些将由 Godot AnimationPlayer 节点生成。


void set_buffer_views ( GLTFBufferView[] buffer_views )

目前没有这个方法的描述。请帮我们贡献一个


void set_cameras ( GLTFCamera[] cameras )

设置该状态中的 GLTFCamera。这些是 GLTFNode.camera 索引引用的相机。


void set_handle_binary_image ( int method )

目前没有这个方法的描述。请帮我们贡献一个


void set_images ( Texture2D[] images )

设置状态中以 Texture2D 数组形式存储的图像。可以在导出时使用。这些是 GLTFTexture.src_image 索引所引用的图像。


void set_lights ( GLTFLight[] lights )

设置该状态中的 GLTFLight。这些是 GLTFNode.light 索引引用的灯。


void set_materials ( Material[] materials )

目前没有这个方法的描述。请帮我们贡献一个


void set_meshes ( GLTFMesh[] meshes )

设置该状态中的 GLTFMesh。这些是 GLTFNode.mesh 索引引用的网格。


void set_nodes ( GLTFNode[] nodes )

设置该状态中的 GLTFNode。这些是 GLTFNode.childrenroot_nodes 引用的节点。这里设置的一些节点在 Godot 场景中可能不会生成,也可能会生成多个 Godot 场景节点。


void set_skeletons ( GLTFSkeleton[] skeletons )

设置该状态中的 GLTFSkeleton。这些是 GLTFNode.skeleton 索引引用的骨架。


void set_skins ( GLTFSkin[] skins )

设置该状态中的 GLTFSkin。这些是 GLTFNode.skin 索引引用的皮肤。


void set_texture_samplers ( GLTFTextureSampler[] texture_samplers )

设置由 GLTF 中包含的纹理所使用的纹理采样器的数组。


void set_textures ( GLTFTexture[] textures )

目前没有这个方法的描述。请帮我们贡献一个


void set_unique_animation_names ( String[] unique_animation_names )

设置该状态中的唯一动画名称。这仅在导入过程中使用。


void set_unique_names ( String[] unique_names )

设置该状态中的唯一节点名称。这用于导入过程和导出过程。