From 0add985a15e237bfedea17fd518fbb414aa3b465 Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Tue, 3 Feb 2026 16:05:17 -0800 Subject: [PATCH] Handle null camera and vis_option. PiperOrigin-RevId: 865088406 Change-Id: I4a3bf7f6cb696de1461bc53fd5d77b941ea0c0c5 --- src/experimental/platform/renderer.cc | 11 +++++++++++ src/experimental/platform/renderer.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/experimental/platform/renderer.cc b/src/experimental/platform/renderer.cc index 9ba42230..91bdb247 100644 --- a/src/experimental/platform/renderer.cc +++ b/src/experimental/platform/renderer.cc @@ -91,6 +91,17 @@ void Renderer::Render(const mjModel* model, mjData* data, return; } + mjvCamera default_cam; + if (camera == nullptr) { + mjv_defaultCamera(&default_cam); + camera = &default_cam; + } + mjvOption default_opt; + if (vis_option == nullptr) { + mjv_defaultOption(&default_opt); + vis_option = &default_opt; + } + mjv_updateScene(model, data, vis_option, perturb, camera, mjCAT_ALL, &scene_); diff --git a/src/experimental/platform/renderer.h b/src/experimental/platform/renderer.h index dca5369f..a43f1d16 100644 --- a/src/experimental/platform/renderer.h +++ b/src/experimental/platform/renderer.h @@ -57,7 +57,7 @@ class Renderer { using Seconds = std::chrono::duration; using Milliseconds = std::chrono::duration; - explicit Renderer(void* native_window); + explicit Renderer(void* native_window = nullptr); ~Renderer(); Renderer(const Renderer&) = delete;