simvx.graphics.renderer.gizmo_pass

GPU render pass for transform gizmo overlays (translate, rotate, scale).

Builds per-frame vertex arrays for gizmo visuals and renders them with depth testing DISABLED so they always appear on top of the scene. Uses the same vertex format as debug lines: position (vec3) + colour (vec4).

Visual feedback:

  • Default axis colours: X=red, Y=green, Z=blue

  • Hover: hovered axis turns yellow

  • Active drag: active axis turns bright white, others dim to 30% opacity

Module Contents

Classes

GizmoRenderData

Per-frame data describing what gizmo to render.

GizmoPass

GPU render pass that draws gizmo overlays on top of the 3D scene.

Data

API

simvx.graphics.renderer.gizmo_pass.__all__

[‘GizmoPass’, ‘GizmoRenderData’]

simvx.graphics.renderer.gizmo_pass.log[source]

‘getLogger(…)’

class simvx.graphics.renderer.gizmo_pass.GizmoRenderData[source]

Per-frame data describing what gizmo to render.

position: numpy.ndarray

‘field(…)’

mode: int

0

hover_axis: int

None

active_axis: int

None

view_matrix: numpy.ndarray

‘field(…)’

proj_matrix: numpy.ndarray

‘field(…)’

axis_length: float

1.0

class simvx.graphics.renderer.gizmo_pass.GizmoPass(engine: Any)[source]

GPU render pass that draws gizmo overlays on top of the 3D scene.

Uses two pipelines: one for line segments (axis shafts, rotation rings) and one for triangles (arrowheads, cubes, plane handles). Both have depth testing disabled so gizmos always render on top.

Initialization

setup() None[source]

Create GPU pipelines for gizmo rendering.

render(cmd: Any, data: simvx.graphics.renderer.gizmo_pass.GizmoRenderData, extent: tuple[int, int]) None[source]

Build gizmo geometry and record draw commands.

cleanup() None[source]

Release all GPU resources.