Я хочу рассчитать камеру ближнего и дальнего расстояния в зависимости от оси с выравниванием по оси, используя 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. Но это не дает правильного ответа. Где я неправ?
Удалить вопрос. – WestLangley