[three-js] exposes real modules now via three/examples/jsm/… For example to import the Orbit, do

import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"


is the three.js OrbitControls from official repo examples


To install with npm do

npm install three
npm install three-orbitcontrols


All credit goes to OrbitControls.js contributors. See also official OrbitControls documentation.

I have just stolen the code and modified to export it as a module so you can do something like

const THREE = require('three')
const OrbitControls = require('three-orbitcontrols')
// ES6 also works, i.e.
// import OrbitControls from 'three-orbitcontrols'

// Init THREE scene (add your code)

const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000)
camera.position.z = 5

const renderer = new THREE.WebGLRenderer({ canvas })

const controls = new OrbitControls(camera, renderer.domElement)
controls.enableDamping = true
controls.dampingFactor = 0.25
controls.enableZoom = false

Please note that:

  1. You call OrbitControls directly instead of THREE.OrbitControls.
  2. This package does not depend directly on three.js, which is declared as a peer dependency.

See also examples:


See OrbiControls.js history here.

Please also note that this repo’s minor version equals three.js release number.


There is another package similar to this one: three-orbit-controls. I decided to create another package with a different approach, see this issue for the rationale.

I am using this package for my 3d tic tac toe canvas: see also online demo.


License is the same as three.js, i.e. MIT.