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 文件中的数据类型。这是可用访问器类型的超集,决定了访问器类型。
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 属性。这是用来同时设置这两个属性的便捷方法,因为两者几乎都是一起确定的。该方法只应该调用一次。再次使用相同的值调用没有效果。