我已经看过很多帖子,人们希望将相机位置设置为屏幕位置。我的问题是如何做到相反。
我目前想要实现的是设置"门"位置到屏幕的%,此计算已准备就绪,我确实有最终屏幕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,但没有找到答案。
问:如何将屏幕位置转换为摄像机位置?
答案 0 :(得分:2)
使用一个大的不可见平面来定义门可以展开的方向,然后在平面上使用raycaster来搜索门对象应该延伸的位置。
答案 1 :(得分:2)
好吧,正如Gero3发布的那样,您要做的是创建一个覆盖所有可见相机区域的平面(类似new THREE.PlaneGeometry(5000,5000);
),然后使用raycaster定位在该平面上协调的屏幕。 / p>
以下是another similar question的示例:
希望有所帮助。