如何获取在异世界(underworld)中的子节点

Maya中有个一个大家知道的不多且容易误解的概念就是异世界,英文是 underworld。它其实就是另一种类型的几何空间,可以在这种空间中定位自己的对象。大家可以参考帮助文档 http://docs.autodesk.com/MAYAUL/2013/ENU/Maya-API-Documentation/index.html?url=files/DAG_Hierarchy_Transforms_with_multiple_shapes.htm ,topicNumber=d30e9861 来获得更多关于异世界的信息。

Maya中,Nurbs 曲面是一个常用的异空间,可以由两个坐标(u,v)来定义,这两个坐标就定义了该参数空间中的一个点。假设我们有一个Nurbs 曲面为 |nurbsPlane1 | nurbsPlaneShape1,当我们在该参数空间(曲线)中去绘制一条曲线时,所绘制的曲线实际在参数空间中确定,因此曲线会自动在异世界中定义,假设为 |curve | curveShape1。在Maya的Hypergraph视图中,如果使用层次结构来看这些节点的时候,会发现处于异世界的节点和正常空间的节点会以虚线做父子节点的连接。查看其DAG路径会如下:

  |nurbsPlane1 | nurbsPlaneShape1 ->| curve | curveShape1, 其中 -> 表示下面的节点在异世界中,意味着从对象本地3D空间进入 2D 参数空间。

介绍了异世界的概念后,那回到我们的问题,如果我要访问一个 Dag 节点的 所有子节点时(假设含有子节点在异世界中),我们该怎么办呢?默认情况下,如果使用 MItDag 来遍历的话,是不会访问到异世界中的子节点的,我们可以使用API MItDag::traverseUnderWorld( true ) 来指示可以访问异世界中的节点,这样,我们就能够顺利访问到异世界中的所有子节点了。 

原文地址:https://www.cnblogs.com/johnonsoftware/p/3186125.html