【发布时间】:2017-08-14 11:31:08
【问题描述】:
在 Forge Viewer 中,我编写了一个自定义处理程序。它有一个绑定的双击事件,当它与事件一起触发时,计算被点击的项目
const hitTest = this.viewer.clientToWorld(event.canvasX, event.canvasY, true);
对于普通的对象/网格/材质,可以正常工作,并返回 hitTest.dbId,加上一个 hitTest.point 对象指示我在 3D 空间中单击的位置。我使用该位置创建材质、网格和对象,然后添加到场景中。 (跳过了几个小步骤)
var material_orange = new THREE.MeshLambertMaterial({color: 0xFEBD17});
this.viewer.impl.matman().addMaterial('SBD-Material-' + 'orange', material_orange, true);
var sphereMesh =
new THREE.Mesh(
new THREE.SphereGeometry(niceRadius, 20),
material_orange);
var sphereModel = new THREE.Object3D();
sphereModel.add(sphereMesh);
sphereModel.position.set(atPoint.x, atPoint.y, atPoint.z);
this.viewer.impl.scene.add(sphereModel);
this.viewer.impl.invalidate(true);
一切都很好。球体被添加到我的模型中。 (它是黑色的,我仍然无法弄清楚为什么......)但最大的问题是我无法点击球体。单击它会选择模型中的底层对象,通常是墙壁或地板。
是否需要使用 RayTrace 方法来获取场景中的对象?或者对象/网格/材质是否有一个属性可以使其可点击?观众更新?
【问题讨论】:
标签: autodesk-forge