Камера, использующая perspective projection.
Этот режим проецирования разработан для имитации того, как видит человеческий глаз. Это самый распространенный режим проецирования, используемый для рендеринга 3D-сцены.
const camera = new v3d.PerspectiveCamera(45, width / height, 1, 1000);
app.scene.add(camera);
fov — Вертикальное поле зрения фрустума камеры.
aspect — Соотношение сторон фрустума камеры.
near — Ближайшая плоскость фруструма камеры.
far — Дальняя плоскость фруструма камеры.
Вместе они определяют viewing frustum камеры.
Общие свойства смотрите в базовом классе Camera.
Обратите внимание, что после внесения изменений в большинство из этих свойств вам придется вызвать
.updateProjectionMatrix, чтобы изменения вступили в силу.
Соотношение сторон фрустума камеры, обычно ширина холста / высота холста. По умолчанию 1 (квадратный холст).
Дальняя плоскость фруструма камеры. По умолчанию 2000.
Должно быть больше, чем текущее значение плоскости near.
Размер фотопленки, используемый для большей оси. По умолчанию 35 (миллиметров). Этот параметр не влияет на матрицу проекции, если .filmOffset не установлен в ненулевое значение.
Горизонтальное смещение от центра в тех же единицах, что и .filmGauge. По умолчанию 0..
Расстояние до объекта, используемое для стереоскопии и эффектов глубины резкости. Этот параметр не влияет на матрицу проекции, если не используется StereoCamera. По умолчанию 10.
Вертикальное поле зрения фрустума камеры, снизу вверх, в градусах. По умолчанию 50.
Фрустум камеры вблизи плоскости. По умолчанию 0,1.
Допустимый диапазон больше 0 и меньше текущего значения плоскости far. Обратите внимание, что в отличие от OrthographicCamera, 0 является не допустимым значением для ближней плоскости PerspectiveCamera.
Спецификация окна фрустума или null. Устанавливается с помощью метода .setViewOffset и очищается с помощью .clearViewOffset.
Получает или устанавливает коэффициент масштабирования камеры. По умолчанию 1.
Общие методы смотрите в базовом классе Camera.
Удаляет любое смещение, установленное методом .setViewOffset.
Возвращает текущий вертикальный угол поля зрения в градусах с учетом .zoom.
Возвращает высоту изображения на пленке. Если .aspect меньше или равно единице (портретный формат), результат равен .filmGauge.
Возвращает ширину изображения на пленке. Если значение .aspect больше или равно единице (альбомный формат), результат равен .filmGauge.
Возвращает фокусное расстояние текущего .fov по отношению к .filmGauge.
Устанавливает FOV по фокусному расстоянию относительно текущего .filmGauge.
По умолчанию фокусное расстояние задается для 35-мм (полнокадровой) камеры.
fullWidth — полная ширина многоракурсной установки
fullHeight — полная высота многоракурсной установки
x — горизонтальное смещение подкамеры
y — вертикальное смещение подкамеры
width — ширина подкамеры
height — высота подкамеры
Устанавливает смещение в более крупном фрагменте. Это полезно для многооконных или мультимониторных/ мультимашинных настроек.
Например, если у вас 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);
Обратите внимание, что мониторы не обязательно должны быть одинакового размера или располагаться в виде сетки.
Обновляет матрицу проекции камеры. Должно вызываться после любого изменения параметров.
О том как получить исходный код этого модуля читайте тут.