Autodesk Forge Viewer - 在通过 SceneBuilder 创建的模型上单击事件

Autodesk Forge Viewer - Click Events on models created through SceneBuilder

我正在使用新的 SceneBuilder 扩展(使用 this 指南)向查看器添加几何图形。我已经能够在查看器中显示几何图形,并且还能够将 TextGeometry 添加到与某些模型相同的 dbId。

查看器允许我单击并隔离几何图形,但是当我使用 viewer.getSelection() 时,它 returns 是一个空数组。我什至为 Geometry 本身添加了一个点击事件监听器,但也没有运气。

有没有人知道一种方法可以将侦听器添加到这个新创建的片段或几何图形中。

您是否将 dbid 设置为附加到场景的网格?否则选择器将无法像文档(原始模型)的气泡那样获取他们的 dbids:


    sceneBuilder.addNewModel({conserveMemory: false,
    modelNameOverride: 'My Model Name233'})
        .then(modelBuilder => {
            //...
            mesh = new THREE.Mesh(geom, phongMaterial);
            mesh.dbId=23333;
            modelBuilder.addMesh(mesh);

        })

然后您就可以调用自定义模型上的选择器来获取当前选择 - 因为我们是从自定义模型中获取选择状态,而不是由 Viewer 加载的选择状态(通过 viewer.model 公开) ):

modelBuilder.model.selector.getSelection() //[23333]

编辑

忘记提及您也可以订阅 AGGREGATE_SELECTION_CHANGED_EVEN 因为我们在这里处理多个模型:

NOP_VIEWER.addEventListener(Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT,e=>{
//...
})