Debug Drawing Extension API#

About#

This Debug Drawing Extension API API is used to coordinate groups of lines and points on the screen. Use this API instead of Omniverse’s built-in debug drawing API to have greater control over how the geometry is drawn. The 3D geometry drawn by this remains persistent across frames and is only cleared when desired (unlike the built-in debug drawer).

API Documentation#

See the API Documentation for complete usage information.

Tutorials & Examples#

The following screenshots showcase how the different geometries are drawn:

Points#

Drawing batches of points with different RGBA and radius values:

 1import random
 2from omni.isaac.debug_draw import _debug_draw
 3
 4draw = _debug_draw.acquire_debug_draw_interface()
 5
 6N = 10000
 7point_list_1 = [
 8    (random.uniform(-10, 10), random.uniform(-10, 10), random.uniform(-10, 10)) for _ in range(N)
 9]
10point_list_2 = [
11    (random.uniform(-10, 10), random.uniform(10, 30), random.uniform(-10, 10)) for _ in range(N)
12]
13point_list_3 = [
14    (random.uniform(-10, 10), random.uniform(-30, -10), random.uniform(-10, 10)) for _ in range(N)
15]
16colors = [(random.uniform(0.5, 1), random.uniform(0.5, 1), random.uniform(0.5, 1), 1) for _ in range(N)]
17sizes = [random.randint(1, 50) for _ in range(N)]
18draw.draw_points(point_list_1, [(1, 0, 0, 1)] * N, [10] * N)
19draw.draw_points(point_list_2, [(0, 1, 0, 1)] * N, [10] * N)
20draw.draw_points(point_list_3, colors, sizes)
Draw Points

Lines#

Drawing batches of lines with different RGBA and width values:

 1import random
 2from omni.isaac.debug_draw import _debug_draw
 3
 4draw = _debug_draw.acquire_debug_draw_interface()
 5
 6N = 10000
 7point_list_1 = [
 8    (random.uniform(10, 30), random.uniform(-10, 10), random.uniform(-10, 10)) for _ in range(N)
 9]
10point_list_2 = [
11    (random.uniform(10, 30), random.uniform(-10, 10), random.uniform(-10, 10)) for _ in range(N)
12]
13colors = [(random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), 1) for _ in range(N)]
14sizes = [random.randint(1, 25) for _ in range(N)]
15draw.draw_lines(point_list_1, point_list_2, colors, sizes)
Draw Lines

Splines#

Drawing splines as filled or dashed between a set of points:

 1import random
 2from omni.isaac.debug_draw import _debug_draw
 3
 4draw = _debug_draw.acquire_debug_draw_interface()
 5
 6point_list_1 = [
 7    (random.uniform(-30, -10), random.uniform(-10, 10), random.uniform(-10, 10)) for _ in range(10)
 8]
 9draw.draw_lines_spline(point_list_1, (1, 1, 1, 1), 10, False)
10point_list_2 = [
11    (random.uniform(-30, -10), random.uniform(-10, 10), random.uniform(-10, 10)) for _ in range(10)
12]
13draw.draw_lines_spline(point_list_2, (1, 1, 1, 1), 1, True)
Draw Splines