好久不摸Maya Api了,今晚摸了摸发现生疏的可怕,几乎忘了是怎么回事儿了。
MObject:
可以看成真正的数据,事实上只是一个指向Maya内核数据的一个指针,而MObject类是唯一能操作内部数据的一个类。MObject真正的数据可以是一个节点,或者一个plug(Attribute),而节点的类型需要通过成员函数apiType()返回。
MDataBlock:
这个类是用来存放运行时的节点的plug和attribute数据,可以用这个类提供的方法,根据指定的plug/attrib来获得相应的MDataHandle,进而进行下一步的操作。或者使用setClean函数告诉Maya某node的某plug/Attib是否是刚刚出炉的。
*MDataBlock对象只在节点的compute函数中有效。任何指向此类对象的指针在计算结束后不应保留。
MDataHandle:
看名字也看出来,不包含真正数据,只是一个指向MDataBlock某plug/Attrib的一个handle。感觉实在是绕啊,一贯的数据块和其操作类分离……
这个Handle类可以用来操作相应的DataBlock的指定部分,比如获取其值,设置其值,或者获取其child的handle。
MFnMeshData:
用来创建一个可以盛放Mesh data的数据块,返回的是MObject,这个MObject对象可以直接用MFnMesh等类操作。
MFnMesh:
用来处理Mesh的类,包含了大量的mesh处理函数。