This plugin implements a 3D Cursor in the Godot Engine, inspired by Blender’s 3D cursor functionality. It provides an intuitive and precise way to place and position nodes within a 3D scene, improving the overall workflow for 3D level design.
- Intuitive 3D Cursor placement directly in the editor
- Precise node placement for all
Node3D-based nodes - Multiple cursor actions via Pie Menu, Command Palette and Settings Dock
- Customizable cursor appearance and behavior
- Multiple independent 3D Cursor instances per scene
- Editor-only functionality (no runtime impact)
- 3D Cursor Placement: Use
Shift + Right Clickto place the 3D Cursor in a 3D scene. The cursor can be placed onCSGShape3Dnodes as well as any mesh-based nodes. Compatible with Godot’s standard editor gizmos. - Node Placement at Cursor: New nodes inheriting from
Node3Dare automatically positioned at the active cursor's location instead of the scene or parent node's origin. If the active cursor is hidden or disabled via an action, this functionality is disabled. - Additional Commands: Multiple cursor actions are accessible through the Pie Menu (
Shift + S), the Command Palette (Ctrl + Shift + P) and the Settings Dock. - Customizable Appearance:
- By default, two labels are displayed on every cursor, with options to scale them together with the cursor or keep them fixed.
- The cursor itself is scalable to fit different scene requirements.
- Settings are stored per 3D Cursor instance and saved internally.
- Scene Compatibility: The 3D Cursor can be placed independently across multiple scenes without limitations. If the plugin is disabled, opening a scene containing 3D Cursor instances will cause them to free themselves.
- Editor Exclusive: 3D Cursor instances are editor-only and will not be displayed in-game.
The Pie Menu provides quick access to common 3D Cursor actions directly within the editor.
- Access the Pie Menu via
Shift + Swhen a 3D Cursor instance is present in the current scene and assigned as the active cursor. - Either hold
Shift + S, hover over the desired action and release the shortcut to invoke it, or simply click the desired action.
- Physicsless: Does not require collision shapes to calculate the mouse click position, allowing physics to run on another thread. Compatible with Terrain3D by TokisanGames.
- Physics (Legacy): Requires collision shapes to calculate the mouse click position. Physics must not run on another thread. Partially compatible with Terrain3D by TokisanGames (see issue
).
- The active cursor is always the most recently created cursor unless cleared manually or removed.
- Clicking the active cursor field in the Settings Dock or dragging a 3D Cursor instance onto it will set a new active cursor.
Left Clickselects the active cursor in both the scene tree and the editor.Double Left Clickturns the camera towards the active cursor.Ctrl + Left Clickselects the active cursor, turns the camera towards it and zooms in.Alt + Left Clickopens a node selector window to choose a 3D Cursor instance as the new active cursor.
To work with Terrain3D by TokisanGames, enable the extension in the Settings Dock and add the required group to each Terrain3D instance in the scene using the provided button.
- All cursor actions are also accessible via dedicated buttons in the Settings Dock.
- The Move Active 3D Cursor to ... button is special:
- It can open a node selector window to choose any
Node3D - Or accept dragged nodes or object properties
- It can open a node selector window to choose any
Allowed object property types:
PackedVector2Array,PackedVector3Array,PackedVector4Array- Only the first element is used
- Default mapping:
x → x,y → y,0 → z - Hold
Shiftto use:x → x,0 → y,y → z
Transform2D,Transform3DVector2,Vector2i- Default mapping:
x → x,y → y,0 → z - Hold
Shiftto use:x → x,0 → y,y → z
- Default mapping:
Vector3,Vector3i- Mapping:
x → x,y → y,z → z
- Mapping:
Vector4,Vector4i- Mapping:
x → x,y → y,z → z(wis discarded)
- Mapping:
- Specially structured
Dictionary- Must contain keys
x,yandz(case-insensitive) - Values must be of type
floatorint
- Must contain keys
Dragging a valid node or object property onto the button reveals the extracted target position below it.
- Enable the plugin
- Within a 3D scene, use
Shift + Right Clickon any mesh-based node or node inheriting fromCSGShape3Dto place a 3D Cursor - Use
Shift + Sto open the Pie Menu and access 3D Cursor actions - Use
Ctrl + Shift + Right Clickto place additional 3D Cursors - Assign different 3D Cursors as active by dragging them into the active cursor field in the Settings Dock
-
After using
Ctrl + Left Clickon the active cursor field (selecting the cursor, rotating the camera and zooming in), the editor may keep the previous navigation distance internally if the camera was zoomed out beforehand. This can result in an excessively high panning speed.Workaround: Press
Fto reset the editor focus and restore the expected navigation behavior. -
A more robust solution is being investigated, but this behavior is currently caused by editor-internal state handling.
- Godot 4.2 or newer
- 3D projects
- Open the Asset Library in the Godot editor
- Search for "Godot 3D Cursor" by Marco-
- Download and enable the plugin in Project Settings → Plugins
- Download or clone this repository
- Copy the
addonsfolder into your project - Enable the plugin in Project Settings → Plugins
Feedback, bug reports, and contributions are very welcome. Feel free to open an issue or pull request.
This plugin is open-source and licensed under the ISC License. See LICENSE for more details.
If you find this plugin useful and would like to support my work, you can do so on Ko-fi:












