# Transform Controls
The [Transform Controls](https://threejs.org/docs/#examples/en/controls/TransformControls) are a set of three gizmos that can be used to translate, rotate and scale objects in the scene. It adapts a similar interaction model of DCC tools like Blender
## Usage
To use the Transform Controls, simply add the `TransformControls` component to your scene. You can pass the `templateRef`of the instance you want to control as a prop.
```vue{2,6,8}
```
::: warning
If you are using other controls ([OrbitControls](/cientos/controls/orbit-controls)) they will interfere with each other when dragging. To avoid this, you can set the `makeDefault` prop to `true` on the **OrbitControls**.
:::
## Modes
The Transform Controls can be used in three different modes:
### Translate

The default mode allows you to move the object around the scene.
```html
```
### Rotate

The rotate mode allows you to rotate the object around the scene.
```html
```
### Scale

The scale mode allows you to scale the object around the scene.
```html
```
## Props
| Prop | Description | Default |
| :------------------ | :-------------------------------------------------------------------------------------------- | ----------- |
| **object** | The instance [Object3D](https://threejs.org/docs/index.html#api/en/core/Object3D) to control. | `null` |
| **mode** | The mode of the controls. Can be `translate`, `rotate` or `scale`. | `translate` |
| **enabled** | If `true`, the controls will be enabled. | `true` |
| **axis** | The axis to use for the controls. Can be `X`, `Y`, `Z`, `XY`, `YZ`, `XZ`, `XYZ`. | `XYZ` |
| **space** | The space to use for the controls. Can be `local` or `world`. | `local` |
| **size** | The size of the controls. | `1` |
| **translationSnap** | The distance to snap to when translating. (World units) | `null` |
| **rotationSnap** | The angle to snap to when rotating. (Radians) | `null` |
| **scaleSnap** | The scale to snap to when scaling. | `null` |
| **showX** | If `true`, the X-axis helper will be shown. | `true` |
| **showY** | If `true`, the Y-axis helper will be shown. | `true` |
| **showZ** | If `true`, the Z-axis helper will be shown. | `true` |
## Events
| Event | Description |
| :--------------- | :------------------------------------------------------------- |
| **dragging** | Fired when the user starts or stops dragging the controls. |
| **change** | Fired when the user changes the controls. |
| **mouseDown** | Fired when the user clicks on the controls. |
| **mouseUp** | Fired when the user releases the mouse button on the controls. |
| **objectChange** | Fired when the user changes the object. |