2013-12-11 2 views
1

Я хочу рассчитать камеру ближнего и дальнего расстояния в зависимости от оси с выравниванием по оси, используя three.js. Я попробовал этот путь:Расчет камеры вблизи и дальнего расстояния на основе ограничивающей рамки

getNearFar = function(camera, box) { 
    var view_matrix = new THREE.Matrix4(); 
    view_matrix.copy(camera.matrixWorldInverse.getInverse(camera.matrixWorld)); 
    var minz = +Infinity; var maxz = -Infinity; 

    for (var i = 0; i < 8; i++) { 
     var x = i & 1 ? box.min.x : box.max.x; 
     var y = i & 2 ? box.min.y : box.max.y; 
     var z = i & 4 ? box.min.z : box.max.z; 
     var p = new THREE.Vector3(x, y, z); 
     p.applyMatrix3(view_matrix); 
     z = -p.z; 
     if (z > maxz) maxz = z; 
     if (z < minz) minz = z; 
    } 

    return {'near':minz, 'far':maxz}; 
};  

То, что я сделал это, чтобы получить матрицу вида камеры и преобразовать 8 угловых точек окна в пространстве камеры. Ближайшее и дальнее расстояние должно быть min и max z. Но это не дает правильного ответа. Где я неправ?

ответ

1

я узнал, что это не так: должно быть p.applyMatrix4()

+0

Удалить вопрос. – WestLangley

Смежные вопросы