candlewick 0.1.0
A renderer
Loading...
Searching...
No Matches
Visualizer.h
Go to the documentation of this file.
1
4#pragma once
5
6#include "RobotScene.h"
8#include "../core/GuiSystem.h"
10#include "../core/Renderer.h"
13
14#include <pinocchio/visualizers/base-visualizer.hpp>
15#include <SDL3/SDL_init.h>
16#include <entt/entity/registry.hpp>
17
18namespace candlewick::multibody {
19
20namespace {
21 using pinocchio::visualizers::BaseVisualizer;
22 using pinocchio::visualizers::ConstVectorRef;
23 using pinocchio::visualizers::Vector3;
24 using pinocchio::visualizers::VectorXs;
25} // namespace
26
30 float rotSensitivity = 5e-3f;
31 float panSensitivity = 5e-3f;
32 float zoomSensitivity = 0.05f;
33 float localRotSensitivity = 0.01f;
34 bool yInvert = false;
35
36 // Mouse button modifiers
37 struct MouseConfig {
38 SDL_MouseButtonFlags panButton = SDL_BUTTON_MMASK;
40};
41
43 CameraControlParams &params);
44
51class Visualizer final : public BaseVisualizer {
52 bool m_cameraControl = true;
53 bool m_shouldExit = false;
54 entt::entity m_plane, m_grid, m_triad;
55 std::string m_currentScreenshotFilename{};
56 std::string m_currentVideoFilename{};
57
58 void render();
59
60 void displayPrecall() override {}
61
62 void displayImpl() override;
63
64 const Device &device() const { return renderer.device; }
65
66public:
67 static constexpr Radf DEFAULT_FOV = 55.0_degf;
68
69 struct EnvStatus {
70 bool show_our_about = false;
71 bool show_imgui_about = false;
72 bool show_plane = false;
73 };
74
75 using BaseVisualizer::setCameraPose;
76 entt::registry registry;
84
85 struct Config {
86 Uint32 width;
87 Uint32 height;
88 SDL_GPUTextureFormat depth_stencil_format = SDL_GPU_TEXTUREFORMAT_D16_UNORM;
89 };
90
94
96 void loadViewerModel() override;
97
98 Visualizer(const Config &config, const pin::Model &model,
99 const pin::GeometryModel &visual_model,
100 GuiSystem::GuiBehavior gui_callback);
101
102 Visualizer(const Config &config, const pin::Model &model,
103 const pin::GeometryModel &visual_model)
104 : Visualizer(config, model, visual_model,
105 [this](auto &) { this->defaultGuiCallback(); }) {}
106
107 ~Visualizer() override;
108
109 void setCameraTarget(const Eigen::Ref<const Vector3> &target) override;
110
111 void setCameraPosition(const Eigen::Ref<const Vector3> &position) override;
112
113 void setCameraPose(const Eigen::Ref<const Matrix4> &pose) override;
114
115 void enableCameraControl(bool v) override { m_cameraControl = v; }
116
118
119 [[nodiscard]] bool shouldExit() const noexcept { return m_shouldExit; }
120
121 void takeScreenshot(std::string_view filename);
122
123 void startRecording(std::string_view filename);
124
126
128 void clean() override {
129 robotScene.clearEnvironment();
130 robotScene.clearRobotGeometries();
131 }
132
133private:
134 media::TransferBufferPool m_transferBuffers;
135 media::VideoRecorder m_videoRecorder;
136};
137
138} // namespace candlewick::multibody
Scene for organizing debug entities and render systems.
Definition DebugScene.h:42
Definition GuiSystem.h:11
std::function< void(const Renderer &)> GuiBehavior
Definition GuiSystem.h:16
Transfer buffer for the texture downloader.
Definition WriteTextureToImage.h:19
Definition VideoRecorder.h:20
A render system for Pinocchio robot geometries using Pinocchio.
Definition RobotScene.h:50
void clean() override
Clear objects.
Definition Visualizer.h:128
void startRecording(std::string_view filename)
DebugScene debugScene
Definition Visualizer.h:80
bool shouldExit() const noexcept
Definition Visualizer.h:119
RobotScene robotScene
Definition Visualizer.h:79
void defaultGuiCallback()
Default GUI callback for the Visualizer; provide your own callback to the Visualizer constructor to c...
CameraControlParams cameraParams
Definition Visualizer.h:82
void setCameraTarget(const Eigen::Ref< const Vector3 > &target) override
Visualizer(const Config &config, const pin::Model &model, const pin::GeometryModel &visual_model)
Definition Visualizer.h:102
entt::registry registry
Definition Visualizer.h:76
CylindricalCamera controller
Definition Visualizer.h:81
EnvStatus envStatus
Definition Visualizer.h:83
Visualizer(const Config &config, const pin::Model &model, const pin::GeometryModel &visual_model, GuiSystem::GuiBehavior gui_callback)
static constexpr Radf DEFAULT_FOV
Definition Visualizer.h:67
void takeScreenshot(std::string_view filename)
Renderer renderer
Definition Visualizer.h:77
void setCameraPose(const Eigen::Ref< const Matrix4 > &pose) override
void setCameraPosition(const Eigen::Ref< const Vector3 > &position) override
GuiSystem guiSystem
Definition Visualizer.h:78
void enableCameraControl(bool v) override
Definition Visualizer.h:115
Rad< float > Radf
Definition math_types.h:125
Support for the Pinocchio rigid-body algorithms library and the Coal collision detection library.
Definition Components.h:5
void guiAddCameraParams(CylindricalCamera &controller, CameraControlParams &params)
Definition CameraControls.h:68
RAII wrapper for SDL_GPUDevice.
Definition Device.h:17
The Renderer class provides a rendering context for a graphical application.
Definition Renderer.h:20
SDL_MouseButtonFlags panButton
Definition Visualizer.h:38
struct candlewick::multibody::CameraControlParams::MouseConfig mouseButtons
float localRotSensitivity
Definition Visualizer.h:33
float panSensitivity
Definition Visualizer.h:31
float zoomSensitivity
Definition Visualizer.h:32
float rotSensitivity
Definition Visualizer.h:30
bool yInvert
Definition Visualizer.h:34
Uint32 height
Definition Visualizer.h:87
Uint32 width
Definition Visualizer.h:86
SDL_GPUTextureFormat depth_stencil_format
Definition Visualizer.h:88
bool show_plane
Definition Visualizer.h:72
bool show_our_about
Definition Visualizer.h:70
bool show_imgui_about
Definition Visualizer.h:71