提问者:小点点

在欧特克锻造查看器中获取三个网格元素


我想要三个。Autodesk Forge Viewer中图元的网格对象。代码如下:

var dbId;   // geometry node Id of an element
var viewer; // GuiViewer3D
var mesh = viewer.impl.getRenderProxy(viewer.model, dbId);

返回网格对象是一个三点网格。网格对象,但具有空几何体和材质,因此它是无用的。我怎样才能得到真正的三个。网格对象?

谢谢你。


共1个答案

匿名用户

这取决于要对网格执行的操作:如果要更改渲染样式,则需要获取renderProxy,如果要变换组件位置或旋转,则需要获取fragmentProxy。

这些方法将片段ID而不是dbId作为输入。

请在以下位置查找这两个方面的示例:

观看。扩大布料

观看。扩大使改变

您可以从选择事件(如上面的示例所示)或使用enumNodeFragments获取给定dbId的片段ID:

 var instanceTree = model.getData().instanceTree

 var fragIds = []

 instanceTree.enumNodeFragments(dbId, function(fragId){
     fragIds.push(fragId)
 })

 // to change material or transform, need to iterate all
 // fragments of a given dbId and apply same material/transform

 fragIds.forEach(function(fragId) {

     var renderProxy = viewer.impl.getRenderProxy(viewer.model, fragId)

     var fragmentproxy = viewer.impl.getFragmentProxy(viewer.model, fragId)
 })