在Autodesk Forge中使用THREE.PointCloud创建的单个点的工具提示

时间:2018-07-25 12:32:14

标签: three.js autodesk-forge autodesk-viewer

我关注了this博客,为使用 Three.PointCloud 实现的每个点添加了工具提示。我使用world2Screen来获取各个点的位置,并尝试使用此方法

elem = document.elementFromPoint(x,y)

,但是连续只会获得画布作为输出(因此工具提示位于固定位置),而不是单击/悬停点。

任何人都可以实施此方法,并且知道任何解决方法。

预先感谢

1 个答案:

答案 0 :(得分:0)

根据博客,document.elementFromPoint()用于检查光标是否不在画布上。如果要捕获鼠标单击的击中点,在这种情况下,您自己的光线投射器可以提供帮助。例如:

var x =  ((event.clientX - viewer.canvas.offsetLeft) / viewer.canvas.width) * 2 - 1;
var y = -((event.clientY - viewer.canvas.offsetTop) / viewer.canvas.height) * 2 + 1;    
var vector = new THREE.Vector3(x, y, 0.5).unproject(this.camera);
this.raycaster.set(this.camera.position, vector.sub(this.camera.position).normalize());
var nodes = this.raycaster.intersectObject( this.pointCloud );

在上面的代码段中,event对象来自鼠标单击事件,请参见此处以了解详细信息:https://github.com/wallabyway/markupExt/blob/master/docs/markupExt.js#L48