File: DragControls.md | Updated: 11/15/2025
This class can be used to provide a drag'n'drop interaction.
const controls = new DragControls( objects, camera, renderer.domElement );
// add event listener to highlight dragged objects
controls.addEventListener( 'dragstart', function ( event ) {
event.object.material.emissive.set( 0xaaaaaa );
} );
controls.addEventListener( 'dragend', function ( event ) {
event.object.material.emissive.set( 0x000000 );
} );
DragControls is an addon, and must be imported explicitly, see Installation#Addons.
import { DragControls } from 'three/addons/controls/DragControls.js';
Constructs a new controls instance.
objects | An array of draggable 3D objects.
---|---
camera | The camera of the rendered scene.
domElement | The HTML DOM element used for event listeners. Default is null.
An array of draggable 3D objects.
The raycaster used for detecting 3D objects.
Whether children of draggable objects can be dragged independently from their parent.
Default is true.
The speed at which the object will rotate when dragged in rotate mode. The higher the number the faster the rotation.
Default is 1.
This option only works if the objects array contains a single draggable group object. If set to true, the controls does not transform individual objects but the entire group.
Default is false.
Fires when the user drags a 3D object.
Fires when the user has finished dragging a 3D object.
Fires when the pointer is moved out of a 3D object.
Fires when the pointer is moved onto a 3D object, or onto one of its children.