Implement mesh extrema in a 3x3x3 grid corresponding to each feature of a unit cube. These are used as seeds for a better initial point in mesh hill climbing with up to a 2x speedup in mjc_Convex.

PiperOrigin-RevId: 959645299
Change-Id: I032ae534704e0cc440ddb7691fd21a29a359f521
This commit is contained in:
Kyle Bayes
2026-08-05 07:22:01 -07:00
committed by Copybara-Service
parent 1362a8bded
commit 83e621d771
14 changed files with 2708 additions and 2 deletions
+1
View File
@@ -34,6 +34,7 @@ Actuation
Engine
^^^^^^
- Optimized large-mesh convex collision detection with up to 2x speedup in certain cases.
- Replaced the per-step sparse Cholesky factorization of the flex block of the implicit effective metric M + K with
its prefactored per-vertex 3x3 diagonal blocks. The blocks precondition the CG constraint solver and drive an
iterative solve for ``qacc_smooth``, which now converges on :ref:`tolerance<option-tolerance>` rather than a fixed
+1
View File
@@ -967,6 +967,7 @@ typedef struct mjModel_ {
int* mesh_texcoordadr; // texcoord data address; -1: no texcoord (nmesh x 1)
int* mesh_texcoordnum; // number of texcoord (nmesh x 1)
int* mesh_graphadr; // graph data address; -1: no graph (nmesh x 1)
int* mesh_extrema; // extremum vertices in 3x3x3 directions (nmesh x 27)
float* mesh_vert; // vertex positions for all meshes (nmeshvert x 3)
float* mesh_normal; // normals for all meshes (nmeshnormal x 3)
float* mesh_texcoord; // vertex texcoords for all meshes (nmeshtexcoord x 2)