Haroon Qureshi
7ec8b6e341
Pause sim when loading an empty model.
...
PiperOrigin-RevId: 864855430
Change-Id: Ib8c2b0949ee6fda8dd1490017e146d792119e840
2026-02-03 06:49:58 -08:00
Haroon Qureshi
e82253e86c
Prevent file dialog from reopening after being dismissed.
...
PiperOrigin-RevId: 864842269
Change-Id: I91819a3418875fe06dbed0cf7777e1dc7d358079
2026-02-03 06:14:35 -08:00
Haroon Qureshi
1a2bca4986
Use runtime enum for the renderer backend instead of preprocessor macros.
...
TESTED:
studio:vulkan
studio:vulkan --offscreen_mode=true
studio:opengl
studio:opengl_egl
studio:classic
studio:classic --offscreen_mode=true
studio:server
robot_sim/frontend:debug_server
pyviewer:example
pyviewer:example --define=mujoco_gl=vulkan
PiperOrigin-RevId: 864768322
Change-Id: I4478e0115b3807060d60d98b4ddfd63da9389aac
2026-02-03 02:13:15 -08:00
Haroon Qureshi
9da834c12c
Tweak status bar layout.
...
PiperOrigin-RevId: 863184918
Change-Id: Ibff6c71e6004f4dd2ad2b49cc889d2f9c2dfd41e
2026-01-30 05:07:11 -08:00
Haroon Qureshi
86f82d18a2
Temporarily disable mjz support.
...
PiperOrigin-RevId: 862383413
Change-Id: I32927f59852e149b7aaf8b5225f35020532eb7f9
2026-01-28 13:58:41 -08:00
Haroon Qureshi
40f2fe0977
CMakeLists for mjz.
...
PiperOrigin-RevId: 862214752
Change-Id: I498a1f0092adc9e94016bf23589403296bffb4f7
2026-01-28 06:53:06 -08:00
Haroon Qureshi
669e9b7484
Add an "offscreen" mode that allows users to render studio to a texture
...
then uses SDL to blit the texture into the window.
PiperOrigin-RevId: 861697047
Change-Id: Ib949b4ade0c79d867ba74ce013bc2b6fa2571f56
2026-01-27 06:48:16 -08:00
Haroon Qureshi
75715ab966
Update logic for dealing with file dialogs.
...
This in preparation for an upcoming change that uses native file dialogs instead
of our very basic ImGui file dialog.
PiperOrigin-RevId: 861671041
Change-Id: I9b00c05efdda5e37ffe15048a2ccf66f6eca89d9
2026-01-27 05:31:01 -08:00
Haroon Qureshi
fe16255602
Add mjz support to studio.
...
PiperOrigin-RevId: 861627355
Change-Id: Iafd291965ca78d03fdc1efe0e40dabcd4f2dacc4
2026-01-27 03:22:58 -08:00
Haroon Qureshi
bdb553ff8a
Add a ModelPlugin that can be used to load and update models.
...
PiperOrigin-RevId: 861077626
Change-Id: I3ef4989cfbfff3632c5915c00ebda1e7a48716e8
2026-01-26 01:24:43 -08:00
Haroon Qureshi
bab468703c
Display error message when requested file does not exist.
...
PiperOrigin-RevId: 859583121
Change-Id: Id9969e486499a70769e325161c3cd2c204006d9a
2026-01-22 06:34:35 -08:00
Matija Kecman
98593259e7
Internal change
...
PiperOrigin-RevId: 859578296
Change-Id: If4dd4ca68ab9750693e5f6ff20ea0c78d6b93464
2026-01-22 06:20:47 -08:00
Haroon Qureshi
2cc2e579f1
Refactor model loading APIs.
...
There are three ways to load a model: from a file, from a buffer, or an
"empty" model. Instead of overloading a single function to do all three,
provide three separate functions.
Also disable model loading functions that will not work for emscripten.
PiperOrigin-RevId: 859051341
Change-Id: I71557d31d0e7c9c6882895c36116d300f19e255d
2026-01-21 05:25:08 -08:00
Haroon Qureshi
e2180ff744
First-pass of a plugin system for GUI elements.
...
Refactor filament's debug drawing to be one such plugin.
PiperOrigin-RevId: 859002002
Change-Id: Ibe9000dec19fce648eef6d57170ce435b9a8c6ff
2026-01-21 02:47:09 -08:00
Haroon Qureshi
bf05bb1885
Make quit button work.
...
PiperOrigin-RevId: 858624789
Change-Id: Ibdd572b60273424f3b7e9bb6a9d117d2a0538227
2026-01-20 09:28:48 -08:00
Haroon Qureshi
a0accc493a
Fix camera select logic.
...
PiperOrigin-RevId: 858599199
Change-Id: I25f1a74ac145c73bb225d6df8e86aa82d88ebb4b
2026-01-20 08:18:29 -08:00
Haroon Qureshi
77d1ac10fe
Fix scaling issues on HDPI monitors.
...
PiperOrigin-RevId: 857024487
Change-Id: I7d3db9ff754374053bcd33ba93c7466253afb58c
2026-01-16 01:17:38 -08:00
Haroon Qureshi
c92746641d
Implement picture-in-picture mode.
...
Adds a new window that allows the user to display one or more renders from
the different cameras in the scene.
PiperOrigin-RevId: 856607089
Change-Id: I7268ffd3ef62b9b4d62ce8d004fdbbec92b42af4
2026-01-15 04:42:27 -08:00
Haroon Qureshi
5a7abfe8a0
Set cleared memory back to nullptr.
...
PiperOrigin-RevId: 856188793
Change-Id: Iab33171b07f0d2a48d19986e145b832d1037d596
2026-01-14 06:38:45 -08:00
Haroon Qureshi
071cb83fe7
Strip the prefix correctly.
...
PiperOrigin-RevId: 855297807
Change-Id: Ic182f64c451077386fdba8bfe34e8da6364b9f60
2026-01-12 10:59:20 -08:00
Haroon Qureshi
2c4f710cf4
Ensure resource providers are correctly initialized.
...
PiperOrigin-RevId: 854095105
Change-Id: I028265d7f51e6ab178f4f3a1d801ba773093214f
2026-01-09 02:07:24 -08:00
Sam Haves
2f2f9a30ba
When loading models use mj_parse instead of mj_parseXML, and allow non-xml file types.
...
PiperOrigin-RevId: 853730923
Change-Id: I1c107daafd558bedb99338779c8174ee3e4d07e2
2026-01-08 07:22:51 -08:00
Haroon Qureshi
9743c2d385
Use mjResourceProvider instead of custom LoadAsset callbacks.
...
PiperOrigin-RevId: 853172824
Change-Id: I60ef1207611c4da119cc3f0a7819088cffca6e4f
2026-01-07 03:03:23 -08:00
Haroon Qureshi
b9fa8ee6e9
Move all specialized rendering logic into Renderer class.
...
(We may consider splitting this class up into specialized subclasses at a later date.)
PiperOrigin-RevId: 851290789
Change-Id: Iee00b8e906eeb911de5799f784475ac6916ab55b
2026-01-02 04:25:07 -08:00
Haroon Qureshi
a3e66cd5df
Combine performance charts; add fullscreen mode.
...
PiperOrigin-RevId: 847751915
Change-Id: I819eb8d36224ddba38ef8532a038a2ef350890c8
2025-12-22 07:08:20 -08:00
Haroon Qureshi
d1fd11bccd
Refactor SaveScreenshot into a more useful RenderToTexture function.
...
Removes a few unused functions from helpers library.
PiperOrigin-RevId: 846661437
Change-Id: I815ffe1990098dedb71f694af088d85294f9c7de
2025-12-19 03:33:59 -08:00
Sam Haves
b5b654f00c
Correctly handle segmentation and ID_COLOR flag in filament.
...
PiperOrigin-RevId: 846319715
Change-Id: I244ae52c34079b79d3179fafdf6aa506cc89e1ff
2025-12-18 10:14:13 -08:00
Haroon Qureshi
bebdd62943
Allow studio to search for models in predetermined search paths.
...
A future CL will allow users to specify search paths in their settings.
PiperOrigin-RevId: 846240293
Change-Id: I1a1a4027d0fc85004a12fe01a406f50fd929f3e4
2025-12-18 06:32:24 -08:00
Haroon Qureshi
43bcbb158c
Load last saved GUI configuration on first load.
...
Also save theme to the configuration.
PiperOrigin-RevId: 843710929
Change-Id: I7ce9ce0f026d2cb5f79addf6c16c9b540bf11954
2025-12-12 08:56:53 -08:00
Haroon Qureshi
3da421afaa
First-pass implementation of web-based studio app.
...
PiperOrigin-RevId: 843685213
Change-Id: I2642a21d5573ef548eece0eb9a2c634e4881eec5
2025-12-12 07:42:42 -08:00
Haroon Qureshi
e07adc387a
Update themes to differentiate from default dear_imgui themes and add a classic theme that's similar to simulate.
...
PiperOrigin-RevId: 843313013
Change-Id: Id01841097f32a5b01acd8fcf59392a73acad8f27
2025-12-11 11:46:12 -08:00
Haroon Qureshi
87d333c64a
Allow MJB and XML content to be loaded directly.
...
PiperOrigin-RevId: 843180720
Change-Id: Id4f2bf81507b971dfbbf250d775d7fdfc76517df
2025-12-11 05:41:43 -08:00
Haroon Qureshi
7553541b4b
Use public mj_parseXml function.
...
PiperOrigin-RevId: 842245812
Change-Id: I26e1f992f82050a36373ee3a3f2c97c399b4e788
2025-12-09 08:14:32 -08:00
Haroon Qureshi
97eb307ce9
First pass at mjSpec Explorer and Properties windows.
...
Displays the list of bodies and joints from the mjSpec and displays
values for the selected element.
Functionality is very limited and a bit non-intuitive. However, we want
to get this into our users hands to start getting feedback.
PiperOrigin-RevId: 842228895
Change-Id: I2491cd5e0acaf622110e0f6b8406919024d3607a
2025-12-09 07:28:26 -08:00
Haroon Qureshi
925c533580
Move playback speed control to the toolbar.
...
Initialize playback speed based on the model's global.realtime setting.
Adjust layout and tweak colours of the status and tool bars.
PiperOrigin-RevId: 842214796
Change-Id: Iff9cda74178df28a0787693242fee81e011014fc
2025-12-09 06:47:38 -08:00
Yuval Tassa
cc914c9ec7
Modify studio keyboard bindings to conform to MuJoCo API.
...
PiperOrigin-RevId: 842197387
Change-Id: I6ee9b1f5050cb4a8c2f67253f37481c61c91fdbd
2025-12-09 05:53:14 -08:00
Haroon Qureshi
5ee8b646f7
Move Style and Layout configuration to shared GUI library.
...
PiperOrigin-RevId: 840246253
Change-Id: Ic4664b62e86e70fd6780cd9eb885978064c5f585
2025-12-04 08:02:16 -08:00
Haroon Qureshi
680e9a6b79
Update studio build script and instructions.
...
Mujoco studio now works on Windows and MacOS.
PiperOrigin-RevId: 840235447
Change-Id: I66d3430d5d994de2eb13ee08ad3051c6c7187e12
2025-12-04 07:27:37 -08:00
Haroon Qureshi
c5cd276e1f
Cleanup model loading flow.
...
Inlines the platform::LoadMujocoModel into the App class which simplifies
the logic and allows us to correctly display loading errors.
Also updates shortcuts:
Load Model (Ctrl+L) -> Open File (Ctrl+O)
Reload Model (Ctrl+R) -> Reload Model (Ctrl+L)
PiperOrigin-RevId: 840232553
Change-Id: I957d29046ae681d2aeb69310c3a2eec64d042d49
2025-12-04 07:20:02 -08:00
Sam Haves
a942fd4875
Make filament segmentation shader distinct colors optional.
...
Previously we were computing at material update time a color for the geom based of it's
segid. This made segids unrecoverable from the resulting buffer. With this change
we allow SceneView creators to specify if they want the segmentation buffer to be purely
for visualization with distinct colors.
PiperOrigin-RevId: 840016870
Change-Id: I5920f248ace0901023e6545c7d8dd2b23f9aa397
2025-12-03 19:26:20 -08:00
Haroon Qureshi
448fc0e4d5
Report the actual GPU framerate rather than the main thread submit rate when using the filament renderer.
...
PiperOrigin-RevId: 838775463
Change-Id: If66644d284a4a9e0263cf31bfbd1785b18e0209b
2025-12-01 08:02:38 -08:00
Haroon Qureshi
139a5b6494
Rename toolbox to platform.
...
PiperOrigin-RevId: 838701951
Change-Id: I339eafd35d919710cb47bb04e9a8e29f92739513
2025-12-01 03:58:34 -08:00
Haroon Qureshi
a7e62a6755
Set visual studio working directory to the bin directory.
...
PiperOrigin-RevId: 838681802
Change-Id: I764809d2145688c8a353907dc599a604ae944d0b
2025-12-01 02:45:53 -08:00
Haroon Qureshi
ea78d83363
Use working directory if no HOME path specified.
...
PiperOrigin-RevId: 838680600
Change-Id: I8869da40042bb0b4edcbfe1e626c3188d0631c5e
2025-12-01 02:42:14 -08:00
Yuval Tassa
8f9250472e
Improve names of Free camera control modes.
...
PiperOrigin-RevId: 837605181
Change-Id: I01b65706fc4f9857df4d025cd3f4587d24ee5af5
2025-11-27 13:34:09 -08:00
Yuval Tassa
2ea403575e
studio: invert mouse scroll direction for camera zoom.
...
PiperOrigin-RevId: 837603911
Change-Id: I193a1abc0a3317aa998e7f82b9ce4b282ae7a913
2025-11-27 13:28:24 -08:00
Haroon Qureshi
5163dfa823
Move UX drawing functions into a shared library.
...
PiperOrigin-RevId: 837528296
Change-Id: I153a000cde424254384cf168606f32f7925ca076
2025-11-27 07:34:51 -08:00
Haroon Qureshi
23825a5bcf
Implement sensor chart.
...
PiperOrigin-RevId: 837498928
Change-Id: I84b5911a44fe60a96b3ef34d514eb39702be7402
2025-11-27 05:38:24 -08:00
Haroon Qureshi
fcad41a5b1
Implement solver stats charts.
...
PiperOrigin-RevId: 837045292
Change-Id: I1dfe1e10bb6d62f4d994a82c9b645b471fca5500
2025-11-26 03:25:45 -08:00
Matija Kecman
011166a13a
Update the studio/README.md to summarize platform support.
...
PiperOrigin-RevId: 837038187
Change-Id: I00882e0a9882947af7c684e2d5521356ad1468ce
2025-11-26 02:58:05 -08:00