我想要三个。Autodesk Forge Viewer中图元的网格对象。代码如下:
var dbId; // geometry node Id of an element
var viewer; // GuiViewer3D
var mesh = viewer.impl.getRenderProxy(viewer.model, dbId);
返回网格对象是一个三点网格。网格对象,但具有空几何体和材质,因此它是无用的。我怎样才能得到真正的三个。网格对象?
谢谢你。
这取决于要对网格执行的操作:如果要更改渲染样式,则需要获取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)
})