这取决于您要对网格做什么:如果要更改渲染样式,则需要获取renderProxy,如果要转换组件的位置或旋转,则需要获取fragmentProxy。
这些方法将片段 ID 而非 dbId 作为输入。
在以下位置查找两者的示例:
查看.扩展.材料
查看.扩展.转换
您可以从选择事件中获取给定 dbId 的片段 Id,如上面的示例所示,或者使用 enumNodeFragments:
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)
})