【问题标题】:How to get Orientation of Camera in THREE.js如何在 THREE.js 中获取相机的方向
【发布时间】:2012-12-11 00:26:44
【问题描述】:

我正在使用 THREE.JS 和 Web Audio API 创建一个 3d 游戏。我遇到的问题之一是我想使用网络音频监听器方向,并将监听器定义为摄像头,其位置和方向不断更新

我的问题,有没有可以轻松获得三相机的矢量方向?

我试图通过使用旧相机位置来计算它,并使用速度矢量来计算它面对的方向,但是当相机静止时这将不起作用......

通过使用 camera.rotation.x, camera.rotation.y, camera.rotation.z 创建单位向量是否可行?

或者有没有更简单的方法?

非常感谢您的宝贵时间!

【问题讨论】:

    标签: javascript html three.js web-audio-api


    【解决方案1】:

    您想知道相机在世界空间中的观察方向。

    相机空间中,相机位于原点并向下看它的负z轴。

    在相机空间中选择相机前方的一点:

    var pLocal = new THREE.Vector3( 0, 0, -1 );
    

    现在将该点转换为世界空间:

    var pWorld = pLocal.applyMatrix4( camera.matrixWorld );
    

    您现在可以构造所需的方向向量:

    var dir = pWorld.sub( camera.position ).normalize();
    

    编辑:更新为 three.js r.57

    编辑:另见:three.js set and read camera look vector

    【讨论】:

    • 完美!非常感谢!
    【解决方案2】:

    在第 69 版中(不确定是在哪个版本中引入的),您可以调用

    camera.getWorldDirection()
    

    获取相机方向向量。

    【讨论】:

      【解决方案3】:

      如果您的相机是玩家对象的子对象。例如在FPS游戏中。对玩家(相机的父级)进行相同的计算,并使用它(Bullit 获得正确的方向,在本例中来自 obj)

      Bullit.prototype.getDirection=function(obj){
      this.position.add(obj.position);
      var pLocal = new THREE.Vector3( 0, 0, -1 );
      var pWorld = pLocal.applyMatrix4( obj.matrixWorld );
      var dir = pWorld.sub( obj.position ).normalize();
      this.direction=dir;
      

      }

      【讨论】:

      猜你喜欢
      • 2013-01-26
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2014-07-01
      相关资源
      最近更新 更多