Commit Graph

4211 Commits

Author SHA1 Message Date
MatiasManevi 7dd76bcbd7 Merge branch 'main' into wasm-npm-package 2026-02-25 12:05:20 -03:00
Google DeepMind 940cab2508 Rename MuJoCo WASM output artifacts to mujoco.*.
This change updates the Emscripten build to output files named `mujoco.js`, `mujoco.wasm`, and `mujoco.d.ts` instead of `mujoco_wasm.*`. The internal CMake target name remains `mujoco_wasm` to avoid conflicts. The package name in `package.json` is also updated to `mujoco`. New enum tests are added.

PiperOrigin-RevId: 875140314
Change-Id: Ie03e0d1db2d03dd8582d5bfcb260b3d33549c2c9
2026-02-25 06:50:37 -08:00
Haroon Qureshi 757758dd2e Rename all filament mjr_ functions to mjrf_.
Rename stubs.cc to mjr_compat.cc. This library acts like a
"compatibility layer" that allows the filament renderer to
be implemented behind the mjr API.

PiperOrigin-RevId: 875114054
Change-Id: I5c47581cacbcadff4c78d2ad15728cc1c3a394ad
2026-02-25 05:43:50 -08:00
Alessio Quaglino 22e3217fc0 Replace TriangleMeshDistance with custom BVH-based SDF computation.
The `mjCOctree::ComputeSdfCoeffs` function has been replaced by `mjCOctree::ComputeSdf`. The new implementation removes the dependency on the `triangle_mesh_distance` library. Instead, it uses a provided `mjCBoundingVolumeHierarchy` to perform closest point queries on the mesh. The signed distance is computed by finding the closest triangle face via the BVH and determining the sign based on the dot product of the vector from the closest point on the triangle to the octree vertex and the triangle's normal.

Optional Laplacian smoothing has been added to the SDF coefficients. This helps smooth out potential discontinuities at octree level boundaries.

PiperOrigin-RevId: 875093374
Change-Id: I6fa53243a2dda107ccf255bc6b876ca5a4554d4f
2026-02-25 04:47:46 -08:00
Taylor Howell 52ed96bc3a Move tendon sparsity fields from mjData to mjModel
PiperOrigin-RevId: 875087590
Change-Id: I1a5489d2d2011795ee38b09d547e68acd72e3cc7
2026-02-25 04:32:11 -08:00
Matija Kecman 253494739a Read the clear color from the model if available
PiperOrigin-RevId: 875079722
Change-Id: Id5a9c359d19f46d1c0bb5fbf5043db0ee4b1b9b6
2026-02-25 04:09:27 -08:00
Kyle Bayes 84205f7dd0 Isolate libccd logic in mjc_penetration.
PiperOrigin-RevId: 875073780
Change-Id: I71bd39695aa667110fffff47f34cd98faa562cc6
2026-02-25 03:53:34 -08:00
Kyle Bayes cd8bfb90c3 Improve polygon creation logic in compiler.
PiperOrigin-RevId: 875070301
Change-Id: I06e851f3450035fff68b99997406d6ea471ce3b8
2026-02-25 03:40:07 -08:00
Taylor Howell d0fc1c2c83 MuJoCo Warp documentation: SDF plugins
PiperOrigin-RevId: 875063400
Change-Id: Iefa014e3c046a965722c633df0b19771ab481375
2026-02-25 03:16:54 -08:00
Haroon Qureshi ae7efead09 Show MuJoCo version in the help menu.
PiperOrigin-RevId: 875061430
Change-Id: I4d4ce32eebd8ca4af4622e9b4d1cd50d180d0b96
2026-02-25 03:11:13 -08:00
Yuval Tassa 27dc92b056 Fix typo in modeling.rst.
PiperOrigin-RevId: 875053694
Change-Id: Idb6d09d2713f2cc2a09d2b0912a227fe9ac9396a
2026-02-25 02:51:26 -08:00
Yuval Tassa 40e0007849 Restructure numeric constants table in API docs
Break the monolithic numeric constants table into 6 sub-grouped tables:
Version, Engine constants, Array sizes, Visualization, Rendering, UI constants.

Fix stale values: mjMAXUITEXT (500->300), mjMAXUIMULTI (20->35),
mjMAXUIEDIT (5->7), mjMAXUIRECT (15->25).

Add missing constants: mjMAXLIGHT, mjMAXMATERIAL.

Fix placeholder description for mjMAXFLEXNODES.

PiperOrigin-RevId: 875010581
Change-Id: Id47846de4d98b62cb96087b72ecd28358d5db9c7
2026-02-25 00:54:35 -08:00
Google DeepMind a83fa7299d Add support for loading XML models with VFS in WASM bindings.
PiperOrigin-RevId: 874756898
Change-Id: If2c30aef4c690cf0852587261ca32a3b91448621
2026-02-24 13:09:20 -08:00
MatiasManevi bad7e29d3b Cleanup readme and publish step 2026-02-24 17:16:21 -03:00
MatiasManevi c17eb431cb Move publish step to sh file 2026-02-24 17:04:12 -03:00
Alessio Quaglino 09c7633a76 Add caching for flex stiffness computation.
This change introduces methods to cache and load the computed stiffness matrix and nodal masses for flex elements. The cache key is generated based on material properties (Young's modulus, Poisson's ratio), interpolation order, and the bounding box of the flex. This avoids redundant expensive computations when compiling models with identical flex definitions.

PiperOrigin-RevId: 874689771
Change-Id: I6d1e299baf294a984b507e2a2602b2c068610536
2026-02-24 10:45:23 -08:00
MatiasManevi 1db1dfe6a0 Remove empty lines 2026-02-24 15:08:57 -03:00
MatiasManevi 3bbb548991 Add memory management section to readme 2026-02-24 15:04:18 -03:00
Copybara-Service f383e60721 Merge pull request #3130 from MatiasManevi:fix-wasm-demo
PiperOrigin-RevId: 874640066
Change-Id: Ib869283e36343f41cb13cce7405aca3a1584b76e
2026-02-24 09:04:11 -08:00
Google DeepMind 94acdb33bd Fix Impl.CPP memory leaks due to mjModel/mjData not clearing from pytree.
PiperOrigin-RevId: 874622402
Change-Id: I38a00633dea77d940e4b0422f93e9456ad84daf9
2026-02-24 08:17:06 -08:00
Haroon Qureshi 1d6ff2cece Display Bodies as a tree in Spec Explorer.
Display all other elements under "Elements" or "Assets" group.

Show properties for mjSpec, mjModel, and mjData for selected
elements.

PiperOrigin-RevId: 874614195
Change-Id: I128c2bec844983ac5d35a3a0b1e58b8a5b0109cb
2026-02-24 07:57:44 -08:00
Alessio Quaglino 5fc580a8ba Refactor SDF coefficient computation into mjCOctree.
The logic for computing Signed Distance Function (SDF) coefficients using TriangleMeshDistance is moved from `mjCPlugin::Make` in `user_mesh.cc` to a new method `mjCOctree::ComputeSdfCoeffs` in `user_objects.cc`. This encapsulates the SDF computation within the octree class.

PiperOrigin-RevId: 874572414
Change-Id: Ia2365c9c4527a252ff1d1bb43fe2c2593761e471
2026-02-24 06:03:59 -08:00
MatiasManevi c791f950cb Enable COOP/COEP headers for wasm Vite dev servers 2026-02-23 18:41:47 -03:00
MatiasManevi f27b8d3d70 Move notes into example application section 2026-02-23 18:13:44 -03:00
MatiasManevi f989d40d89 Merge wasm readme for package 2026-02-23 18:11:20 -03:00
MatiasManevi 12c2e98a61 Modify npm package keywords 2026-02-23 17:42:44 -03:00
MatiasManevi c6564b1f79 Change package name and artefacts 2026-02-23 17:40:29 -03:00
Sam Haves 82e92cbcaa Remove PluginTest and make MujocoTest load plugins.
MujocoTest now loads plugins from MUJOCO_PLUGIN_DIR if set.
PluginTest is removed; all tests use MujocoTest directly.
testspeed binary loads plugins from MUJOCO_PLUGIN_DIR.

This is in preparation for moving common asset format parsing (obj, msh, stl, etc.) where we will always want to load those plugins.

PiperOrigin-RevId: 874194428
Change-Id: Id90805a9ba5de4627911b56d8b9c4ab4e1b29310
2026-02-23 12:15:22 -08:00
Taylor Howell 6ec808e2ce Fix attach for spatial tendon. Fixes #3119.
PiperOrigin-RevId: 874067521
Change-Id: If8d415278dde2bccf269cc90e8c176e3d7edefa6
2026-02-23 07:38:43 -08:00
Michael Moss a043df6bdf Update supported Python versions and remove obsolete 3.9 references.
PiperOrigin-RevId: 874063785
Change-Id: Ia4b2956b632aae5f0211fa766b6d413edcba8fe2
2026-02-23 07:29:47 -08:00
Taylor Howell 37e993f67e Improve upper bound for nJmom by computing maximum number of dofs for tendon transmissions
PiperOrigin-RevId: 874057077
Change-Id: I83736719cc2d91a899cd5997ea4a91d21cf06c9e
2026-02-23 07:11:31 -08:00
Taylor Howell 2bf9539234 MJX put_data with impl='warp'
PiperOrigin-RevId: 874017611
Change-Id: I23a25727d41cd888d90f2ea15b2b534eba5583be
2026-02-23 05:20:07 -08:00
Yuval Tassa ba0a5fe4db Fix section underline length in MJWarp docs
PiperOrigin-RevId: 873954878
Change-Id: I40b668b24d04721d8fd4bb61bb5ac7b902ea31f1
2026-02-23 02:25:10 -08:00
Taylor Howell 6b9e0b9e15 MJX API documentation: add Any to exclude-members
PiperOrigin-RevId: 873954713
Change-Id: Iafbdb571c4e5b0491d7d91159e84874c58c01a71
2026-02-23 02:24:06 -08:00
Yuval Tassa 9d6d9089e5 Improve solver parameter documentation, in particular for frictional constraints.
PiperOrigin-RevId: 873364458
Change-Id: Ie4da21abc2ee54d9eaaefc81b3d2624a520ad96e
2026-02-21 09:14:56 -08:00
Taylor Howell c428f675e7 MuJoCo Warp documentation: Update installation instructions
PiperOrigin-RevId: 873032865
Change-Id: I7f75de9ed0d9239b47bc80b321f213aa4014fda6
2026-02-20 12:45:23 -08:00
Baruch Tabanpour 0f36b0fc2e Import NVIDIA/warp from GitHub.
PiperOrigin-RevId: 872969263
Change-Id: Ic890cb53c32593c158a1f3926906b492c7f85348
2026-02-20 10:29:13 -08:00
Baruch Tabanpour e5a236774d Add has_side_effect for pmap bvh refit in mjx-warp.
PiperOrigin-RevId: 872934001
Change-Id: If48cab439718b9e783c4b1da4fb1b1a08521a602
2026-02-20 09:21:43 -08:00
Haroon Qureshi 7d4b615edb Use correct WIN32 define, not WINDOWS.
PiperOrigin-RevId: 872866601
Change-Id: I35bb5cc0fdef80cf816a63bb7fc1619ef424c0d0
2026-02-20 06:10:00 -08:00
Alessio Quaglino f9a39413cf Fix: Include ancestor DOFs in flex interpolation factorization.
The reduced dense factorization for flex interpolation now considers all DOFs in the kinematic chain of the body containing the flex, using mj_bodyChain, instead of only the DOFs directly associated with that body. This is necessary for correctly handling pinned flexes when their parent body is part of a larger kinematic structure.

PiperOrigin-RevId: 872854468
Change-Id: Idbe9fb459084dde9e8eb1076c70dbb685c1b0bdb
2026-02-20 05:30:54 -08:00
Haroon Qureshi 8c9ba9bcf5 Disable plugin on windows.
PiperOrigin-RevId: 872845569
Change-Id: I4d80c80a47358a2882b2c63c2d655fe374afe65d
2026-02-20 05:00:04 -08:00
Haroon Qureshi f71e215c9a Include missing header.
PiperOrigin-RevId: 872835150
Change-Id: I670bddb907b594788bda143c5175bbcb4b427903
2026-02-20 04:23:59 -08:00
Haroon Qureshi 0083cf7fa8 Refactor the projectile launcher into a plugin.
Add a simple GUI for it that allows users to enable/disable
the key binding as well as control some parameters.

PiperOrigin-RevId: 872816645
Change-Id: I8abb2803e17b4f6195d447220c436d4701b24db8
2026-02-20 03:19:53 -08:00
Haroon Qureshi 28ad603f6b Use templates and macros to reduce boilerplate.
PiperOrigin-RevId: 872805912
Change-Id: I6fc1abe283bc809a95d660abc072906b0810aaeb
2026-02-20 02:42:52 -08:00
Copybara-Service a79747334b Merge pull request #3116 from StafaH:render_doc_fix
PiperOrigin-RevId: 872799423
Change-Id: Iafd5f05264043cb2060f147c4c047ba849b28475
2026-02-20 02:22:32 -08:00
Haroon Qureshi f0bf403254 Add a delete button to the highlighted element.
PiperOrigin-RevId: 872795277
Change-Id: I63afa9c87b425ebed5d20126e9909ad95532d559
2026-02-20 02:09:36 -08:00
Haroon Qureshi 82694b520b Re-apply changes that were accidentally deleted.
PiperOrigin-RevId: 872782055
Change-Id: If2f403835cd2d90c88abe9ed82380dfca5b3d9c8
2026-02-20 01:27:57 -08:00
Matija Kecman 8f56d5eefa Minor style fixes
PiperOrigin-RevId: 872669434
Change-Id: I794173b9fad3a286cbf57d246b2f8672412a0e20
2026-02-19 19:16:31 -08:00
Matija Kecman ca0552c83b Cleanup Studio toolbar
PiperOrigin-RevId: 872618794
Change-Id: I2e8f99dc47937416c8516ed1df7821369211b12f
2026-02-19 16:34:38 -08:00
Alessio Quaglino 8ba68cee3e Limit the number of flex contacts per collision pair.
This change introduces a filter for flex-related contacts, ensuring that no more than mjMAXCONPAIR contacts are kept for each geom-flex, flex-flex, flex internal, and flex self-collision pair. The contacts are sorted using farthest-point sampling:

- Starts with the deepest penetrating contact
- Iteratively selects the contact farthest from already-selected contacts
- Produces a spatially distributed set of contacts

PiperOrigin-RevId: 872593388
Change-Id: I50b233a0dc66da6a297852c258ba514f131c8f23
2026-02-19 15:32:17 -08:00