2015-06-01 5 views
1

Когда я проверяю, находятся ли точки в пределах усеченного участка, используя камеру Perspective, она работает. Но когда я проверяю использование ортографической камеры, поле усеченного конуса выглядит неточным. Плоскость установлена ​​правильно. Есть ли что-то еще, что я забываю, что требует изменения при использовании ортографической камеры?Орфографический фрунт?

Вот как я устанавливаю самолеты ..

if((this.mouse.screenx>mouse.screen.x && this.mouse.screeny<mouse.screen.y)|| 
    (this.mouse.screenx<mouse.screen.x && this.mouse.screeny>mouse.screen.y)){ 
     topPlane.setFromCoplanarPoints(camera.position, topRight, topLeft ); 
     rightPlane.setFromCoplanarPoints(camera.position, bottomRight, topRight ); 
     bottomPlane.setFromCoplanarPoints(camera.position, bottomLeft,bottomRight ); 
     leftPlane.setFromCoplanarPoints(camera.position, topLeft, bottomLeft ); 
    }else{ 
     topPlane.setFromCoplanarPoints(camera.position, topLeft , topRight); 
     rightPlane.setFromCoplanarPoints(camera.position, topRight , bottomRight); 
     bottomPlane.setFromCoplanarPoints(camera.position,bottomRight , bottomLeft); 
     leftPlane.setFromCoplanarPoints(camera.position, bottomLeft , topLeft); 
    } 
    nearPlane.setFromNormalAndCoplanarPoint(vector,camera.position); 
    vector.set(0, 0, 1); 
    vector.applyQuaternion(camera.quaternion); 
    var vector2 = new THREE.Vector3(0, 0, -config.camera.far); 
    vector2.applyQuaternion(camera.quaternion); 
    vector2.add(camera.position); 
    farPlane.setFromNormalAndCoplanarPoint(vector,vector2); 

ответ

0

Хорошо, я понял вопрос вне. Я создавал свои самолеты так, чтобы они простирались от положения камеры, однако это создает усеченный конус. В орфографическом режиме нет никакого сужения - все прямо, поэтому плоскости усечения не должны простираться от камеры.

То, что я делал, было получить направление камеры:

var vector = new THREE.Vector3(0, 0, -1); 
    vector.applyQuaternion(camera.quaternion); 

И тогда я использовал это, чтобы создать каждый плоско, например:

 var top = topRight.clone(), right = bottomRight.clone(), bottom = bottomLeft.clone(), left = topLeft.clone(); 
     top.add(vector), right.add(vector), bottom.add(vector), left.add(vector); 

      topPlane.setFromCoplanarPoints(top, topLeft , topRight); 
      rightPlane.setFromCoplanarPoints(right, topRight , bottomRight); 
      bottomPlane.setFromCoplanarPoints(bottom,bottomRight , bottomLeft); 
      leftPlane.setFromCoplanarPoints(left, bottomLeft , topLeft); 

Я его так усеченного может быть перевернутый - поэтому обязательно проверьте, правильно ли установлены плоскости.