【问题标题】:ThreeJS: Screen position to camera positionThreeJS:屏幕位置到相机位置
【发布时间】:2013-07-31 18:33:13
【问题描述】:

我看过很多帖子,人们希望将相机位置设置为屏幕位置。我的问题是如何反其道而行之。

我目前想要实现的是将“门”位置设置为屏幕的 %,此计算已准备好,并且我确实有最终的屏幕 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()

我已经尝试了几种方法并尝试了谷歌,但没有找到答案。

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

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

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

    【讨论】:

    • 谢谢你的反应,你能发个例子吗?
    【解决方案2】:

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

    这是来自another similar question的示例:

    http://jsfiddle.net/PwWbT/

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      相关资源
      最近更新 更多