我看过很多帖子,人们希望将相机位置设置为屏幕位置。我的问题是如何做相反的事情。
我目前想要实现的是将“门”位置设置为屏幕的 %,此计算已准备就绪,并且我确实有最终的屏幕 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()
我尝试了几种方法并尝试谷歌,但没有找到答案。
问:如何将屏幕位置转换为相机位置?