OrbitControls

Элементы управления орбитой позволяют камере двигаться по орбите вокруг целевого объекта.

Пример

misc / controls / orbit
var renderer = new v3d.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); var scene = new v3d.Scene(); var camera = new v3d.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000); var controls = new v3d.OrbitControls(camera); //controls.update() must be called after any manual changes to the camera's transform camera.position.set(0, 20, 100); controls.update(); function animate() { requestAnimationFrame(animate); // required if controls.enableDamping or controls.autoRotate are set to true controls.update(); renderer.render(scene, camera); }

Конструктор

OrbitControls(object, domElement)

object: (требуется) Камера, которой необходимо управлять.

domElement: (необязательно) Элемент HTML, используемый для слушателей событий. По умолчанию это весь документ, однако если вы хотите, чтобы элементы управления работали только над определенным элементом (например, холстом), вы можете указать это здесь.

Свойства

.autoRotate : Boolean

Установите значение true для автоматического вращения вокруг целевого объекта.
Обратите внимание, что если эта функция включена, вы должны вызвать .update () в цикле анимации.

.autoRotateSpeed : Float

Скорость вращения вокруг целевого объекта, если .autoRotate : Booleanравно true. По умолчанию 2.0, что соответствует 30 секундам на вращение при 60 кадр/с.
Обратите внимание, что если включено .autoRotate : Boolean, необходимо вызвать .update () в цикле анимации.

.dampingFactor : Float

Инерция демпфирования, используемая, если .enableDamping : Booleanустановлено в true.
Обратите внимание, что для того, чтобы это сработало, вы должны вызвать .update () в цикле анимации.

.domElement : HTMLDOMElement

Элемент HTMLDOMElement, используемый для прослушивания событий мыши/прикосновения. Он должен быть передан в конструкторе; изменение его здесь не приведет к установке новых слушателей событий. По умолчанию это весь документ.

.enabled : Boolean

Включены ли элементы управления или нет.

.enableDamping : Boolean

Установите значение true, чтобы включить демпфирование (инерцию), которое можно использовать для придания чувства веса элементам управления. По умолчанию установлено значение false.
Обратите внимание, что если эта функция включена, необходимо вызвать .update () в цикле анимации.

.enableKeys : Boolean

Включите или отключите использование элементов управления с клавиатуры.

.enablePan : Boolean

Включить или отключить панорамирование камеры. По умолчанию - true.

.enableRotate : Boolean

Включить или отключить поворот камеры по горизонтали и вертикали. По умолчанию - true.
Обратите внимание, что можно отключить одну ось, установив минимальное и максимальное значение polar angle или azimuth angle на одно и то же значение, что приведет к фиксации вертикального или горизонтального вращения на этом значении.

.enableZoom : Boolean

Включение или отключение масштабирования (dollying) камеры.

.keyPanSpeed : Float

Скорость панорамирования камеры при использовании клавиатуры. По умолчанию - 7,0 пикселей за одно нажатие клавиши.

.keys : Object

Этот объект содержит ссылки на коды клавиш для управления панорамированием камеры. По умолчанию это 4 клавиши со стрелками. controls.keys = { LEFT: 37, //left arrow UP: 38, // up arrow RIGHT: 39, // right arrow BOTTOM: 40 // down arrow } Полный список кодов ключей смотрите на this page.

.maxAzimuthAngle : Float

Как далеко вы можете двигаться по горизонтали, верхний предел. Диапазон - от Math.PI до Math.PI (или бесконечность для отсутствия предела), по умолчанию - Infinity(Бесконечность);

.maxDistance : Float

Как далеко вы можете отдалиться (только для PerspectiveCamera). По умолчанию - Infinity(Бесконечность).

.maxPolarAngle : Float

Как далеко вы можете двигаться по вертикали, верхний предел. Диапазон от 0 до Math.PI радиан, по умолчанию - Math.PI.

.maxZoom : Float

Насколько можно уменьшить масштаб изображения (только для OrthographicCamera). По умолчанию - Infinity(Бесконечность).

.minAzimuthAngle : Float

Как далеко вы можете двигаться по горизонтали, нижний предел. Диапазон от - Math.PI до Math.PI (или - Infinity для отсутствия предела), по умолчанию - Infinity(Бесконечность);

.minDistance : Float

Насколько далеко вы можете наклоняться (только для PerspectiveCamera). По умолчанию 0.

.minPolarAngle : Float

Как далеко вы можете двигаться по вертикали, нижний предел. Диапазон от 0 до Math.PI радиан, по умолчанию - 0.

.minZoom : Float

Насколько сильно можно увеличить масштаб изображения (только для OrthographicCamera). По умолчанию 0.

.mouseButtons : Object

Этот объект содержит ссылки на кнопки мыши, используемые для элементов управления. controls.mouseButtons = { ROTATE: v3d.MOUSE.LEFT, ZOOM: v3d.MOUSE.MIDDLE, PAN: v3d.MOUSE.RIGHT }

.object : Camera

Камера (или другой объект), которой управляют.

.position0 : Vector3

Используется внутренними методами .saveState и .reset.

.rotateSpeed : Float

Скорость вращения. По умолчанию - 1.

.screenSpacePanning : Boolean

Определяет, как переводится положение камеры при панорамировании. Если true, камера поворачивается в пространстве экрана. В противном случае камера поворачивается в плоскости, ортогональной направлению движения камеры вверх. По умолчанию true.

.target0 : Vector3

Используется внутренними методами .saveState и .reset.

.targetObj : Object3D

Объект3D, положение которого в мировом пространстве служит точкой фокуса элементов управления, а .object вращается вокруг него. Его можно обновить вручную в любой момент, чтобы изменить фокус элементов управления.

.zoom0 : Float

Используется внутренними методами .saveState и .reset.

.zoomSpeed : Float

Скорость масштабирования/приближения. По умолчанию 1.

Методы

.dispose() → null

Удалите все слушатели событий.

.getAzimuthalAngle() → radians

Получение текущего горизонтального вращения, в радианах.

.getPolarAngle() → radians

Получение текущего вертикального вращения, в радианах.

.reset() → null

Возвращает элементы управления к их состоянию либо после последнего вызова .saveState, либо к начальному состоянию.

.saveState() → null

Сохраните текущее состояние элементов управления. Впоследствии его можно восстановить с помощью .reset.

.tween(toPosition : Vector3, toTarget : Vector3, time : Number, finishCb : Function, movementType : Number) → null

toPosition — Новое положение камеры.
toTarget — Новая целевая точка.
time — Длина анимации твина.
finishCb — Обратный вызов, который будет вызван после завершения анимации твина.
movementType — Интерполяция движения. Может быть v3d.TweenLinear (default) или v3d.TweenSpherical.

Изменение текущего положения камеры и целевой точки на указанное новое положение и цель плавно в течение указанного времени.

.update() → false

Обновить элементы управления. Должно вызываться после любого ручного изменения трансформации камеры, или в цикле обновления, если установлены .autoRotate или .enableDamping.

Исходный файл

О том как получить исходный код этого модуля читайте тут.