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...
GLTFObjectModelProperty
继承: RefCounted < Object
描述如何访问 glTF 对象模型中定义的属性。
描述
GLTFObjectModelProperty 定义了 glTF 对象模型中的属性和 Godot 场景树中 NodePath 之间的映射,可以用来使用 KHR_animation_pointer
扩展对属性进行动画,也可以通过与引擎无关的脚本(例如 KHR_interactivity
扩展定义的行为图)来访问这些属性。
glTF 属性由 json_pointers 中存储的 JSON 指针标识,对应的 Godot 属性则由 node_paths 定义。大多数情况下,json_pointers 和 node_paths 都只会有一个元素,不过部分情况下一个 glTF JSON 指针也会对应多个 Godot 属性,一个 Godot 属性也可能对应多个 glTF JSON 指针,还可能会存在多对多的关系。
可以使用 Expression 对象定义数据之间的转换,例如可能 glTF 中定义夹角时使用弧度而 Godot 则使用角度。object_model_type 属性定义的是 glTF 文件中所存储数据的类型,该类型由对象模型定义,可能的取值见 GLTFObjectModelType。
教程
属性
|
||
|
||
|
||
|
方法
void |
append_node_path(node_path: NodePath) |
void |
append_path_to_property(node_path: NodePath, prop_name: StringName) |
get_accessor_type() const |
|
has_json_pointers() const |
|
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 🔗
void set_gltf_to_godot_expression(value: Expression)
Expression get_gltf_to_godot_expression()
如果设置了该 Expression,则会用来将 glTF 对象模型中的属性值转换为 Godot 属性所需的值。适用于 glTF 对象模型使用不同的单位系统,以及数据需要以某种方式进行转换的场合。如果为 null
,则会原样复制属性值。
Expression godot_to_gltf_expression 🔗
void set_godot_to_gltf_expression(value: Expression)
Expression get_godot_to_gltf_expression()
如果设置了该 Expression,则会用来将 Godot 属性中的属性值转换为 glTF 对象模型所需的值。适用于 glTF 对象模型使用不同的单位系统,以及数据需要以某种方式进行转换的场合。如果为 null
,则会原样复制属性值。
Array[PackedStringArray] json_pointers = []
🔗
void set_json_pointers(value: Array[PackedStringArray])
Array[PackedStringArray] get_json_pointers()
用于在 glTF 对象模型中标识属性的 glTF 对象模型 JSON 指针。大多数情况下该数组中只有一个元素,但某些特定情况可能需要多个指针。这些元素本身也是数组,表示将 JSON 指针拆分成组件。
Array[NodePath] node_paths = []
🔗
指向 Godot 场景树中一个或多个属性的 NodePath 数组。导入时由 GLTFDocument 或 GLTFDocumentExtension 类设置。简单情况可以使用 append_path_to_property() 将属性添加到该数组中。
大多数情况下 node_paths 只会有一个元素,但在某些情况下,单个 glTF JSON 指针可能映射到多个 Godot 属性。例如多个 glTF 节点上使用的同一个 GLTFCamera 或 GLTFLight 会表示为多个 Godot 节点。
GLTFObjectModelType object_model_type = 0
🔗
void set_object_model_type(value: GLTFObjectModelType)
GLTFObjectModelType get_object_model_type()
根据对象模型定义,存储在 glTF 文件中的数据类型。这是可用访问器类型的超集,决定了访问器类型。可能的取值见 GLTFObjectModelType。
Variant.Type variant_type = 0
🔗
void set_variant_type(value: Variant.Type)
Variant.Type get_variant_type()
存储在 Godot 属性中的数据类型。这是 node_paths 指向的属性类型。
方法说明
void append_node_path(node_path: NodePath) 🔗
将一个 NodePath 附加到 node_paths。GLTFDocumentExtension 类可以用它来定义如何将 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 对象模型属性。
如果 node_paths 非空则返回 true
。用于在导入过程中确定 GLTFObjectModelProperty 是否能够处理将 glTF 对象模型属性转换为 Godot 属性。
void set_types(variant_type: Variant.Type, obj_model_type: GLTFObjectModelType) 🔗
设置 variant_type 和 object_model_type 属性。这是用来同时设置这两个属性的便捷方法,因为两者几乎都是一起确定的。该方法只应该调用一次。再次使用相同的值调用没有效果。