可以使用 Raycaster 进行点击检测。以下是示例代码:
var mouse = new THREE.Vector2();
function onClick(event) {
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
var raycaster = viewer.impl.renderer.raycaster;
raycaster.setFromCamera( mouse, viewer.impl.camera );
var intersects = raycaster.intersectObjects( viewer.impl.scene.children, true );
if ( intersects.length > 0 ) {
var dbId = parseInt( intersects[0].object.dbId );
console.log( "Clicked on dbId: " + dbId );
}
}
viewer.impl.canvas.addEventListener( 'click', onClick, false );
请注意,在此示例中,我们使用了 ThreeJS 的 Raycaster 对象来计算交集并确定点击位置是否与场景中的模型相交。通过使用交集,我们可以确定被点击模型的 dbId。