FbxProperty(Fbx对象特性)

本文介绍了FbxProperty在3D对象特性中的使用,包括管理特性、特性数据的读写以及特性层级的概念。FbxProperty通过FbxProperty::Create()创建,其数据可以通过Get()和Set()进行操作。特性层级允许FbxProperty与FbxObject或其它FbxProperty建立联系,可通过FindProperty(), GetFirstProperty(), GetNextProperty()等函数遍历和操作。" 103151533,9167916,使用instabio快速创建网址聚合落地页,"['落地页', 'SEO', '社交媒体营销', '链接管理', '营销工具']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象特性

1、管理特性

FbxProperty模板类是为了保证FbxObject能够非常规范。举个例子,FbxNode就是由FbxTypedProperty(用FbxDouble3参数化描述)来表示的。

当一个FbxObject被创建时,它在FbxProperty中创建的静态数据会被自动初始化。那么为了创建自己的FbxProperty,我们必须点哟FbxProperty::Create(),用户创建的特性包含用户自己定义的数据,这些数据可以和FbxObject动态联系在一起。下面是一段调用代码(第一个参数是FbxScene对象,第二个参数是特性的类型,第三个参数是特性的名字):

FbxProperty p = FbxProperty::Create(pScene, DTDouble3, "Vector3Property");
FbxSet<FbxDouble3>(p, FbxDouble3(1.1, 2.2, 3.3);
FbxProperty对象可以通过FbxProperty::GetName()来查找,但是必须要在同一层次中进行。FbxPoperty中的实例可以通过FbxProperty::Destroy()来销毁。一个层级的FbxProperty可以在根特性(也是一个FbxProperty对象)中通过调用FbxProperty::DestroyRecursively()来销毁。

2、特性数据

FbxProperty的实例中的数据可以通过FbxProperty::Get()和FbxProperty::Set()分别来写和读。比如,FbxNode图形转换信息可以这样读取:

// ... initialize FbxNode* lNode ...
FbxDouble3 translation = lNode->LclTranslation.Get();
FbxDouble3 rotation = lNode->LclRotation.Get();
FbxDouble3 scaling = lNode->LclScaling.Get();
特性中也包含一系列的特性集合FbxPropertyFlags::eFbxPropertyFlags,它们可以通过FbxProperty::GetFlag和FbxProperty::ModifyFlag()来操作。

和FbxObject不一样,FbxProperty可以通过操作符来进行赋值和比较等操作。

3、特性层级

FbxProperty可以在FbxObject联系也可以和另一个FbxProperty联系。获取FbxObject函数FbxProperty::GetNextProperty().

  在FbxObject中获取FbxProperty可以通过名字FbxObject::FindProperty(),也可以通过迭代器依次遍历查找:FbxObject::GetFirstProperty()后者FbxObject::GetNextProperty().

  对层级之间的实行操作可以用一下函数FbxProperty::GetParent(),FbxProperty::GetChild(),FbxProperty::GetSibing(),FbxProperty::Find().


下面是一个例子,用来说明怎样来创建你自己的FbxProperty value,并且将它们与FbxObjectMetaData实例(从FbxObject继承而来)绑定。

// ... initialize pScene as a FbxScene* ...

// Create a FbxObjectMetaData* object in pScene.
FbxObjectMetaData* lFamilyMetaData = FbxObjectMetaData::Create(pScene, "Family");

// Create and assign data to several instances of FbxProperty, based on their parametrized
// datatypes (DTString, DTFloat, DTDouble). 
//
// The fourth parameter is an optional label string, which can be obtained and modified
// using FbxProperty::GetLabel() and FbxProperty::SetLabel(). This label only exists
// in the program's main memory, and will not be exported to a file if/when the property
// is exported.
// 
// These properties will be contained within the pFamilyMetaData object.
//
FbxProperty::Create(lFamilyMetaData, DTString, "Level", "Level").Set(FbxString("Family")); // String
FbxProperty::Create(lFamilyMetaData, DTString, "Type", "Type").Set(FbxString("Wall"));     // String
FbxProperty::Create(lFamilyMetaData, DTFloat, "Width", "Width").Set(10.0f);              // float
FbxProperty::Create(lFamilyMetaData, DTDouble, "Weight", "Weight").Set(25.0);            // double
FbxProperty::Create(lFamilyMetaData, DTDouble, "Cost", "Cost").Set(1.25);                // double










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值