Debug drawing utility for Godot
This is an add-on for debug drawing in 3D and for some 2D overlays, which is written in C++
and can be used with GDScript
or C#
.
Based on my previous addon, which was developed only for C#, and which was inspired by Zylann's GDScript addon
Documentation
Godot 3 version
Support me
Your support adds motivation to develop my public projects.
USDT-TRC20 TEw934PrsffHsAn5M63SoHYRuZo984EF6v
Features
3D:
- Arrow
- Billboard opaque square
- Box
- Camera Frustum
- Cylinder
- Gizmo
- Grid
- Line
- Line Path
- Line with Arrow
- Plane
- Points
- Position 3D (3 crossing axes)
- Sphere
2D:
- [Work in progress]
Overlay:
- Text (with grouping and coloring)
- FPS Graph
- Custom Graphs
Precompiled for:
- Windows
- Linux (built on Ubuntu 20.04)
- macOS (10.14+)
- Android (5.0+)
- Web (Firefox not supported)
Interactive Web Demo
Thanks to Nick Maltbie (nicholas-maltbie) (#24)
Warning
- Firefox most likely can't run this demo
Download
To download, use the Godot Asset Library or download the archive by clicking the button at the top of the main repository page: Code -> Download ZIP
, then unzip it to your project folder. Or use one of the stable versions from the GitHub Releases page (just download one of the Source Codes
in assets).
Installation
- Close editor
- Copy
addons/debug_draw_3d
to youraddons
folder, create it if the folder doesn't exist - Launch editor
Examples
More examples can be found in the examples_dd3d/
folder.
Simple test:
func _process(delta: float) -> void:
var _time = Time.get_ticks_msec() / 1000.0
var box_pos = Vector3(0, sin(_time * 4), 0)
var line_begin = Vector3(-1, sin(_time * 4), 0)
var line_end = Vector3(1, cos(_time * 4), 0)
DebugDraw3D.draw_box(box_pos, Vector3(1, 2, 1), Color(0, 1, 0))
DebugDraw3D.draw_line(line_begin, line_end, Color(1, 1, 0))
DebugDraw2D.set_text("Time", _time)
DebugDraw2D.set_text("Frames drawn", Engine.get_frames_drawn())
DebugDraw2D.set_text("FPS", Engine.get_frames_per_second())
DebugDraw2D.set_text("delta", delta)
API
This project has a separate documentation page.
Also, a list of all functions is available in the documentation inside the editor (see DebugDraw3D
and DebugDraw2D
).
Known issues and limitations
Enabling occlusion culing can lower fps instead of increasing it. At the moment I do not know how to speed up the calculation of the visibility of objects.
The text in the keys and values of a text group cannot contain multi-line strings.
The entire text overlay can only be placed in one corner, unlike DataGraphs
.
Frustum of Camera3D does not take into account the window size from ProjectSettings.
The version for Godot 4.0 requires explicitly specifying the exact data types, otherwise errors may occur.