From 32e08f9507c9bdc5a1a5411c6fa9f0346542b038 Mon Sep 17 00:00:00 2001 From: Sam Haves Date: Thu, 2 Oct 2025 08:52:50 -0700 Subject: [PATCH] Expose userfacenormal to mjsMesh PiperOrigin-RevId: 814253177 Change-Id: I644974feea0722f03e7c3b01be7b702dba233f0a --- doc/includes/references.h | 1 + include/mujoco/mjspec.h | 1 + python/mujoco/introspect/structs.py | 7 +++++++ src/user/user_mesh.cc | 2 ++ 4 files changed, 11 insertions(+) diff --git a/doc/includes/references.h b/doc/includes/references.h index 4a2344f3..80a8e766 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -2149,6 +2149,7 @@ typedef struct mjsMesh_ { // mesh specification mjFloatVec* usernormal; // user normal data mjFloatVec* usertexcoord; // user texcoord data mjIntVec* userface; // user vertex indices + mjIntVec* userfacenormal; // user face normal indices mjIntVec* userfacetexcoord; // user texcoord indices mjsPlugin plugin; // sdf plugin mjString* material; // name of material diff --git a/include/mujoco/mjspec.h b/include/mujoco/mjspec.h index eba3a66a..e84f5f33 100644 --- a/include/mujoco/mjspec.h +++ b/include/mujoco/mjspec.h @@ -479,6 +479,7 @@ typedef struct mjsMesh_ { // mesh specification mjFloatVec* usernormal; // user normal data mjFloatVec* usertexcoord; // user texcoord data mjIntVec* userface; // user vertex indices + mjIntVec* userfacenormal; // user face normal indices mjIntVec* userfacetexcoord; // user texcoord indices mjsPlugin plugin; // sdf plugin mjString* material; // name of material diff --git a/python/mujoco/introspect/structs.py b/python/mujoco/introspect/structs.py index 988a54ef..5d187cf3 100644 --- a/python/mujoco/introspect/structs.py +++ b/python/mujoco/introspect/structs.py @@ -9378,6 +9378,13 @@ STRUCTS: Mapping[str, StructDecl] = dict([ ), doc='user vertex indices', ), + StructFieldDecl( + name='userfacenormal', + type=PointerType( + inner_type=ValueType(name='mjIntVec'), + ), + doc='user face normal indices', + ), StructFieldDecl( name='userfacetexcoord', type=PointerType( diff --git a/src/user/user_mesh.cc b/src/user/user_mesh.cc index 18d5db0a..9a69b2d6 100644 --- a/src/user/user_mesh.cc +++ b/src/user/user_mesh.cc @@ -277,6 +277,7 @@ void mjCMesh::PointToLocal() { spec.uservert = &spec_vert_; spec.usernormal = &spec_normal_; spec.userface = &spec_face_; + spec.userfacenormal = &spec_facenormal_; spec.usertexcoord = &spec_texcoord_; spec.userfacetexcoord = &spec_facetexcoord_; spec.material = &spec_material_; @@ -288,6 +289,7 @@ void mjCMesh::PointToLocal() { uservert = nullptr; usernormal = nullptr; userface = nullptr; + userfacenormal = nullptr; usertexcoord = nullptr; userfacetexcoord = nullptr; }