我关注了this博客,为使用 Three.PointCloud 实现的每个点添加了工具提示。我使用world2Screen来获取各个点的位置,并尝试使用此方法
elem = document.elementFromPoint(x,y)
,但是连续只会获得画布作为输出(因此工具提示位于固定位置),而不是单击/悬停点。
任何人都可以实施此方法,并且知道任何解决方法。
预先感谢
答案 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