Draw 3D Debug Points, Lines, and Spheres: Visualize Your Algorithm in Action
UE4 comes with awesome 3D Drawing features for drawing anywhere in the world!
I consider these tools essential for debugging any algorithm or custom game feature that you are creating.
Draw Debug tools are how you can easily visualize what your code is doing.
Draw Debug helps you see the transition from 2d words to 3D shapes and movement through 3D space
First of all, we need to include "DrawDebugHelpers.h" to use these utilities.
ENGINE_API void DrawDebugPoint( const UWorld* InWorld, FVector const& Position, float Size, FColor const& PointColor, bool bPersistentLines = false, float LifeTime=-1.f, uint8 DepthPriority = 0 );
DrawDebugPoint( GetWorld(), Location, 20, //size FColor(255,0,255), //pink false, //persistent (never goes away) 0.03 //point leaves a trail on moving object );
You can choose how thick the line should be, Thank You Epic!
ENGINE_API void DrawDebugLine( const UWorld* InWorld, FVector const& LineStart, FVector const& LineEnd, FColor const& Color, bool bPersistentLines = false, float LifeTime=-1.f, uint8 DepthPriority = 0, float Thickness = 0.f );
//in a non-Static class //Draw the Line! DrawDebugLine( GetWorld(), LinkStart, LinkEnd, FColor(255,0,0), false, -1, 0, 12.333 );
Draw 3D Sphere
You can choose how detailed the sphere is!
ENGINE_API void DrawDebugSphere( const UWorld* InWorld, FVector const& Center, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = false, float LifeTime=-1.f, uint8 DepthPriority = 0 );
//in a non-Static class //Start Point DrawDebugSphere( GetWorld(), SphereCenter, 24, 32, FColor(255,0,0) );
You can set the lifetime in seconds,
but if you are drawing every tick make sure you do NOT do this,
or you are creating way more lines than you need to be :)
bool bPersistentLines = false
if you set this parameter to true, debug object stay in world permanently until you call somewhere:
Using this combination you can achieve that lines persist even when simulation is paused and your draw-debug-lines functions in Tick() stops to calling, so you can quietly study your lines.
In this video, toward the middle (3:05), I show my in-game 3D Kismet system,
and I am using draw debug sphere and draw debug line for the links between the 3D objects :)
All Draw Debug Functions
See DrawDebugHelpers.h for all the available 3D Debug drawing helpers!
Enjoy these Draw tools, some of my favorite functions!