ThreeJS:屏幕位置到摄像机位置

时间:2013-07-31 09:41:47

标签: javascript three.js

我已经看过很多帖子,人们希望将相机位置设置为屏幕位置。我的问题是如何做到相反。

我目前想要实现的是设置"门"位置到屏幕的%,此计算已准备就绪,我确实有最终屏幕X,Y(px)位置。相机的当前Z偏移= 250。

我发现此代码可将相机位置转换为屏幕位置:

var vector = projector.projectVector(door.position.clone(), camera);
vector.x = (vector.x + 1) / 2 * window.innerWidth;
vector.y = -(vector.y - 1) / 2 * window.innerHeight;

为了做反转,我尝试了这个,但没有给出我期望的结果:

var mouseX = ((perc.x) / window.innerWidth) * 2 - 1,
    mouseY = -((perc.y) / window.innerHeight) * 2 + 1;

var vector = new THREE.Vector3(mouseX, mouseY, 1);
projector.unprojectVector(vector, camera);
return vector.sub(camera.position).normalize()

我尝试了几种方法并尝试使用Google,但没有找到答案。

问:如何将屏幕位置转换为摄像机位置?

2 个答案:

答案 0 :(得分:2)

使用一个大的不可见平面来定义门可以展开的方向,然后在平面上使用raycaster来搜索门对象应该延伸的位置。

答案 1 :(得分:2)

好吧,正如Gero3发布的那样,您要做的是创建一个覆盖所有可见相机区域的平面(类似new THREE.PlaneGeometry(5000,5000);),然后使用raycaster定位在该平面上协调的屏幕。 / p>

以下是another similar question的示例:

http://jsfiddle.net/PwWbT/

希望有所帮助。