Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bufferGeometry获取THREE.js Points对象中顶点的屏幕坐标_Three.js_Projection_Buffer Geometry - Fatal编程技术网

使用bufferGeometry获取THREE.js Points对象中顶点的屏幕坐标

使用bufferGeometry获取THREE.js Points对象中顶点的屏幕坐标,three.js,projection,buffer-geometry,Three.js,Projection,Buffer Geometry,我想让DOM节点在THREE.js模拟中跟踪粒子。我的模拟是使用点对象构建的,使用缓冲几何体。我正在设置渲染循环中每个顶点的位置。在模拟过程中,我移动/旋转摄影机和点对象(通过其父对象Object3d) 我不知道如何为我的任何粒子获得可靠的屏幕坐标。我在其他问题上遵循了说明,比如,和,但它们似乎都不适合我。在这一点上,我可以看到顶点的计算投影随着我的相机移动和对象旋转而改变,但不是以我能够实际映射到屏幕的方式。此外,有时屏幕上相邻的两个粒子会产生截然不同的投影位置 以下是我的最新尝试: cons

我想让DOM节点在THREE.js模拟中跟踪粒子。我的模拟是使用点对象构建的,使用缓冲几何体。我正在设置渲染循环中每个顶点的位置。在模拟过程中,我移动/旋转摄影机和点对象(通过其父对象Object3d)

我不知道如何为我的任何粒子获得可靠的屏幕坐标。我在其他问题上遵循了说明,比如,和,但它们似乎都不适合我。在这一点上,我可以看到顶点的计算投影随着我的相机移动和对象旋转而改变,但不是以我能够实际映射到屏幕的方式。此外,有时屏幕上相邻的两个粒子会产生截然不同的投影位置

以下是我的最新尝试:

const { x, y, z } = layout.getNodePosition(nodes[nodeHoverTarget].id)

var m = camera.matrixWorldInverse.clone()

var mw = points.matrixWorld.clone()

var p = camera.projectionMatrix.clone()

var modelViewMatrix = m.multiply(mw)
var position = new THREE.Vector3(x, y, z)
var projectedPosition = position.applyMatrix4(p.multiply(modelViewMatrix))
console.log(projectedPosition)
基本上,我已经复制了着色器中的操作以导出
gl\u位置

projectedPosition
是我要存储屏幕坐标的位置

如果我错过了一些明显的东西,我很抱歉。。。我尝试了很多方法,但到目前为止没有任何效果:/

提前感谢您的帮助。

我想好了

var position = new THREE.Vector3(x, y, z)

var projectedPosition = position.applyMatrix4(points.matrixWorld).project(camera)

你有没有可能加上一把小提琴来重现这个问题?