Yuval Tassa
2810edd27a
Rename mjtnum.h to mjtype.h, move enum types to mjtype.h
...
PiperOrigin-RevId: 919020039
Change-Id: I441295c0baa0b7456f78239fbd5478d32ffc07c1
2026-05-21 06:43:29 -07:00
Alessio Quaglino
8cef5bb978
Add configurable octree max depth for meshes.
...
The maximum depth of the octree used for SDF generation can now be specified in the mesh definition via `mjsMesh::octree_maxdepth`. The default value is 6.
PiperOrigin-RevId: 912494999
Change-Id: I6d828d1d3999b99d1210a6829a05b04fac591e1f
2026-05-08 06:35:45 -07:00
Yuval Tassa
0f53f55853
Add checks for degenerate meshes in convex hull computation.
...
Fixes #3260
PiperOrigin-RevId: 911610731
Change-Id: I9efd15eee1bb5cb13639fd733a49535a147c3401
2026-05-06 16:25:13 -07:00
Alessio Quaglino
9c6a4f76eb
Add 2D membrane elasticity for interpolated flex shell mode
...
When elastic2d="stretch" is set on an interpolated flexcomp, treat the bounding box boundary as membrane elements rather than volumetric cells. This computes plane-stress stiffness over the boundary faces and updates the runtime force/derivative kernels accordingly.
Interior vertex tracking (moving vertices that follow the deforming shell) is not yet implemented so all mesh vertices need to be on the bounding box surface or the background grid should have no interior nodes (i.e. cellcount should be 1 on at least one axis).
PiperOrigin-RevId: 907654080
Change-Id: I51b90e2f6a1d1b036f9604e42de20e377dc5d3f9
2026-04-29 10:17:21 -07:00
Alessio Quaglino
a891782553
Clean-up flex assumptions.
...
Do not allow a mix of `elastic2d != none` with `dof = trilinear` since the latter assumes 3d elasticity.
Also, do not assume that `flex_interp > 0` in the engine. This will enable to use, e.g., `flex_interp = -1` to mean a linear surface finite element instead of a 3d finite element which is currently identified with `flex_interp = 1`.
PiperOrigin-RevId: 903852035
Change-Id: Ia6290b4a05e9e510ffb7f36d141cd525b40d3110
2026-04-22 08:01:34 -07:00
Yuval Tassa
9fa3f6f77e
Enable float32 testing for most MuJoCo engine and user tests.
...
PiperOrigin-RevId: 886697701
Change-Id: I4a96fae03ea18494c3fcef8eb17b3b6f0863e9b7
2026-03-20 04:05:06 -07:00
Sam Haves
ecc22667fa
Correct polygon winding order for all meshes not only when loaded from a file.
...
PiperOrigin-RevId: 882053060
Change-Id: I94ee81838fa4074a1a890de4f282eca45ee9e820
2026-03-11 09:25:27 -07:00
Sam Haves
91d3565cd5
Move OBJ handling to a mjpDecoder.
...
PiperOrigin-RevId: 878041994
Change-Id: I6e7f6876e65fd2184ff5637d4268644cefcabecf
2026-03-03 11:22:02 -08:00
Sam Haves
0ec836b281
Rollback of Move OBJ handling to a mjpDecoder.
...
PiperOrigin-RevId: 875705083
Change-Id: I21403d84abd56ef72de915bddc724fe3efa506e6
2026-02-26 07:04:39 -08:00
Sam Haves
b907ffedaa
Move OBJ handling to a mjpDecoder.
...
PiperOrigin-RevId: 875194599
Change-Id: I2cccc683d69a217f1817e70d16bc1815e366d00c
2026-02-25 09:13:09 -08:00
Alessio Quaglino
5bbda2186d
Make the Octree interpolation continuous.
...
This is done by detecting the hanging nodes and compute the function at those location by interpolating the corresponding coarse vertices.
PiperOrigin-RevId: 807700228
Change-Id: I27dcb85361ca445c2099dd07b280cae5c92d3131
2025-09-16 08:15:26 -07:00
Alessio Quaglino
4fc69fa64d
Ensure that the Octree is balanced.
...
This means that two adjacent nodes can only have at most one level of refinement difference.
Note: This is a small breaking change for mjWarp since the order of the children was flipped.
PiperOrigin-RevId: 806299445
Change-Id: Ia326a31c7a8162ae02d70c868d87779198e805be
2025-09-12 08:34:15 -07:00
Sam Haves
1fb1810b07
Add ability to specify a material assignment to a mesh asset.
...
This extends both the spec and the XML definition to allow specification of a material name on a mesh. This material acts as a fallback in the case that the referencing geom element does not specify a material of it's own.
PiperOrigin-RevId: 798232378
Change-Id: Iaf300c727732744ea1b613e64334ee505ac6e209
2025-08-22 09:11:31 -07:00
Alessio Quaglino
840108cf7c
Refactor octree in preparation for continuous interpolation.
...
PiperOrigin-RevId: 792092644
Change-Id: I096ca0989210a00ae0b4556498d96212755d23c7
2025-08-07 04:06:03 -07:00
Yuval Tassa
996f0040fd
Add built-in sphere mesh.
...
PiperOrigin-RevId: 791162850
Change-Id: I573a414727e79f1a495e0f2282b2faff48ab3443
2025-08-05 05:05:05 -07:00
Yuval Tassa
5220767457
Add built-in hemisphere mesh.
...
PiperOrigin-RevId: 791148546
Change-Id: Ic9ff0c9b0f5fa4fd22d5f7f848f150cf74d378ba
2025-08-05 04:16:24 -07:00
Alessio Quaglino
5c1f1f9dba
Add octree to meshes of SDF geoms.
...
PiperOrigin-RevId: 777634862
Change-Id: I3210c2f8d73fd30ceecb0a11abd1d82e086b3d5d
2025-06-30 10:50:15 -07:00
Yuval Tassa
21bae3a388
Report which body has too-small mass/inertia in compilation error.
...
PiperOrigin-RevId: 776196017
Change-Id: Ib81efb170347a57cdc4b446c14cd7b8f5357958c
2025-06-26 10:40:40 -07:00
Kyle Bayes
f4774a5449
Fix bug in cached meshes where convex hull was missing. Previously if a mesh was copied from the cache it would not have its convex hull if the original mesh that was cached didn't previously compute it.
...
Fixes #2609
PiperOrigin-RevId: 756223337
Change-Id: I54705456636c270607a17340b249047e0df75d0b
2025-05-08 02:42:15 -07:00
Alessio Quaglino
14dc6fd33b
Do not use inertia during mesh compilation.
...
Fixes #2479 .
PiperOrigin-RevId: 735387473
Change-Id: Ib241f2a0efc100bbe2cec24e0399bfcc87268094
2025-03-10 08:35:33 -07:00
Alessio Quaglino
adc3cc06fa
Change private->public spec for error checking in mjCSkin recompilation.
...
Fixes #2485 .
PiperOrigin-RevId: 735323174
Change-Id: Ifcc2055f6a74afaa18ad5228633f36f760adcffd
2025-03-10 04:19:40 -07:00
Kyle Bayes
4d024f9421
Convert internal representation of vertices to double. Also replace remove duplicate vertices with fast hash implementation.
...
PiperOrigin-RevId: 734516595
Change-Id: Ic78556688d5f2b75d69cd286b8d060e2cdeb7c48
2025-03-07 05:17:49 -08:00
Tom Power
89253d957d
Changes to inertia inference from meshes.
...
PiperOrigin-RevId: 726051033
Change-Id: I6edfc118280d103a2dd9d07f29f0094858769761
2025-02-12 07:43:13 -08:00
Yuval Tassa
a4a6248a06
Move AsVector utility to fixture.h
...
PiperOrigin-RevId: 690577546
Change-Id: I2cebcffa1f2e3b0789f43e772e364c4762719ab3
2024-10-28 05:52:25 -07:00
Yuval Tassa
7dc8aef807
Remove the convexhull compiler option.
...
PiperOrigin-RevId: 690307675
Change-Id: I62d8213579ad07296ca96de004d39ae012174aa4
2024-10-27 04:31:10 -07:00
Alessio Quaglino
b598d79b3f
Move mesh inertia specification from global <compiler> to <asset/mesh>.
...
Three options:
- Convex: Use convex hull
- Exact: Use exact geometry (requires watertight mesh)
- Legacy: Legacy approximation (deprecated)
Fixes #2152
PiperOrigin-RevId: 688949900
Change-Id: I4537f343db917195c6fd58d517b189d5ee3be1cd
2024-10-23 07:06:31 -07:00
Yuval Tassa
3d1d1d0718
Multithreaded mesh compilation.
...
PiperOrigin-RevId: 651358120
Change-Id: Id6272aac84ec6ac1b709d2f4a44b7593307bd158
2024-07-11 04:21:49 -07:00
Kyle Bayes
f8b944bf7f
Fix missing fclose when resource is closed without being read. Fixes #1685 .
...
PiperOrigin-RevId: 649416747
Change-Id: I05eeb1071868116b6e5be76e26b465788e4d35b1
2024-07-04 08:07:34 -07:00
Nimrod Gileadi
73cd15344e
Fix a couple of mjtNum build errors.
...
PiperOrigin-RevId: 645024056
Change-Id: Id283f550a4e2d927c214a86e77d42b90fb02824e
2024-06-20 07:31:28 -07:00
Kyle Bayes
18634b6726
Add missing mj_deleteVFS to user unit tests.
...
PiperOrigin-RevId: 645001843
Change-Id: I671514ea4cb7786e5d1f7f55404d4925e446a262
2024-06-20 06:04:32 -07:00
Yuval Tassa
8e2f830fd2
Fix type errors in compiler and tests.
...
In preparation for a float32 build of MuJoCo.
PiperOrigin-RevId: 644407674
Change-Id: I60069f0f865ef89fbf613f5a2ca0c336cc63461e
2024-06-18 09:12:44 -07:00
Baruch Tabanpour
ace0c8f0a3
Add maxhullvert.
...
PiperOrigin-RevId: 641092710
Change-Id: Ib4fa828a9c82531614f0a67de9990340dbb25406
2024-06-06 19:05:16 -07:00
Yuval Tassa
7b3f1a0261
Add mjModel.mesh_scale: scaling applied to asset vertices.
...
PiperOrigin-RevId: 625083195
Change-Id: I36290282379e57ad23ec771d65d1bd6bf2a75b07
2024-04-15 14:26:06 -07:00
Matthew Bennice
7875e93fea
Improve error text when a mesh face references an invalid vertex.
...
PiperOrigin-RevId: 618715730
Change-Id: I28fae1e1570d359db4be98e9c5b7713169eaf34f
2024-03-24 20:59:16 -07:00
Alessio Quaglino
b0daccc234
Allow meshes with flipped faces if exactmeshinertia is false.
...
Fixes #1529 .
PiperOrigin-RevId: 617824308
Change-Id: I926c385475dd79f07e88fe1925ecbb2adb4f8917
2024-03-21 06:36:07 -07:00
Alessio Quaglino
1fe258fb60
Add mjmGeom to C API.
...
PiperOrigin-RevId: 605302719
Change-Id: Ib4208e60cf4299473a96f62db2c9dc8c7a5b0b36
2024-02-08 06:53:01 -08:00
Alessio Quaglino
fb8f77df74
Throw error if qhull is called with NaNs.
...
PiperOrigin-RevId: 601745538
Change-Id: I590673ca7975e4abc171f98704a6c8f8d08f8327
2024-01-26 06:13:27 -08:00
Alessio Quaglino
076db5d366
Copy face_ into facetexcoord_ if not specified and needed.
...
PiperOrigin-RevId: 601732448
Change-Id: Iffe01076db22201dba2611ea36174f808ae00c1e
2024-01-26 04:54:43 -08:00
Saran Tunyasuvunakool
8ed321d469
Rename mesh_assetpathadr to mesh_pathadr and move it to the end of the mesh section.
...
PiperOrigin-RevId: 568911603
Change-Id: I8f21c3d1cc9c73b6a95292a50f262b1a199d0898
2023-09-27 11:32:10 -07:00
Matthew Bennice
7f8018a3f3
Update XML parsing to store asset path so that assets can be recovered and sent to external renderers
...
PiperOrigin-RevId: 567347908
Change-Id: I4d8e1abe35be3a67643ff925af709921280856f8
2023-09-21 10:27:52 -07:00
Matthew Bennice
0ba10cc4f0
Save normalising transform applied to mesh assets in mjModel.mesh_{pos,quat}
...
Fixes #409
PiperOrigin-RevId: 564217402
Change-Id: I53ddeef4e343905021cd7852d548f6769c876474
2023-09-10 15:25:59 -07:00
Kyle Bayes
5fcdae771b
Add content_type attribute that takes a MIME type to specify the file contents for meshes, hfields, and textures.
...
PiperOrigin-RevId: 549302344
Change-Id: I30a8adfef5b5d87bb20479329f3396892f5137ff
2023-07-19 06:51:36 -07:00
Alessio Quaglino
41a7049920
Use shell inertia to compute mesh aabb and frame if volume is invalid.
...
PiperOrigin-RevId: 530925161
Change-Id: I94b97efc7198e2b750480df8687e91bc047a6fc9
2023-05-10 09:12:11 -07:00
Kyle Bayes
23961e24b7
Refactor user codebase to use LoadResource helper method.
...
* Fix small bug when registering resource providers.
* Add test cases for OS filesystem fallback with VFS.
* Rewrite LoadModelFromString using a resource provider (now can pass custom VFSs).
PiperOrigin-RevId: 526959705
Change-Id: Iee1773e5584535d868aab6b206d1bf362e600c8a
2023-04-25 07:24:45 -07:00
Alessio Quaglino
3db483c248
Print warning and default to computing mesh inertia from convex hull if volume is negative (malformed mesh).
...
PiperOrigin-RevId: 526053615
Change-Id: I3974b3433da513f869b1bdab5e98232e215f6509
2023-04-21 09:01:34 -07:00
Alessio Quaglino
94c4f72907
Specify is volume is too small or negative in mesh error messages. Fixes #799 .
...
PiperOrigin-RevId: 525151156
Change-Id: Ia0e9d8b900b8c372e9229da934a4eb7aeb1a3b7a
2023-04-18 08:16:44 -07:00
Alessio Quaglino
9756ed0d80
Read normals and textures from OBJ, do not duplicate vertices.
...
PiperOrigin-RevId: 510461549
Change-Id: I19245d691e722a8371e61153383f275f599353d6
2023-02-17 10:15:25 -08:00
Alessio Quaglino
6ba4d6f0de
Fix a bug that was causing a mismatch between the orientation of the mesh frame and the vertex coordinates.
...
PiperOrigin-RevId: 502624466
Change-Id: Ib28fd2a118b6572be98fadb078fa2262b21cbfc0
2023-01-17 10:31:50 -08:00
Alessio Quaglino
7f459ab8ca
Print vertex IDs when inconsistent face is found.
...
PiperOrigin-RevId: 493311839
Change-Id: I0283d86bc6092fbe4f47b845fa8ec212bffdfa1a
2022-12-06 08:24:46 -08:00
Alessio Quaglino
9370039015
Use a non-symmetric tetrahedron for user_mesh_test.
...
PiperOrigin-RevId: 486658331
Change-Id: I96edd3b2aba916f9215661a7ba94271696690807
2022-11-07 07:43:08 -08:00