Камера, использующая перспективную проекцию.
Этот режим проецирования разработан для имитации того, как видит человеческий глаз. Это самый распространенный режим проецирования, используемый для рендеринга 3Д-сцен.
const aspect = app.getWidth() / app.getHeight();
const camera = new v3d.PerspectiveCamera(45, aspect, 1, 1000);
camera.position.z = 5;
app.scene.add(camera);
app.setCamera(camera);
Вместе они определяют усечённую пирамиду обзора камеры.
Смотрите свойства базового класса Camera. Обратите внимание, что после изменения большинства описанных ниже свойств, вам потребуется вызвать метод .updateProjectionMatrix, чтобы они вступили в силу.
Соотношение сторон пирамиды обзора камеры, обычно равно отношению ширина холста / высота холста. По умолчанию 1
(квадратный холст).
Дальняя плоскость пирамиды обзора камеры. По умолчанию 2000
.
Должно быть больше, чем текущее значение плоскости near.
Размер фотопленки, используемый для большей оси. По умолчанию 35
(миллиметров). Этот параметр не влияет на матрицу проекции, если .filmOffset не установлен в ненулевое значение.
Горизонтальное смещение от центра в тех же единицах, что и .filmGauge. По умолчанию 0
.
Расстояние до объекта, используемое для стереоскопии и эффектов глубины резкости. Этот параметр не влияет на матрицу проекции, если не используется StereoCamera. По умолчанию 10
.
Вертикальное поле зрения пирамиды обзора камеры, снизу вверх, в градусах. По умолчанию 50
.
Указывает, что объект является экземпляром класса PerspectiveCamera. Только для чтения.
Фрустум камеры вблизи плоскости. По умолчанию 0.1
.
Допустимый диапазон больше 0 и меньше текущего значения плоскости far. Обратите внимание, что в отличие от OrthographicCamera, 0
является не допустимым значением для ближней плоскости PerspectiveCamera.
Спецификация окна пирамиды обзора или null
. Устанавливается с помощью метода .setViewOffset и очищается с помощью .clearViewOffset.
Получает или устанавливает коэффициент масштабирования камеры. По умолчанию 1
.
Общие методы смотрите в базовом классе Camera.
Удаляет любое смещение, установленное методом .setViewOffset.
Возвращает текущий вертикальный угол поля зрения в градусах с учетом .zoom.
Возвращает высоту изображения на пленке. Если .aspect меньше или равно единице (портретный формат), результат равен .filmGauge.
Возвращает ширину изображения на пленке. Если значение .aspect больше или равно единице (альбомный формат), результат равен .filmGauge.
Возвращает фокусное расстояние текущего .fov по отношению к .filmGauge.
Устанавливает FOV по фокусному расстоянию относительно текущего .filmGauge.
По умолчанию фокусное расстояние задается для 35-мм (полнокадровой) камеры.
Устанавливает смещение в более крупной пирамиде обзора. Это полезно для создания многооконных или многомониторных конфигураций.
Например, если у вас 3x2 монитора и каждый монитор имеет разрешение 1920x1080, а мониторы расположены в сетке следующим образом:
+---+---+---+ | A | B | C | +---+---+---+ | D | E | F | +---+---+---+
тогда для каждого монитора вы будете вызывать данный метод следующим образом:
const w = 1920;
const h = 1080;
const fullWidth = w * 3;
const fullHeight = h * 2;
// A
camera.setViewOffset(fullWidth, fullHeight, w * 0, h * 0, w, h);
// B
camera.setViewOffset(fullWidth, fullHeight, w * 1, h * 0, w, h);
// C
camera.setViewOffset(fullWidth, fullHeight, w * 2, h * 0, w, h);
// D
camera.setViewOffset(fullWidth, fullHeight, w * 0, h * 1, w, h);
// E
camera.setViewOffset(fullWidth, fullHeight, w * 1, h * 1, w, h);
// F
camera.setViewOffset(fullWidth, fullHeight, w * 2, h * 1, w, h);
Обратите внимание, что мониторы не обязательно должны быть одинакового размера или располагаться в виде сетки.
Обновляет матрицу проекции камеры. Метод должен вызываться после любого изменения параметров камеры.
Смотрите пазлы камеры, чтобы управлять камерой без необходимости писать код.
О том как получить исходный код этого модуля читайте тут.