From 394cc61192923ecd69a03f612b6b7f2b29ad5c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Hodossy?= Date: Thu, 16 Jan 2025 14:33:08 +0000 Subject: [PATCH] Use RST links throughout the Unity doc. --- doc/unity.rst | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/doc/unity.rst b/doc/unity.rst index 1264ea64..390ac52c 100644 --- a/doc/unity.rst +++ b/doc/unity.rst @@ -5,26 +5,27 @@ Unity Plug-in Introduction ------------ -The MuJoCo `Unity plug-in `_ allows the Unity Editor and +The MuJoCo `Unity plug-in `__ allows the Unity Editor and runtime to use the MuJoCo physics engine. Users can import MJCF files and edit the models in the Editor. The plug-in relies on Unity for most aspects -- assets, game logic, simulation time -- but uses MuJoCo to determine how objects move, giving the designer access to MuJoCo's full API. -An example project using MuJoCo's Unity plugin in a set of introductory tutorials is available at -https://github.com/Balint-H/mj-unity-tutorial. +An example project using MuJoCo's Unity plugin in a set of introductory tutorials are also available as a `standalone +repository `__. .. _UInstallation: Installation instructions ------------------------- -The plug-in directory (available at https://github.com/google-deepmind/mujoco/tree/main/unity) includes a +The `plug-in directory `__ includes a ``package.json`` file. Unity's package manager recognizes this file and will import the plug-in's C# codebase to your -project. In addition, Unity also needs the native MuJoCo library, which can be found in the specific platform archive at -https://github.com/google-deepmind/mujoco/releases. If you wish to simply use the plug-in and not develop it, you should -use one of the version-specific stable commits of the repository, identified by git tags. Check out the relevant version -of the cloned repository with git (``git checkout 3.X.Y`` where X and Y specify the engine version). Simply using the -``main`` branch of the repository may not be compatible with the most recent release binary of MuJoCo. +project. In addition, Unity also needs the native MuJoCo library, which can be found in the corrsponding `platform +archive `__. If you wish to simply use the plug-in and not +develop it, you should use one of the version-specific stable commits of the repository, identified by git tags. Check +out the relevant version of the cloned repository with git (``git checkout 3.X.Y`` where X and Y specify the engine +version). Simply using the ``main`` branch of the repository may not be compatible with the most recent release binary +of MuJoCo. On Unity version 2020.2 and later, the Package Manager will look for the native library file and copy it to the package directory when the package is imported. Alternatively, you can manually copy the native library to the package directory @@ -121,7 +122,7 @@ This design principle has several implications: - The layout of MuJoCo components in the GameObject hierarchy determines the layout of the resulting MuJoCo model. Therefore, we adopt a design rule that **every game object must have at most one MuJoCo component**. - We rely on Unity for spatial configuration, which requires vector components to be `swizzled - `_ since Unity uses left-handed frames with Y as the + `__ since Unity uses left-handed frames with Y as the vertical axis, while MuJoCo uses right-handed frames with Z as the vertical axis. - Unity transform scaling affects positions, orientations, and scale of the entire game object subtree. However, MuJoCo doesn’t support collision of skewed cylinders and capsules (skewed spheres are supported via the ellipsoid primitive). @@ -343,9 +344,9 @@ The current version of the Unity package does not support loading MJCF scenes th Interaction with External Processes ___________________________________ -Roboti’s `MuJoCo plug-in for Unity `_ steps the simulation in an external Python +Roboti’s `MuJoCo plug-in for Unity `__ steps the simulation in an external Python process, and uses Unity only for rendering. In contrast, our plug-in relies on Unity to step the simulation. It should be possible to use our plug-in while an external process "drives" the simulation, for example by setting ``qpos``, calling ``mj_kinematics``, synchronizing the transforms, and then using Unity to render or compute game logic. In order to establish communication with an external process, you can use Unity's `ML-Agents -`_ package. +`__ package.