UNDER DEVELOPMENT
Candlewick is a WIP library for a renderer based on SDL3's new GPU API.
Candlewick comes with some basic graphical features.
- Shadow mapping using directional shadow maps
- Screen-space ambient occlusion (SSAO)
- WIP: Screen-space shadows (SSS)
Candlewick visualization utilities for robotics based on Pinocchio.
You can load a Pinocchio model, its geometry model, and create a visualizer that can be used similar to the other visualizers included in pinocchio.visualize
.
Here's a Python example:
import example_robot_data as erd
import pinocchio as pin
import numpy as np
from candlewick.multibody import Visualizer, VisualizerConfig
robot = erd.load("ur10")
model: pin.Model = robot.model
data: pin.Data = robot.data
visual_model = robot.visual_model
config = VisualizerConfig()
config.width = 1280
config.height = 720
viz = Visualizer(config, model, visual_model)
q0 = pin.neutral(model)
viz.setCameraPose(pin.SE3.Identity())
viz.display(q0)
Candlewick depends mainly on:
- SDL3 for windowing, processing input events, and of course SDL GPU.
- EnTT for the entity-component system (ECS)
- eigenpy for Python bindings.
- FFmpeg for support for recording videos from the rendered graphics.
- For loading and visualizing robots:
- the Pinocchio rigid-body dynamics library (required for the
candlewick::multibody
classes and functions). - the pinocchio-visualizers header-only library, which provides a skeleton for creating a C++ visualizer for Pinocchio and a visitor used for Python bindings
- robot_descriptions_cpp, a suite of loaders for robots (required for some examples)
- the Pinocchio rigid-body dynamics library (required for the