From 034bb62986bf6fa895a3095b35a93217b63a755b Mon Sep 17 00:00:00 2001 From: Alessio Quaglino Date: Wed, 25 Oct 2023 10:16:40 -0700 Subject: [PATCH] Add `cam_intrinsic` to `mjvSceneState`. Add `frustum.xml` to engine_vis_state_test models. Fixes #1115. PiperOrigin-RevId: 576567292 Change-Id: I642c32a87427507580046d2d260263c689d50c99 --- doc/includes/references.h | 1 + include/mujoco/mjvisualize.h | 1 + include/mujoco/mjxmacro.h | 2 +- introspect/structs.py | 7 +++++++ test/engine/engine_vis_state_test.cc | 8 ++++++-- unity/Runtime/Bindings/MjBindings.cs | 1 + 6 files changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/includes/references.h b/doc/includes/references.h index fd0ad34d..3284ff9f 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -2201,6 +2201,7 @@ struct mjvSceneState_ { mjtNum* cam_fovy; mjtNum* cam_ipd; + float* cam_intrinsic; float* cam_sensorsize; mjtByte* light_directional; diff --git a/include/mujoco/mjvisualize.h b/include/mujoco/mjvisualize.h index e65563f3..3afcf369 100644 --- a/include/mujoco/mjvisualize.h +++ b/include/mujoco/mjvisualize.h @@ -486,6 +486,7 @@ struct mjvSceneState_ { mjtNum* cam_fovy; mjtNum* cam_ipd; + float* cam_intrinsic; float* cam_sensorsize; mjtByte* light_directional; diff --git a/include/mujoco/mjxmacro.h b/include/mujoco/mjxmacro.h index 9740a0d7..20e5882a 100644 --- a/include/mujoco/mjxmacro.h +++ b/include/mujoco/mjxmacro.h @@ -276,7 +276,7 @@ X ( int, cam_targetbodyid, ncam, 1 ) \ X ( int, cam_resolution, ncam, 2 ) \ XMJV( float, cam_sensorsize, ncam, 2 ) \ - X ( float, cam_intrinsic, ncam, 4 ) \ + XMJV( float, cam_intrinsic, ncam, 4 ) \ X ( mjtNum, cam_pos, ncam, 3 ) \ X ( mjtNum, cam_quat, ncam, 4 ) \ X ( mjtNum, cam_poscom0, ncam, 3 ) \ diff --git a/introspect/structs.py b/introspect/structs.py index 848d8e23..12dcfa39 100644 --- a/introspect/structs.py +++ b/introspect/structs.py @@ -6605,6 +6605,13 @@ STRUCTS: Mapping[str, StructDecl] = dict([ ), doc='', ), + StructFieldDecl( + name='cam_intrinsic', + type=PointerType( + inner_type=ValueType(name='float'), + ), + doc='', + ), StructFieldDecl( name='cam_sensorsize', type=PointerType( diff --git a/test/engine/engine_vis_state_test.cc b/test/engine/engine_vis_state_test.cc index bc43e8c2..48d48efd 100644 --- a/test/engine/engine_vis_state_test.cc +++ b/test/engine/engine_vis_state_test.cc @@ -33,12 +33,16 @@ static const char* const kHammockPath = "engine/testdata/hammock/hammock.xml"; static const char* const kTendonPath = "engine/testdata/island/tendon_wrap.xml"; -static const char* const kModelPath = "testdata/model.xml"; +static const char* const kFrustumPath = + "engine/testdata/vis_visualize/frustum.xml"; +static const char* const kModelPath = + "testdata/model.xml"; #define EXPECT_ZERO(exp) EXPECT_EQ(0, exp); TEST_F(MjvSceneStateTest, CanUpdateFromState) { - for (const char* path : {kHammockPath, kTendonPath, kModelPath}) { + for (const char* path : + {kHammockPath, kTendonPath, kModelPath, kFrustumPath}) { const std::string xml_path = GetTestDataFilePath(path); mjModel* model = mj_loadXML(xml_path.c_str(), nullptr, 0, 0); ASSERT_THAT(model, NotNull()); diff --git a/unity/Runtime/Bindings/MjBindings.cs b/unity/Runtime/Bindings/MjBindings.cs index d51b2403..ccf839ee 100644 --- a/unity/Runtime/Bindings/MjBindings.cs +++ b/unity/Runtime/Bindings/MjBindings.cs @@ -6132,6 +6132,7 @@ public unsafe struct model { public float* site_rgba; public double* cam_fovy; public double* cam_ipd; + public float* cam_intrinsic; public float* cam_sensorsize; public byte* light_directional; public byte* light_castshadow;