Improve quality of maxhullvert coarse convex hulls using Qhull's Q9 option.

PiperOrigin-RevId: 928417339
Change-Id: I59ecd454f063f2e32e1c3ce08eb4a18506ddf8c8
This commit is contained in:
Yuval Tassa
2026-06-08 01:55:54 -07:00
committed by Copybara-Service
parent 0093210173
commit ea2d785e0a
2 changed files with 7 additions and 4 deletions
+5 -3
View File
@@ -7,15 +7,17 @@ Upcoming version (not yet released)
General
^^^^^^^
- Added :ref:`mju_threadpool`, a new function for creating a thread pool on an ``mjData`` instance. When a thread pool
is initialized, parts of the simulation pipeline, such as collision detection and constraint solving across islands,
are parallelized. The thread pool is automatically destroyed when the ``mjData`` is freed.
- Improved primal solver convergence under float32. Improvements initially proposed by :github:user:`n3b` in
:issue:`2313` and :github:user:`denzeler-nvidia` in :doc:`MJWarp <mjwarp/index>` pull request
`1374 <https://github.com/google-deepmind/mujoco_warp/pull/1374>`__.
- Added :ref:`mjs_makeFlex`, a new C API function equivalent to the :ref:`flexcomp<body-flexcomp>` element for
programmatically creating flex objects with auto-generated bodies, joints, and equality constraints. Exposed as
``body.make_flex()`` in Python.
- Added :ref:`mju_threadpool`, a new function for creating a thread pool on an ``mjData`` instance. When a thread pool
is initialized, parts of the simulation pipeline, such as collision detection and constraint solving across islands,
are parallelized. The thread pool is automatically destroyed when the ``mjData`` is freed.
- Significantly improved the quality of coarse convex hulls produced by the :ref:`maxhullvert<asset-mesh-maxhullvert>`
attribute by invoking Qhull's `Q9 <http://www.qhull.org/html/qh-optq.htm#Q9>`__ option.
.. admonition:: Breaking API changes
:class: attention
+2 -1
View File
@@ -1730,8 +1730,9 @@ void mjCMesh::MakeGraph(const double* dvert) {
std::string qhopt = "qhull Qt";
if (maxhullvert_ > -1) {
// qhull "Q9" picks the furthest of all furthest points across facets.
// qhull "TA" actually means "number of vertices added after the initial simplex"
qhopt += " TA" + std::to_string(maxhullvert_ - 4);
qhopt += " Q9 TA" + std::to_string(maxhullvert_ - 4);
}
// graph not needed for small meshes