Three.js - Орфографическая камера
Я работаю над приложением, которое отображает некоторые 3D-модели. Мы загружаем модели, создаем сетки, добавляем их в сцену ... стандартная процедура. После добавления последней сетки мы вычисляем ограничивающий прямоугольник, чтобы переместить камеру и покрыть всю сцену, используя размер общей геометрии и размер области просмотра для выполнения математических операций.
if (bounds.bx / bounds.by < camera.aspect) {
/* Vertical max */
r = bounds.by / (2 * Math.tan(Math.PI / 8));
} else {
/* Horizontal max */
hFOV = 2 * Math.atan(Math.tan(Math.PI / 8) * camera.aspect);
r = bounds.bx / (2 * Math.tan((hFOV / 2)));
}
bounds
является объектом, содержащим ширину и высоту ограничительной рамки. После этого расчета мы перемещаем камеру (плюс небольшое соотношение, просто эстетику, нам нужно немного места между геометрией и границей экрана :)) и визуализируем
camera.position.z = r * 1.05;
Пока это реализовано и работает нормально. Это было сделано с PerspectiveCamera. Теперь мы хотим изменить это и использовать OrthographicCamera ... оказывается беспорядком. Модели слишком маленькие, мы теряем масштаб колесика мыши из элементов управления TrackBall, и алгоритм перемещения камеры больше не работает. Также я не понимаю параметры конструктора для камеры ... эти ширина и высота для геометрии или области просмотра?