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.

GLTFObjectModelProperty

继承: RefCounted < Object

描述如何访问 glTF 对象模型中定义的属性。

描述

GLTFObjectModelProperty 定义了 glTF 对象模型中的属性和 Godot 场景树中 NodePath 之间的映射,可以用来使用 KHR_animation_pointer 扩展对属性进行动画,也可以通过与引擎无关的脚本(例如 KHR_interactivity 扩展定义的行为图)来访问这些属性。

glTF 属性由 json_pointers 中存储的 JSON 指针标识,对应的 Godot 属性则由 node_paths 定义。大多数情况下,json_pointersnode_paths 都只会有一个元素,不过部分情况下一个 glTF JSON 指针也会对应多个 Godot 属性,一个 Godot 属性也可能对应多个 glTF JSON 指针,还可能会存在多对多的关系。

可以使用 Expression 对象定义数据之间的转换,例如可能 glTF 中定义夹角时使用弧度而 Godot 则使用角度。object_model_type 属性定义的是 glTF 文件中所存储数据的类型,该类型由对象模型定义,可能的取值见 GLTFObjectModelType

教程

属性

Expression

gltf_to_godot_expression

Expression

godot_to_gltf_expression

Array[PackedStringArray]

json_pointers

[]

Array[NodePath]

node_paths

[]

GLTFObjectModelType

object_model_type

0

Variant.Type

variant_type

0

方法

void

append_node_path(node_path: NodePath)

void

append_path_to_property(node_path: NodePath, prop_name: StringName)

GLTFAccessorType

get_accessor_type() const

bool

has_json_pointers() const

bool

has_node_paths() const

void

set_types(variant_type: Variant.Type, obj_model_type: GLTFObjectModelType)


枚举

enum GLTFObjectModelType: 🔗

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_UNKNOWN = 0

未知或未设置的对象模型类型。如果将对象模型类型设置为该值,则仍需确定真实类型。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_BOOL = 1

对象模型类型“bool”。在 glTF JSON 中表示为布尔值,在 GLTFAccessor 中编码为“SCALAR”。在访问器中编码时 0 表示 false,任何其他值都表示 true

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT = 2

对象模型类型“float”。在 glTF JSON 中表示为数字,在 GLTFAccessor 中编码为“SCALAR”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT_ARRAY = 3

对象模型类型“float[]”。在 glTF JSON 中表示为数字数组,在 GLTFAccessor 中编码为“SCALAR”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT2 = 4

对象模型类型“float2”。在 glTF JSON 中表示为两个数字的数组,在 GLTFAccessor 中编码为“VEC2”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT3 = 5

对象模型类型“float3”。在 glTF JSON 中表示为三个数字的数组,在 GLTFAccessor 中编码为“VEC3”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT4 = 6

对象模型类型“float4”。在 glTF JSON 中表示为四个数字的数组,在 GLTFAccessor 中编码为“VEC4”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT2X2 = 7

对象模型类型“float2x2”。在 glTF JSON 中表示为四个数字的数组,在 GLTFAccessor 中编码为“MAT2”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT3X3 = 8

对象模型类型“float3x3”。在 glTF JSON 中表示为九个数字的数组,在 GLTFAccessor 中编码为“MAT3”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_FLOAT4X4 = 9

对象模型类型“float4x4”。在 glTF JSON 中表示为十六个数字的数组,在 GLTFAccessor 中编码为“MAT4”。

GLTFObjectModelType GLTF_OBJECT_MODEL_TYPE_INT = 10

对象模型类型“int”。在 glTF JSON 中表示为数字,在 GLTFAccessor 中编码为“SCALAR”。取值范围仅限于有符号整数。KHR_interactivity 仅支持 32 位整数。


属性说明

Expression gltf_to_godot_expression 🔗

如果设置了该 Expression,则会用来将 glTF 对象模型中的属性值转换为 Godot 属性所需的值。适用于 glTF 对象模型使用不同的单位系统,以及数据需要以某种方式进行转换的场合。如果为 null,则会原样复制属性值。


Expression godot_to_gltf_expression 🔗

如果设置了该 Expression,则会用来将 Godot 属性中的属性值转换为 glTF 对象模型所需的值。适用于 glTF 对象模型使用不同的单位系统,以及数据需要以某种方式进行转换的场合。如果为 null,则会原样复制属性值。


Array[PackedStringArray] json_pointers = [] 🔗

用于在 glTF 对象模型中标识属性的 glTF 对象模型 JSON 指针。大多数情况下该数组中只有一个元素,但某些特定情况可能需要多个指针。这些元素本身也是数组,表示将 JSON 指针拆分成组件。


Array[NodePath] node_paths = [] 🔗

指向 Godot 场景树中一个或多个属性的 NodePath 数组。导入时由 GLTFDocumentGLTFDocumentExtension 类设置。简单情况可以使用 append_path_to_property() 将属性添加到该数组中。

大多数情况下 node_paths 只会有一个元素,但在某些情况下,单个 glTF JSON 指针可能映射到多个 Godot 属性。例如多个 glTF 节点上使用的同一个 GLTFCameraGLTFLight 会表示为多个 Godot 节点。


GLTFObjectModelType object_model_type = 0 🔗

根据对象模型定义,存储在 glTF 文件中的数据类型。这是可用访问器类型的超集,决定了访问器类型。可能的取值见 GLTFObjectModelType


Variant.Type variant_type = 0 🔗

存储在 Godot 属性中的数据类型。这是 node_paths 指向的属性类型。


方法说明

void append_node_path(node_path: NodePath) 🔗

将一个 NodePath 附加到 node_pathsGLTFDocumentExtension 类可以用它来定义如何将 glTF 对象模型属性映射到一个或或多个 Godot 属性。简单情况建议使用 append_path_to_property()。请记得再调用一次 set_types()(顺序无关紧要)。


void append_path_to_property(node_path: NodePath, prop_name: StringName) 🔗

append_node_path() 的高阶封装,能够处理最常见的情况。它会使用 node_path 作为基础构造一个新的 NodePath,并将 prop_name 附加到子路径上。请确保再调用一次 set_types()(顺序无关紧要)。


GLTFAccessorType get_accessor_type() const 🔗

与该属性的 object_model_type 关联的 GLTF 访问器类型。可能的值见 GLTFAccessor.accessor_type,对象模型类型与访问器类型之间的映射见 GLTFObjectModelType


bool has_json_pointers() const 🔗

如果 json_pointers 非空则返回 true。用于在导出过程中确定 GLTFObjectModelProperty 是否能够处理将 Godot 属性转换为 glTF 对象模型属性。


bool has_node_paths() const 🔗

如果 node_paths 非空则返回 true。用于在导入过程中确定 GLTFObjectModelProperty 是否能够处理将 glTF 对象模型属性转换为 Godot 属性。


void set_types(variant_type: Variant.Type, obj_model_type: GLTFObjectModelType) 🔗

设置 variant_typeobject_model_type 属性。这是用来同时设置这两个属性的便捷方法,因为两者几乎都是一起确定的。该方法只应该调用一次。再次使用相同的值调用没有效果。