field node小结

field节点相比创建polymesh之类的节点而言要复杂一些。主要有以下几点不同:

 

1、多加入了openMayaFX库;

2、在初始化插件时也有一些不同;

MStatus initializePlugin( MObject obj )
{
      MStatus   status;
      MFnPlugin plugin(obj, "","2012", "Any");
 
      status = plugin.registerNode( "DynExprField",DynExprField::id,&DynExprField::creator,
                                               &DynExprField::initialize,MPxNode::kFieldNode );
      if (!status) {
           status.perror("registerNode");
           return status;
           }
}

registerNode参数列表最后加上MPxNode::kFieldNode,表明是field节点。相应地,在.h文件中继承的基类MPxNode也需改为MPxFieldNode;

class dynExprField: public MPxFieldNode


3
、在field节点中增加了一个函数成员MStatusApply(MDataBlock &,MVectorArray &,...),用于施力;

4、API会从MPxFieldNode中获取一些参数来构建节点,如:

mMagnitude--magnitude大小

mAttenuation--attenuation大小

mOwnerPosData--各个owner的位置

mInputData--包含刚体粒子的位置\速度\质量等信息

mOwnerCentroid-- applyVertex打开时,owner的中心位置

mOutputForce(important)--输出outputForce,是作用力的向量队列而不是受力物位置的向量队列,受力物为粒子或刚体,连接至particleShape或rigidBody的inputForce上;

 

对于field node来说,可以用各种数学公式、各种算法来实现,但其核心就是要得到outputForce向量队列,从而控制粒子或刚体的运动。
看了两个field例子,越来越觉得mayaAPI像八股,核心算法比重少,形式却很繁杂。写起来费力不讨好,看来再熟悉熟悉就得转向python了。继续~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值