Clarify that keyframes are not replicated in nested attachments.

PiperOrigin-RevId: 663683684
Change-Id: Id180b3a6afad6809d8189a7a525c474bd3a91fc1
This commit is contained in:
Alessio Quaglino
2024-08-16 04:21:18 -07:00
committed by Copybara-Service
parent 0bcaa85650
commit cfc7dc9848
3 changed files with 16 additions and 0 deletions
+4
View File
@@ -1393,6 +1393,8 @@ Alternative orientation specifiers.
.. _ArrayHandles: .. _ArrayHandles:
.. _mjBuffer:
.. _mjString: .. _mjString:
.. _mjStringVec: .. _mjStringVec:
@@ -1417,6 +1419,7 @@ C handles for C++ strings and vector types. When using from C, use the provided
#ifdef __cplusplus #ifdef __cplusplus
// C++: defined to be compatible with corresponding std types // C++: defined to be compatible with corresponding std types
using mjBuffer = std::vector<std::byte>;
using mjString = std::string; using mjString = std::string;
using mjStringVec = std::vector<std::string>; using mjStringVec = std::vector<std::string>;
using mjIntVec = std::vector<int>; using mjIntVec = std::vector<int>;
@@ -1426,6 +1429,7 @@ C handles for C++ strings and vector types. When using from C, use the provided
using mjDoubleVec = std::vector<double>; using mjDoubleVec = std::vector<double>;
#else #else
// C: opaque types // C: opaque types
typedef void mjBuffer;
typedef void mjString; typedef void mjString;
typedef void mjStringVec; typedef void mjStringVec;
typedef void mjIntVec; typedef void mjIntVec;
+7
View File
@@ -175,6 +175,12 @@ replicating 200 times, suffixes will be ``000, 001, ...`` etc). All referencing
and namespaced appropriately. Detailed examples of models using replicate can be found in the and namespaced appropriately. Detailed examples of models using replicate can be found in the
`model/replicate/ <https://github.com/google-deepmind/mujoco/tree/main/model/replicate>`__ directory. `model/replicate/ <https://github.com/google-deepmind/mujoco/tree/main/model/replicate>`__ directory.
There is a caveat concerning :ref:`keyframes<keyframe>` when using replicate. Since :ref:`mjs_attachFrame` is used to
self-attach multiple times the enclosed kinematic tree, if this tree contains further :ref:`attach<body-attach>`
elements, keyframes will not be replicated nor namespaced by :ref:`replicate<replicate>`, but they will be attached and
namespaced once by the innermost call of :ref:`mjs_attachFrame` or :ref:`mjs_attachBody`. See the limitations discussed
in :ref:`attach<body-attach>`.
.. _replicate-count: .. _replicate-count:
:at:`count`: :at-val:`int, required` :at:`count`: :at-val:`int, required`
@@ -3808,6 +3814,7 @@ all attachments will appear in the saved XML file.
- An entire model cannot be attached (i.e. including all elements, referenced or not). - An entire model cannot be attached (i.e. including all elements, referenced or not).
- All assets from the child model will be copied in, whether they are referenced or not. - All assets from the child model will be copied in, whether they are referenced or not.
- Self-attach or circular references are not checked for and will lead to infinite loops. - Self-attach or circular references are not checked for and will lead to infinite loops.
- :ref:`Keyframes<keyframe>` are attached once, so they are not replicated in nested attachments.
.. _body-attach-model: .. _body-attach-model:
+5
View File
@@ -24,6 +24,11 @@ Bug fixes
7. Fixed a bug wherein, for models that have both muscles and stateless actuators and used one of the implicit 7. Fixed a bug wherein, for models that have both muscles and stateless actuators and used one of the implicit
integrators, wrong derivatives would be computed. integrators, wrong derivatives would be computed.
Python bindings
^^^^^^^^^^^^^^^
8. Added support for engine plugins in :ref:`mjSpec` (:github:issue:`1903`).
Version 3.2.2 (Aug 8, 2024) Version 3.2.2 (Aug 8, 2024)
--------------------------- ---------------------------