3ds max嵌套图层次结构

时间:2015-02-04 15:59:27

标签: 3dsmax

如何使用max 2015 sdk枚举嵌套层的层次结构。 示例:我有3个简单地命名为" 1"," 2"和" 3"。 1和2位于根,3属于1。

如何使用sdk查找此信息。

我可以找到节点所属的图层:

layer = (ILayer*)(node->GetReference(NODE_LAYER_REF));

在ILayer界面中,我找不到任何有关它的父母的信息。 我可以得到一些"扩展" (?)图层的属性:

props = (ILayerProperties*)layer->GetInterface(LAYERPROPERTIES_INTERFACE);

我的问题也没有任何相关信息。

我可以访问图层管理器​​:

            manager = (ILayerManager*) GetCOREInterface()->GetScenePointer()->GetReference(10);// don't remember where did I dig out the magic number 10

在这里,我可以按索引枚举所有图层,但不能按层次结构进行枚举。

任何帮助将不胜感激。感谢。

米兰

1 个答案:

答案 0 :(得分:0)

文件说明了这一点:

  

按索引迭代图层:IFPLayerManager类也是一个   管理3ds Max中场景图层的接口类。这个班   然而,它是一个功能发布的界面,因此是完全不同的   来自前面讨论过的层管理器。这个类是C ++   MAXScript LayerManager类的接口。这堂课有一个   通过整数索引返回图层的有用方法。因此你可以   迭代场景图层而不知道图层的名称。至   获取一个指向此对象的指针,调用GetCOREInterface()函数。

IFPLayerManager* layer_manager = static_cast< IFPLayerManager*> GetCOREInterface( LAYERMANAGER_INTERFACE);

LAYERMANAGER_INTERFACE标识IFPLayerManager接口。使用结果指针,您可以通过整数索引获取场景图层。

ILayerProperties* hLayer = layer_manager->getLayer(i);
  

此IFPLayerManager :: getLayer()方法返回ILayerProperties   指针的功能比ILayer少得多。

     

要获得ILayer指针,您可以获得指向其上任何对象的指针   图层,并从中提取ILayer指针。

ILayerProperties类具有子\父层的功能:

virtual ILayerProperties* getChildLayerProperties  ( int  n ) const 
  

纯虚拟

     

备注   返回指向此图层的第N个子图层属性的指针。   参数:   int n   子图层属性的索引。   返回   返回指向第N个子图层属性的指针。

virtual ILayerProperties* getParentLayerProperties  (  ) const 
 pure virtual  
  

备注返回父图层。这可能是NULL,意味着图层   处于最高水平。

这意味着您可以循环遍历所有索引,然后检查它是否为父层,如果它是循环遍历所有它的子层,则转到下一个。

这些功能记录在&lt; ILayerProperties Class Reference&#39;在3dsmax SDK文档中。

相关问题