如何将Raycaster与CombinedCamera一起使用?

时间:2015-12-12 19:40:43

标签: javascript three.js

我尝试使用一个适用于PerspectiveCamera的Raycaster(用于选择),但不能使用CombinedCamera。

首先看来,Raycaster不支持CombinedCamera,所以我添加了三个.j的among those line

if ( camera instanceof THREE.CombinedCamera ) {
    if( camera.inPerspectiveMode ) {
        camera = camera.cameraP;
    } else if ( camera.inOrthographicMode ) {
        camera = camera.cameraO;
    }
}

if ( camera instanceof THREE.PerspectiveCamera ) {

...

因为它指的是嵌套相机,但是这并不能解决问题,因为我认为,嵌套相机的位置 - 四元数 - 旋转不会更新?

我如何实现这一点并使Raycaster能够使用CombinedCamera的Ortho和Perspective模式?

1 个答案:

答案 0 :(得分:3)

渲染器需要世界矩阵数据才能使光线投射工作。对CombinedCamera代码进行以下修改:

  // Add to the .toPerspective() method:
  this.matrixWorldInverse = this.cameraP.matrixWorldInverse; //
  this.matrixWorld = this.cameraP.matrixWorld;               //

  // and to the .toOrthographic() method add:
  this.matrixWorldInverse = this.cameraO.matrixWorldInverse; //
  this.matrixWorld = this.cameraO.matrixWorld;               //

R73。