我尝试使用一个适用于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模式?
答案 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。