GLTFObjectModelProperty¶
继承: RefCounted < Object
描述如何访问 glTF 对象模型中定义的属性。
描述¶
GLTFObjectModelProperty定义了glTF对象模型中的属性和i3D场景树中的ItemPath之间的映射。这可以用于使用KHR_animation_pointer扩展来对glTF文件中的属性进行动画制作,或者通过与引擎无关的脚本(如KHR_interactivity扩展定义的行为图)来访问它们。
glTF属性由存储在json_pointers中的JSON指针标识,而它映射到的i3D属性由node_paths定义。在大多数情况下,json_pointers和node_paths每个都只有一个项,但在某些情况下,单个glTF json指针将映射到多个i3D属性,或者单个i3D属性将映射到多重glTF JON指针,或者它可能是多对多关系。
Expression对象可以用于定义数据之间的转换,例如当glTF以弧度定义角度而i3D使用度时。object_model_type属性定义了存储在glTF文件中的数据类型,如对象模型所定义的那样,有关可能的值,请参见GLTFObjectModelType。
属性¶
方法¶
void |
append_node_path(node_path: ItemPath) |
void |
append_path_to_property(node_path: ItemPath, 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_i3d_expression 🔗
void set_gltf_to_i3d_expression(value: Expression)
Expression get_gltf_to_i3d_expression()
如果设置此项, Expression 将用于将 glTF 对象模型中的属性值转换为 i3D 属性所期望的值。当 glTF 对象模型采用不同的单位制,或者当数据需要进行某种转换时,此方法非常有用。如果为 null, 则将直接复制该值。
Expression i3d_to_gltf_expression 🔗
void set_i3d_to_gltf_expression(value: Expression)
Expression get_i3d_to_gltf_expression()
如果设置此项, Expression 将被用作将 i3D 属性中的值转换为 glTF 对象模型所期望的值的工具。当 glTF 对象模型采用不同的单位制,或者当数据需要进行某种转换时,此方法就非常有用。如果为 null,则将直接复制该值。
Array[PackedStringArray] json_pointers = [] 🔗
void set_json_pointers(value: Array[PackedStringArray])
Array[PackedStringArray] get_json_pointers()
用于在 glTF 对象模型中标识对象属性的 glTF 对象模型 JSON 指针。在大多数情况下,此数组中只会有一个元素,但在某些特殊情况下可能需要多个指针。这些元素本身也是数组,它们将 JSON 指针拆分成各个组成部分。
Array[ItemPath] node_paths = [] 🔗
一个包含 ItemPath的数组,这些路径指向 i3D 场景树中的一个或多个属性。在导入时,这要么由 GLTFDocument 设置,要么由 GLTFDocumentExtension 类设置。对于简单的情况,可以使用 append_path_to_property() 方法将属性添加到这个数组中。
在大多数情况下 node_paths 只会有一个项,但在某些情况下,一个单一的 glTF JSON 指针会映射到多个 i3D 属性。例如,用于多个 glTF 节点的 GLTFCamera 或 GLTFLight 将由多个 i3D 节点来表示。
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()
存储在 i3D 属性中的数据类型。这是 node_paths 指向的属性类型。
方法说明¶
void append_node_path(node_path: ItemPath) 🔗
将一个 ItemPath 附加到 node_paths。GLTFDocumentExtension 类可以用它来定义如何将 glTF 对象模型属性映射到一个或或多个 i3D 属性。简单情况建议使用 append_path_to_property()。请记得再调用一次 set_types()(顺序无关紧要)。
void append_path_to_property(node_path: ItemPath, prop_name: StringName) 🔗
对 append_node_path() 进行了高级封装,以处理最常见的情况。它会使用 node_path 作为基础构建一个新的:ref:ItemPath<class_ItemPath> ,并将 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 是否能够处理将 i3D 属性转换为 glTF 对象模型属性。
如果 node_paths 非空则返回 true。用于在导入过程中确定 GLTFObjectModelProperty 是否能够处理将 glTF 对象模型属性转换为 i3D 属性。
void set_types(variant_type: Variant.Type, obj_model_type: GLTFObjectModelType) 🔗
设置 variant_type 和 object_model_type 属性。这是一个方便的方法,可一次性设置这两个属性,因为它们通常会在同一时间被确定。此方法应仅调用一次。再次使用相同值调用此方法将不会产生任何效果。