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
Javascript ThreeJS:屏幕位置到摄像机位置_Javascript_Three.js - Fatal编程技术网

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

Javascript ThreeJS:屏幕位置到摄像机位置,javascript,three.js,Javascript,Three.js,我看过很多帖子,人们都想把摄像机的位置设置成屏幕位置。我的问题是如何做相反的事情 我现在想要实现的是将门的位置设置为屏幕的百分比,这个计算已经准备好,我有最终的屏幕X,Y px位置。相机的当前Z偏移=250 我发现以下代码用于将相机位置转换为屏幕位置: var vector = projector.projectVector(door.position.clone(), camera); vector.x = (vector.x + 1) / 2 * window.innerWidth; vec

我看过很多帖子,人们都想把摄像机的位置设置成屏幕位置。我的问题是如何做相反的事情

我现在想要实现的是将门的位置设置为屏幕的百分比,这个计算已经准备好,我有最终的屏幕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()
我尝试了几种方法,并尝试在谷歌上搜索,但没有找到答案


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

使用一个定义门可以扩展方向的大不可见平面,然后在该平面上使用光线投射器搜索门对象应该扩展到的位置。

使用一个定义门可以扩展方向的大不可见平面,然后使用光线投射器在平面上搜索门对象应延伸到的位置。

正如Gero3所发布的,您要做的是创建一个覆盖所有可见摄影机区域的平面,例如new THREE.PlaneGeometry 50005000;然后使用光线投射器定位该平面上的屏幕坐标

以下是一个例子:


希望这会有所帮助。

正如Gero3所发布的,你要做的是创建一个覆盖所有可见相机区域的平面,比如新的三点平面几何50005000;然后使用光线投射器定位该平面上的屏幕坐标

以下是一个例子:


希望能有所帮助。

谢谢你的反应,你能举个例子吗?谢谢你的反应,你能举个例子吗?