Орбитальные контролы позволяют камере двигаться по орбите вокруг целевого объекта.
const renderer = new v3d.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const scene = new v3d.Scene();
const camera = new v3d.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
const controls = new v3d.OrbitControls(camera);
// controls.update() должен быть вызван после любых изменений положения камеры
camera.position.set(0, 20, 100);
controls.update();
function animate() {
requestAnimationFrame(animate);
// требуется, если controls.enableDamping или controls.autoRotate установлены в true
controls.update();
renderer.render(scene, camera);
}
Установите значение true для автоматического вращения вокруг целевого объекта.
Обратите внимание, что если эта функция включена, вы должны вызвать .update() в цикле анимации.
Скорость вращения вокруг целевого объекта, если # .autoRotate : Booleanравно true. По умолчанию 2.0, что соответствует 30 секундам на оборот при частоте рендеринга 60 кадров/с.
Обратите внимание, что если включено # .autoRotate : Boolean, необходимо вызвать .update() в цикле анимации.
HTML-элемент, используемый для прослушивания событий мыши/тачскрина. Он должен быть передан в конструкторе; изменение его здесь не приведет к установке новых обработчиков событий. По умолчанию используется весь документ.
Включены ли элементы управления или нет.
Установите в true, чтобы осуществлять зум только при нажатой клавише ctrl (подобно тому как это сделано в Google Maps). По умолчанию false.
Установите значение true, чтобы включить демпфирование (инерцию), которое можно использовать для придания чувства веса элементам управления. По умолчанию установлено значение true.
Обратите внимание, что если эта функция включена, необходимо вызвать .update() в цикле анимации.
Включает или отключает управление с клавиатуры. По умолчанию true.
Включает или отключает панорамирование камеры. По умолчанию true.
Включает или отключает поворот камеры по горизонтали и вертикали. По умолчанию true.
Обратите внимание, что можно отключить одну ось, установив минимальное и максимальное значение полярного или азимутального углов в одно и то же значение, что приведет к фиксации вертикального или горизонтального вращения.
Включает или выключает возможность перемещения камеры через голову. По умолчанию false.
Включает или отключает зум (dollying) камеры. По умолчанию true.
Флаг, указывающий, находится ли камера в режиме автоматического наведения (tweening).
Как далеко вы можете двигаться по горизонтали, верхний предел. Диапазон от -Math.PI до Math.PI (или Infinity для отключения предела). По умолчанию Infinity (бесконечность).
Как далеко вы можете отдалиться (только для PerspectiveCamera). По умолчанию Infinity (бесконечность).
Как далеко вы можете двигаться по вертикали, верхний предел. Диапазон от 0 до Math.PI радиан, по умолчанию Math.PI.
Насколько можно уменьшить масштаб изображения (только для OrthographicCamera). По умолчанию Infinity (бесконечность).
Как далеко вы можете двигаться по горизонтали, нижний предел. Диапазон от -Math.PI до Math.PI (или -Infinity для отключения предела). По умолчанию -Infinity (бесконечность).
Насколько близко вы можете приближаться (только для PerspectiveCamera). По умолчанию 0.
Как далеко вы можете двигаться по вертикали, нижний предел. Диапазон от 0 до Math.PI радиан. По умолчанию 0.
Насколько сильно можно увеличить масштаб изображения (только для OrthographicCamera). По умолчанию 0.
Этот объект содержит ссылки на кнопки мыши, используемые для управления.
controls.mouseButtons = {
ROTATE: v3d.MOUSE.LEFT,
ZOOM: v3d.MOUSE.MIDDLE,
PAN: v3d.MOUSE.RIGHT
}
Управляемая камера.
Инерция панорамирования, используемая если .enableDamping установлен в true. Обратите внимание, что для работы данной функции необходимо вызвать .update() в цикле анимации. По умолчанию 0.05.
Скорость панорамирования. По умолчанию 1.3.
Скорость панорамирования (количество пикселей) при использовании курсорных клавиш клавиатуры. По умолчанию 15.0.
Используется методами .saveState и .reset.
Инерция вращения, используемая если .enableDamping установлен в true. Обратите внимание, что для работы данной функции необходимо вызвать .update() в цикле анимации. По умолчанию 0.05.
Аналогично .rotateInertia, но используется на устройствах с тачскрином. По умолчанию 0.05.
Скорость вращения. По умолчанию 1.2.
Скорость вращения при использовании такскринов. По умолчанию 0.7.
Определяет, как меняется положение камеры при панорамировании. Если true, камера движется в пространстве экрана. В противном случае камера движется в плоскости, ортогональной направлению вектора up камеры. По умолчанию true.
Используется внутренними методами .saveState и .reset.
Объект, положение которого в мировом пространстве служит точкой фокуса элементов управления, а .object вращается вокруг него. Его можно обновить вручную в любой момент, чтобы изменить фокус элементов управления.
Используется внутренними методами .saveState и .reset.
Скорость зума/приближения. По умолчанию 5.0.
Скорость зума/приближения на устройствах с тачскрином. По умолчанию 1.0.
Инерция зума, используемая если .enableDamping установлен в true. Обратите внимание, что для работы данной функции необходимо вызвать .update() в цикле анимации. По умолчанию 0.05.
Аналогично .zoomInertia, но используется на устройствах с тачскрином. По умолчанию 0.05.
Удаляет все обработчики событий.
Получает текущее горизонтальное вращение, в радианах.
Получает текущее расстояние между камерой и целевым объектом.
Получает текущее вертикальное вращение, в радианах.
Возвращает элементы управления к их состоянию либо после последнего вызова .saveState, либо к начальному состоянию.
Сохраняет текущее состояние контролов. Впоследствии его можно восстановить с помощью .reset.
Запускает автоматическое изменение текущего положения камеры и целевой точки на указанное новое положение и цель в течение указанного времени.
Плавно изменяет целевую точку и зум ортографической камеры в течение указанного времени.
Обновляет контролы. Должен вызываться после любого изменения трансформаций камеры, или в цикле обновления, если установлены .autoRotate или .enableDamping.
О том как получить исходный код этого модуля читайте тут.