From dcdf0a9c5cc6e116046e7f137138c74cd7b2231a Mon Sep 17 00:00:00 2001
From: Alessio Quaglino
Date: Wed, 13 Aug 2025 07:49:00 -0700
Subject: [PATCH] Use mj_rayMesh for computing an inexact SDF for mesh-SDF
collisions.
PiperOrigin-RevId: 794576123
Change-Id: I3c688056a5ed617a0787ccf1f4aa683f9409040f
---
model/plugin/sdf/asset/die.obj | 296 ++++++++++++++++++++++++++++++
model/plugin/sdf/mesh.xml | 34 ++++
model/plugin/sdf/mug.xml | 2 +-
src/engine/engine_collision_sdf.c | 282 +++-------------------------
4 files changed, 356 insertions(+), 258 deletions(-)
create mode 100644 model/plugin/sdf/asset/die.obj
create mode 100644 model/plugin/sdf/mesh.xml
diff --git a/model/plugin/sdf/asset/die.obj b/model/plugin/sdf/asset/die.obj
new file mode 100644
index 00000000..91964032
--- /dev/null
+++ b/model/plugin/sdf/asset/die.obj
@@ -0,0 +1,296 @@
+v 0.740000 0.740000 -1.000000
+v 0.740000 1.000000 -0.740000
+v 1.000000 0.740000 -0.740000
+v 0.740000 0.807269 -0.991147
+v 0.740000 0.870021 -0.965154
+v 0.740000 0.923848 -0.923848
+v 0.807269 0.740000 -0.991147
+v 0.809387 0.809958 -0.980606
+v 0.808254 0.870420 -0.954318
+v 0.806858 0.917583 -0.917748
+v 0.870021 0.740000 -0.965154
+v 0.870490 0.808646 -0.954150
+v 0.863847 0.863908 -0.932116
+v 0.858399 0.903670 -0.903688
+v 0.890111 0.890111 -0.890111
+v 0.807269 0.991147 -0.740000
+v 0.870021 0.965154 -0.740000
+v 0.923848 0.923848 -0.740000
+v 0.740000 0.991147 -0.807269
+v 0.809958 0.980606 -0.809387
+v 0.870420 0.954318 -0.808254
+v 0.917583 0.917748 -0.806858
+v 0.740000 0.965154 -0.870021
+v 0.808646 0.954150 -0.870490
+v 0.863908 0.932116 -0.863847
+v 0.903670 0.903688 -0.858399
+v 0.991147 0.740000 -0.807269
+v 0.965154 0.740000 -0.870021
+v 0.923848 0.740000 -0.923848
+v 0.991147 0.807269 -0.740000
+v 0.980606 0.809387 -0.809958
+v 0.954318 0.808254 -0.870420
+v 0.917748 0.806858 -0.917583
+v 0.965154 0.870021 -0.740000
+v 0.954150 0.870490 -0.808646
+v 0.932116 0.863847 -0.863908
+v 0.903688 0.858399 -0.903670
+v 0.740000 -1.000000 -0.740000
+v 0.740000 -0.740000 -1.000000
+v 1.000000 -0.740000 -0.740000
+v 0.740000 -0.991147 -0.807269
+v 0.740000 -0.965154 -0.870021
+v 0.740000 -0.923848 -0.923848
+v 0.807269 -0.991147 -0.740000
+v 0.809387 -0.980606 -0.809958
+v 0.808254 -0.954318 -0.870420
+v 0.806858 -0.917748 -0.917583
+v 0.870021 -0.965154 -0.740000
+v 0.870490 -0.954150 -0.808646
+v 0.863847 -0.932116 -0.863908
+v 0.858399 -0.903688 -0.903670
+v 0.890111 -0.890111 -0.890111
+v 0.807269 -0.740000 -0.991147
+v 0.870021 -0.740000 -0.965154
+v 0.923848 -0.740000 -0.923848
+v 0.740000 -0.807269 -0.991147
+v 0.809958 -0.809387 -0.980606
+v 0.870420 -0.808254 -0.954318
+v 0.917583 -0.806858 -0.917748
+v 0.740000 -0.870021 -0.965154
+v 0.808646 -0.870490 -0.954150
+v 0.863908 -0.863847 -0.932116
+v 0.903670 -0.858399 -0.903688
+v 0.991147 -0.807269 -0.740000
+v 0.965154 -0.870021 -0.740000
+v 0.923848 -0.923848 -0.740000
+v 0.991147 -0.740000 -0.807269
+v 0.980606 -0.809958 -0.809387
+v 0.954318 -0.870420 -0.808254
+v 0.917748 -0.917583 -0.806858
+v 0.965154 -0.740000 -0.870021
+v 0.954150 -0.808646 -0.870490
+v 0.932116 -0.863908 -0.863847
+v 0.903688 -0.903670 -0.858399
+v 1.000000 0.740000 0.740000
+v 0.740000 1.000000 0.740000
+v 0.740000 0.740000 1.000000
+v 0.991147 0.807269 0.740000
+v 0.965154 0.870021 0.740000
+v 0.923848 0.923848 0.740000
+v 0.991147 0.740000 0.807269
+v 0.980606 0.809958 0.809387
+v 0.954318 0.870420 0.808254
+v 0.917748 0.917583 0.806858
+v 0.965154 0.740000 0.870021
+v 0.954150 0.808646 0.870490
+v 0.932116 0.863908 0.863847
+v 0.903688 0.903670 0.858399
+v 0.890111 0.890111 0.890111
+v 0.740000 0.991147 0.807269
+v 0.740000 0.965154 0.870021
+v 0.740000 0.923848 0.923848
+v 0.807269 0.991147 0.740000
+v 0.809387 0.980606 0.809958
+v 0.808254 0.954318 0.870420
+v 0.806858 0.917748 0.917583
+v 0.870021 0.965154 0.740000
+v 0.870490 0.954150 0.808646
+v 0.863847 0.932116 0.863908
+v 0.858399 0.903688 0.903670
+v 0.807269 0.740000 0.991147
+v 0.870021 0.740000 0.965154
+v 0.923848 0.740000 0.923848
+v 0.740000 0.807269 0.991147
+v 0.809958 0.809387 0.980606
+v 0.870420 0.808254 0.954318
+v 0.917583 0.806858 0.917748
+v 0.740000 0.870021 0.965154
+v 0.808646 0.870490 0.954150
+v 0.863908 0.863847 0.932116
+v 0.903670 0.858399 0.903688
+v 1.000000 -0.740000 0.740000
+v 0.740000 -0.740000 1.000000
+v 0.740000 -1.000000 0.740000
+v 0.991147 -0.740000 0.807269
+v 0.965154 -0.740000 0.870021
+v 0.923848 -0.740000 0.923848
+v 0.991147 -0.807269 0.740000
+v 0.980606 -0.809387 0.809958
+v 0.954318 -0.808254 0.870420
+v 0.917748 -0.806858 0.917583
+v 0.965154 -0.870021 0.740000
+v 0.954150 -0.870490 0.808646
+v 0.932116 -0.863847 0.863908
+v 0.903688 -0.858399 0.903670
+v 0.890111 -0.890111 0.890111
+v 0.740000 -0.807269 0.991147
+v 0.740000 -0.870021 0.965154
+v 0.740000 -0.923848 0.923848
+v 0.807269 -0.740000 0.991147
+v 0.809387 -0.809958 0.980606
+v 0.808254 -0.870420 0.954318
+v 0.806858 -0.917583 0.917748
+v 0.870021 -0.740000 0.965154
+v 0.870490 -0.808646 0.954150
+v 0.863847 -0.863908 0.932116
+v 0.858399 -0.903670 0.903688
+v 0.807269 -0.991147 0.740000
+v 0.870021 -0.965154 0.740000
+v 0.923848 -0.923848 0.740000
+v 0.740000 -0.991147 0.807269
+v 0.809958 -0.980606 0.809387
+v 0.870420 -0.954318 0.808254
+v 0.917583 -0.917748 0.806858
+v 0.740000 -0.965154 0.870021
+v 0.808646 -0.954150 0.870490
+v 0.863908 -0.932116 0.863847
+v 0.903670 -0.903688 0.858399
+v -0.740000 0.740000 -1.000000
+v -1.000000 0.740000 -0.740000
+v -0.740000 1.000000 -0.740000
+v -0.807269 0.740000 -0.991147
+v -0.870021 0.740000 -0.965154
+v -0.923848 0.740000 -0.923848
+v -0.740000 0.807269 -0.991147
+v -0.809958 0.809387 -0.980606
+v -0.870420 0.808254 -0.954318
+v -0.917583 0.806858 -0.917748
+v -0.740000 0.870021 -0.965154
+v -0.808646 0.870490 -0.954150
+v -0.863908 0.863847 -0.932116
+v -0.903670 0.858399 -0.903688
+v -0.890111 0.890111 -0.890111
+v -0.991147 0.807269 -0.740000
+v -0.965154 0.870021 -0.740000
+v -0.923848 0.923848 -0.740000
+v -0.991147 0.740000 -0.807269
+v -0.980606 0.809958 -0.809387
+v -0.954318 0.870420 -0.808254
+v -0.917748 0.917583 -0.806858
+v -0.965154 0.740000 -0.870021
+v -0.954150 0.808646 -0.870490
+v -0.932116 0.863908 -0.863847
+v -0.903688 0.903670 -0.858399
+v -0.740000 0.991147 -0.807269
+v -0.740000 0.965154 -0.870021
+v -0.740000 0.923848 -0.923848
+v -0.807269 0.991147 -0.740000
+v -0.809387 0.980606 -0.809958
+v -0.808254 0.954318 -0.870420
+v -0.806858 0.917748 -0.917583
+v -0.870021 0.965154 -0.740000
+v -0.870490 0.954150 -0.808646
+v -0.863847 0.932116 -0.863908
+v -0.858399 0.903688 -0.903670
+v -1.000000 -0.740000 -0.740000
+v -0.740000 -0.740000 -1.000000
+v -0.740000 -1.000000 -0.740000
+v -0.991147 -0.740000 -0.807269
+v -0.965154 -0.740000 -0.870021
+v -0.923848 -0.740000 -0.923848
+v -0.991147 -0.807269 -0.740000
+v -0.980606 -0.809387 -0.809958
+v -0.954318 -0.808254 -0.870420
+v -0.917748 -0.806858 -0.917583
+v -0.965154 -0.870021 -0.740000
+v -0.954150 -0.870490 -0.808646
+v -0.932116 -0.863847 -0.863908
+v -0.903688 -0.858399 -0.903670
+v -0.890111 -0.890111 -0.890111
+v -0.740000 -0.807269 -0.991147
+v -0.740000 -0.870021 -0.965154
+v -0.740000 -0.923848 -0.923848
+v -0.807269 -0.740000 -0.991147
+v -0.809387 -0.809958 -0.980606
+v -0.808254 -0.870420 -0.954318
+v -0.806858 -0.917583 -0.917748
+v -0.870021 -0.740000 -0.965154
+v -0.870490 -0.808646 -0.954150
+v -0.863847 -0.863908 -0.932116
+v -0.858399 -0.903670 -0.903688
+v -0.807269 -0.991147 -0.740000
+v -0.870021 -0.965154 -0.740000
+v -0.923848 -0.923848 -0.740000
+v -0.740000 -0.991147 -0.807269
+v -0.809958 -0.980606 -0.809387
+v -0.870420 -0.954318 -0.808254
+v -0.917583 -0.917748 -0.806858
+v -0.740000 -0.965154 -0.870021
+v -0.808646 -0.954150 -0.870490
+v -0.863908 -0.932116 -0.863847
+v -0.903670 -0.903688 -0.858399
+v -1.000000 0.740000 0.740000
+v -0.740000 0.740000 1.000000
+v -0.740000 1.000000 0.740000
+v -0.991147 0.740000 0.807269
+v -0.965154 0.740000 0.870021
+v -0.923848 0.740000 0.923848
+v -0.991147 0.807269 0.740000
+v -0.980606 0.809387 0.809958
+v -0.954318 0.808254 0.870420
+v -0.917748 0.806858 0.917583
+v -0.965154 0.870021 0.740000
+v -0.954150 0.870490 0.808646
+v -0.932116 0.863847 0.863908
+v -0.903688 0.858399 0.903670
+v -0.890111 0.890111 0.890111
+v -0.740000 0.807269 0.991147
+v -0.740000 0.870021 0.965154
+v -0.740000 0.923848 0.923848
+v -0.807269 0.740000 0.991147
+v -0.809387 0.809958 0.980606
+v -0.808254 0.870420 0.954318
+v -0.806858 0.917583 0.917748
+v -0.870021 0.740000 0.965154
+v -0.870490 0.808646 0.954150
+v -0.863847 0.863908 0.932116
+v -0.858399 0.903670 0.903688
+v -0.807269 0.991147 0.740000
+v -0.870021 0.965154 0.740000
+v -0.923848 0.923848 0.740000
+v -0.740000 0.991147 0.807269
+v -0.809958 0.980606 0.809387
+v -0.870420 0.954318 0.808254
+v -0.917583 0.917748 0.806858
+v -0.740000 0.965154 0.870021
+v -0.808646 0.954150 0.870490
+v -0.863908 0.932116 0.863847
+v -0.903670 0.903688 0.858399
+v -0.740000 -1.000000 0.740000
+v -0.740000 -0.740000 1.000000
+v -1.000000 -0.740000 0.740000
+v -0.740000 -0.991147 0.807269
+v -0.740000 -0.965154 0.870021
+v -0.740000 -0.923848 0.923848
+v -0.807269 -0.991147 0.740000
+v -0.809387 -0.980606 0.809958
+v -0.808254 -0.954318 0.870420
+v -0.806858 -0.917748 0.917583
+v -0.870021 -0.965154 0.740000
+v -0.870490 -0.954150 0.808646
+v -0.863847 -0.932116 0.863908
+v -0.858399 -0.903688 0.903670
+v -0.890111 -0.890111 0.890111
+v -0.807269 -0.740000 0.991147
+v -0.870021 -0.740000 0.965154
+v -0.923848 -0.740000 0.923848
+v -0.740000 -0.807269 0.991147
+v -0.809958 -0.809387 0.980606
+v -0.870420 -0.808254 0.954318
+v -0.917583 -0.806858 0.917748
+v -0.740000 -0.870021 0.965154
+v -0.808646 -0.870490 0.954150
+v -0.863908 -0.863847 0.932116
+v -0.903670 -0.858399 0.903688
+v -0.991147 -0.807269 0.740000
+v -0.965154 -0.870021 0.740000
+v -0.923848 -0.923848 0.740000
+v -0.991147 -0.740000 0.807269
+v -0.980606 -0.809958 0.809387
+v -0.954318 -0.870420 0.808254
+v -0.917748 -0.917583 0.806858
+v -0.965154 -0.740000 0.870021
+v -0.954150 -0.808646 0.870490
+v -0.932116 -0.863908 0.863847
+v -0.903688 -0.903670 0.858399
diff --git a/model/plugin/sdf/mesh.xml b/model/plugin/sdf/mesh.xml
new file mode 100644
index 00000000..2e41f044
--- /dev/null
+++ b/model/plugin/sdf/mesh.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/model/plugin/sdf/mug.xml b/model/plugin/sdf/mug.xml
index 11fcc891..def6c527 100644
--- a/model/plugin/sdf/mug.xml
+++ b/model/plugin/sdf/mug.xml
@@ -27,7 +27,7 @@
-
+