什么是DAG

来源:互联网 发布:企搜通软件 编辑:程序博客网 时间:2024/06/06 00:35

在学习maya的API编程的同时,会经常看到类名中会有“Dag”的标识。

如:MDagPath.node()

   OpenMaya.MItDag(OpenMaya.MItDag.kDepthFirst,OpenMaya.MFn.kInvalid)

   dagNodeFn.name()

   dagIterator.currentItem()

一、那么首先DAG是什么?

在maya的帮助中解释道DAG(有向非循环图)在 Maya 中的场景图形通常被称为"有向非循环图"或DAGDAG 是实际的更大图形,称为依存关系图,其中包括多更广泛的节点类型,包括着色器,变形器、 约束等的一个子集。有关详细信息,请参阅下一部分中,依存关系图插件基础知识现在,我们将集中我们注意 DAG 节点,可以在两种方法之一进行分类:

变换节点:MFn.kTransform

形状节点:MFn.kMeshMFn.kCameraMFn.kLight、...


变换节点和形节点:其实这两个节点就是我们能在maya的属性中看到,例如:创建一个ploy sphere,它的变节点就是属性中的pSphere1,形节点就是pSphereShape1。那么变节点主要就是控制物体的旋转位移等信息。形节点就是包括形态、贴图、渲染等一些参数。


那么也就是说,带有dag的类,是属于具有非循环矢量功能的。是被DAG标识的MDag的子类或是超类。



而一个场景中创建了一个点光源,一个cube,点光源是cube的子物体;maya中的有向非循环图(DAG):


特别要记住的就是形状节点下是不可以有任何变换节点的,也就是说形节点只能位于叶(也就是树状图的分支末端)。

和maya的group操作一样~在位移上父能带动子,子不能影响父(不指参数)。


二、DAG的一些路径函数

DAG的路径函数都是在MDagPath这个类中。

一下是MDagPath中的函数目录表(C++版):



三、DAG的遍历(使用迭代)

以下是MItDag的函数目录:


Image resource:mayaAPI C++类目录


【未完待续,学习中,如有错误请留言,互相学习】

括包括

原创粉丝点击