@types/three
Version:
TypeScript definitions for three
309 lines (255 loc) • 9.32 kB
TypeScript
import { Camera, ColorRepresentation, Controls, Mesh, Object3D, Quaternion, Raycaster, Vector3 } from "three";
export type TransformControlsMode = "translate" | "rotate" | "scale";
export interface TransformControlsEventMap {
/**
* Fires if any type of change (object or property change) is performed. Property changes are separate events you
* can add event listeners to. The event type is "propertyname-changed".
*/
change: {};
/**
* Fires if a pointer (mouse/touch) becomes active.
*/
mouseDown: { mode: TransformControlsMode };
/**
* Fires if a pointer (mouse/touch) is no longer active.
*/
mouseUp: { mode: TransformControlsMode };
/**
* Fires if the controlled 3D object is changed.
*/
objectChange: {};
"camera-changed": { value: unknown };
"object-changed": { value: unknown };
"enabled-changed": { value: unknown };
"axis-changed": { value: unknown };
"mode-changed": { value: unknown };
"translationSnap-changed": { value: unknown };
"rotationSnap-changed": { value: unknown };
"scaleSnap-changed": { value: unknown };
"space-changed": { value: unknown };
"size-changed": { value: unknown };
"dragging-changed": { value: unknown };
"showX-changed": { value: unknown };
"showY-changed": { value: unknown };
"showZ-changed": { value: unknown };
"minX-changed": { value: unknown };
"maxX-changed": { value: unknown };
"minY-changed": { value: unknown };
"maxY-changed": { value: unknown };
"minZ-changed": { value: unknown };
"maxZ-changed": { value: unknown };
"worldPosition-changed": { value: unknown };
"worldPositionStart-changed": { value: unknown };
"worldQuaternion-changed": { value: unknown };
"worldQuaternionStart-changed": { value: unknown };
"cameraPosition-changed": { value: unknown };
"cameraQuaternion-changed": { value: unknown };
"pointStart-changed": { value: unknown };
"pointEnd-changed": { value: unknown };
"rotationAxis-changed": { value: unknown };
"rotationAngle-changed": { value: unknown };
"eye-changed": { value: unknown };
}
/**
* This class can be used to transform objects in 3D space by adapting a similar interaction model of DCC tools like
* Blender. Unlike other controls, it is not intended to transform the scene's camera.
*
* TransformControls expects that its attached 3D object is part of the scene graph.
*/
declare class TransformControls extends Controls<TransformControlsEventMap> {
/**
* The camera of the rendered scene.
*/
camera: Camera;
/**
* The current transformation axis.
*/
axis: "X" | "Y" | "Z" | "E" | "XY" | "YZ" | "XZ" | "XYZ" | "XYZE" | null;
/**
* The current transformation mode. Possible values are "translate", "rotate" and "scale". Default is `translate`.
*/
mode: TransformControlsMode;
/**
* By default, 3D objects are continuously translated. If you set this property to a numeric value (world units),
* you can define in which steps the 3D object should be translated. Default is `null`.
*/
translationSnap: number | null;
/**
* By default, 3D objects are continuously rotated. If you set this property to a numeric value (radians), you can
* define in which steps the 3D object should be rotated. Default is `null`.
*/
rotationSnap: number | null;
/**
* By default, 3D objects are continuously scaled. If you set this property to a numeric value, you can define in
* which steps the 3D object should be scaled. Default is `null`.
*/
scaleSnap: number | null;
/**
* Defines in which coordinate space transformations should be performed. Possible values are "world" and "local".
* Default is `world`.
*/
space: "world" | "local";
/**
* The size of the helper UI (axes/planes). Default is *1*.
*/
size: number;
/**
* Whether or not dragging is currently performed. Read-only property.
*/
dragging: boolean;
/**
* Whether or not the x-axis helper should be visible. Default is `true`.
*/
showX: boolean;
/**
* Whether or not the y-axis helper should be visible. Default is `true`.
*/
showY: boolean;
/**
* Whether or not the z-axis helper should be visible. Default is `true`.
*/
showZ: boolean;
/**
* The minimum allowed X position during translation. Default is `-Infinity`.
*/
minx: number;
/**
* The maximum allowed X position during translation. Default is `Infinity`.
*/
maxX: number;
/**
* The minimum allowed Y position during translation. Default is `-Infinity`.
*/
minY: number;
/**
* The maximum allowed Y position during translation. Default is `Infinity`.
*/
maxY: number;
/**
* The minimum allowed Z position during translation. Default is `-Infinity`.
*/
minZ: number;
/**
* The maximum allowed Z position during translation. Default is `Infinity`.
*/
maxZ: number;
/**
* Creates a new instance of TransformControls.
* @param camera The camera of the rendered scene.
* @param domElement The HTML element used for event listeners. (optional)
*/
constructor(camera: Camera, domElement?: HTMLElement);
/**
* Returns the visual representation of the controls. Add the helper to your scene to visually transform the
* attached 3D object.
*/
getHelper(): TransformControlsRoot;
pointerHover(pointer: PointerEvent | null): void;
pointerDown(pointer: PointerEvent | null): void;
pointerMove(pointer: PointerEvent | null): void;
pointerUp(pointer: PointerEvent | null): void;
/**
* Sets the 3D object that should be transformed and ensures the controls UI is visible.
* @param object The 3D object that should be transformed.
*/
attach(object: Object3D): this;
/**
* Removes the current 3D object from the controls and makes the helper UI invisible.
*/
detach(): this;
/**
* Resets the object's position, rotation and scale to when the current transform began.
*/
reset(): void;
/**
* Returns the {@link Raycaster} object that is used for user interaction. This object is shared between all
* instances of TransformControls. If you set the [.layers]{@link Object3D.layers} property of the
* TransformControls, you will also want to set the [.layers]{@link Raycaster.layers} property on the
* {@link Raycaster} with a matching value, or else the TransformControls won't work as expected.
*/
getRaycaster(): Raycaster;
/**
* Returns the transformation mode.
*/
getMode(): TransformControlsMode;
/**
* Sets the transformation mode.
* @param mode The transformation mode.
*/
setMode(mode: TransformControlsMode): void;
/**
* Sets the translation snap.
* @param translationSnap The translation snap.
*/
setTranslationSnap(translationSnap: number | null): void;
/**
* Sets the rotation snap.
* @param rotationSnap The rotation snap.
*/
setRotationSnap(rotationSnap: number | null): void;
/**
* Sets the scale snap.
* @param scaleSnap The scale snap.
*/
setScaleSnap(scaleSnap: number | null): void;
/**
* Sets the size of the helper UI.
* @param size The size of the helper UI.
*/
setSize(size: number): void;
/**
* Sets the coordinate space in which transformations are applied.
* @param space The coordinate space in which transformations are applied.
*/
setSpace(space: "world" | "local"): void;
/**
* Sets the colors of the control's gizmo.
*
* @param {number|Color|string} xAxis - The x-axis color.
* @param {number|Color|string} yAxis - The y-axis color.
* @param {number|Color|string} zAxis - The z-axis color.
* @param {number|Color|string} active - The color for active elements.
*/
setColors(
xAxis: ColorRepresentation,
yAxis: ColorRepresentation,
zAxis: ColorRepresentation,
active: ColorRepresentation,
): void;
}
declare class TransformControlsRoot extends Object3D {
readonly isTransformControlsRoot: true;
controls: TransformControls;
constructor(controls: TransformControls);
dispose(): void;
}
declare class TransformControlsGizmo extends Object3D {
isTransformControlsGizmo: true;
gizmo: {
translate: Object3D;
rotate: Object3D;
scale: Object3D;
};
helper: {
translate: Object3D;
rotate: Object3D;
scale: Object3D;
};
picker: {
translate: Object3D;
rotate: Object3D;
scale: Object3D;
};
constructor();
}
declare class TransformControlsPlane extends Mesh {
readonly isTransformControlsPlane: true;
constructor();
mode: TransformControlsMode;
axis: "X" | "Y" | "Z" | "XY" | "YZ" | "XZ" | "XYZ" | "E";
space: "local" | "world";
eye: Vector3;
worldPosition: Vector3;
worldQuaternion: Quaternion;
}
export { TransformControls, TransformControlsGizmo, TransformControlsPlane };