Javascript ThreeJS:屏幕位置到摄像机位置
我看过很多帖子,人们都想把摄像机的位置设置成屏幕位置。我的问题是如何做相反的事情 我现在想要实现的是将门的位置设置为屏幕的百分比,这个计算已经准备好,我有最终的屏幕X,Y px位置。相机的当前Z偏移=250 我发现以下代码用于将相机位置转换为屏幕位置: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
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;然后使用光线投射器定位该平面上的屏幕坐标 以下是一个例子:
希望能有所帮助。谢谢你的反应,你能举个例子吗?谢谢你的反应,你能举个例子吗?