OrthographicCamera — это тип камеры в Three.js,
обеспечивающий ортографическую проекцию, при которой
объекты не уменьшаются с увеличением расстояния от камеры. В отличие от
перспективной камеры (PerspectiveCamera), ортографическая
камера сохраняет параллельность линий и одинаковый масштаб объектов вне
зависимости от их глубины, что делает её незаменимой для технических
визуализаций, 2D-панелей и изометрических игр.
Конструктор камеры имеет следующий синтаксис:
const camera = new THREE.OrthographicCamera(left, right, top, bottom, near, far);
Параметры:
left — координата левой границы видимой области.right — координата правой границы.top — координата верхней границы.bottom — координата нижней границы.near — ближняя плоскость отсечения (объекты ближе не
рендерятся).far — дальняя плоскость отсечения (объекты дальше не
рендерятся).Пример инициализации камеры для сцены с размером 800x600 пикселей:
const aspect = 800 / 600;
const frustumSize = 10;
const camera = new THREE.OrthographicCamera(
frustumSize * aspect / -2,
frustumSize * aspect / 2,
frustumSize / 2,
frustumSize / -2,
0.1,
1000
);
camera.position.set(10, 10, 10);
camera.lookAt(0, 0, 0);
Ортографическая камера использует ортогональную матрицу проекции, которая определяет видимую область в виде параллелепипеда (frustum). Все объекты в пределах этого параллелепипеда отображаются без перспективного искажения.
Основные особенности:
Область видимости можно изменять динамически, что полезно для адаптивных интерфейсов и масштабирования сцены.
camera.left = -5;
camera.right = 5;
camera.top = 5;
camera.bottom = -5;
camera.updateProjectionMatrix();
Метод updateProjectionMatrix()
обязателен после изменения параметров камеры, иначе
сцена не будет корректно отображаться.
| Параметр | OrthographicCamera | PerspectiveCamera |
|---|---|---|
| Перспектива | Нет | Есть |
| Масштаб объектов | Постоянный | Зависит от расстояния |
| Параллельность линий | Сохраняется | Преломляется |
| Применение | Техническая визуализация, 2D | 3D сцены, игры, VR |
Технические и инженерные визуализации Используется для отображения чертежей, схем, CAD-моделей, где важна точная геометрия без искажений.
2D-графика и UI в 3D-сцене Ортографическая камера позволяет разместить интерфейсные элементы поверх 3D сцены без перспективного искажения.
Изометрические игры Подходит для создания изометрических проекций, где объекты должны сохранять размер независимо от глубины сцены.
Архитектурные визуализации Позволяет проектировать и визуализировать здания в точном масштабе.
Aspect ratio (отношение ширины к высоте) критически
важно для корректного отображения сцены. Обычно используется
формула:
const aspect = window.innerWidth / window.innerHeight;
const frustumSize = 20;
camera.left = -frustumSize * aspect / 2;
camera.right = frustumSize * aspect / 2;
camera.top = frustumSize / 2;
camera.bottom = -frustumSize / 2;
camera.updateProjectionMatrix();
При изменении размера окна браузера рекомендуется обновлять параметры камеры, чтобы сохранялась правильная пропорция.
Ортографическая камера хорошо комбинируется с
OrbitControls для:
controls.pan())zoomcamera.zoom = 2;
camera.updateProjectionMatrix();
Увеличение значения zoom приближает сцену, уменьшая —
отдаляет, при этом форма объектов не искажается.
OrthographicCamera является незаменимым инструментом для точной визуализации, интерфейсов и изометрических сцен, где перспективное искажение нежелательно, а контроль над областью видимости и масштабом объектов — критичен. Ее параметры позволяют гибко управлять фреймами сцены и адаптироваться под любые размеры viewport, обеспечивая строгую геометрическую точность.