我试图获得三个体系内顶点的屏幕坐标。我一直在尝试使用Three.js: converting 3d position to 2d screen position中的以下代码执行此操作:
function toScreenXY( position, camera, div ) {
var pos = position.clone();
projScreenMat = new THREE.Matrix4();
projScreenMat.multiply( camera.projectionMatrix, camera.matrixWorldInverse );
projScreenMat.multiplyVector3( pos );
var offset = findOffset(div);
return {
x: ( pos.x + 1 ) * div.width / 2 + offset.left,
y: ( - pos.y + 1) * div.height / 2 + offset.top
};
}
function findOffset(element) {
var pos = new Object();
pos.left = pos.top = 0;
if (element.offsetParent)
{
do
{
pos.left += element.offsetLeft;
pos.top += element.offsetTop;
} while (element = element.offsetParent);
}
return pos;
}
我用以下信息称呼它:
var test = toScreenXY(particleGeometry.vertices[i].clone(), camera, renderer.domElement);
然而,返回的坐标与屏幕坐标不匹配。
还有其他一些例子可以讨论,但它们似乎不适用(Converting World coordinates to Screen coordinates in Three.js using Projection),因为所引用的“对象”不能是定义顶点的Vector3D。
在粒子系统中获取粒子屏幕位置的简单方法是什么?