three-combo-controls
Orbit & first person camera controller for three.js
Install
$ npm install @cognite/three-combo-controls
or
$ yarn add @cognite/three-combo-controls
Usage
import ComboControls from '@cognite/three-combo-controls';
import * as THREE from 'three';
const controls = new ComboControls(camera, domElement);
const clock = new THREE.Clock();
function animate() {
controls.update(clock.getDelta());
}
Mouse actions:
- Left click & drag to rotate
- Right click & drag to pan
- Wheel to zoom
Touch actions:
- One finger to rotate
- Two fingers to pan & zoom (pinch)
Keyboard actions:
- w & s to zoom
- a, d, q & e to pan
- Arrows to rotate (first person)
Usage (advance)
controls.dispose();
controls.addEventListener('cameraChange', (event) => {
const { position, target } = event.camera;
});
controls.enabled = true;
controls.enableDamping = true;
controls.dampingFactor = 0.2;
controls.dynamicTarget = false;
controls.dollyFactor = 0.98;
controls.minDistance = 1;
controls.maxDistance = Infinity;
controls.minPolarAngle = 0;
controls.maxPolarAngle = Math.PI;
controls.minAzimuthAngle = -Infinity;
controls.maxAzimuthAngle = Infinity;
controls.enableKeyboardNavigation = true;
controls.keyboardDollySpeed = 2;
controls.keyboardPanSpeed = 10;
controls.keyboardSpeedFactor = 3;
controls.firstPersonRotationFactor = 0.4;
controls.pinchPanSpeed = 1;
controls.pinchEpsilon = 2;
controls.pointerRotationSpeedPolar = Math.PI / 360;
controls.pointerRotationSpeedAzimuth = Math.PI / 360;
controls.keyboardRotationSpeedAzimuth = 10 * Math.PI / 360;
controls.keyboardRotationSpeedPolar = 10 * Math.PI / 360;
controls.minZoom = 0;
controls.maxZoom = Infinity;
controls.orthographicCameraDollyFactor = 0.3;
License
Apache 2.0
Development
$ npm install
$ npm run start