Description
Currently, when defining an <actor> element in SDF using skeletal animations (such as .dae or .bvh files), the <scale> tag is ignored or only applies to the skin mesh, leading to broken visual rigging. Because the bone translations are hardcoded in absolute values within the animation file, resizing an actor dynamically via SDF is impossible without manually re-rigging the files in external software like Blender.
Motivation and Use Case
In the context of Digital Twins and autonomous vehicle simulations (Sim-to-Real), having dynamic environments with crowds is crucial. We need to generate pedestrians of various sizes (e.g., adults and children) using the same base 3D models and animation files to keep the simulation modular and lightweight.
The current lack of scaling support forces developers to maintain multiple versions of the same .dae files at different scales, which goes against the modular philosophy of SDF.
Proposed Solution
When the parsing engine reads a <scale>X</scale> tag inside an <actor> element, this uniform scale factor should be multiplied at runtime with the root/translation matrices of the skeletal animation. This would allow the entire skeleton's stride and movements to scale proportionally with the visual mesh.
Environment
- Gazebo version: gz-sim (Harmonic / Ionic)
- Format: SDF 1.6+
Thank you for your incredible work on the simulator. I am currently working on an autonomous driving Digital Twin using ROS 2, and this feature would be a game-changer for the community. If someone can point me to the right C++ classes handling the animation matrices, I would be happy to try looking into it and opening a PR!
Description
Currently, when defining an
<actor>element in SDF using skeletal animations (such as.daeor.bvhfiles), the<scale>tag is ignored or only applies to the skin mesh, leading to broken visual rigging. Because the bone translations are hardcoded in absolute values within the animation file, resizing an actor dynamically via SDF is impossible without manually re-rigging the files in external software like Blender.Motivation and Use Case
In the context of Digital Twins and autonomous vehicle simulations (Sim-to-Real), having dynamic environments with crowds is crucial. We need to generate pedestrians of various sizes (e.g., adults and children) using the same base 3D models and animation files to keep the simulation modular and lightweight.
The current lack of scaling support forces developers to maintain multiple versions of the same
.daefiles at different scales, which goes against the modular philosophy of SDF.Proposed Solution
When the parsing engine reads a
<scale>X</scale>tag inside an<actor>element, this uniform scale factor should be multiplied at runtime with the root/translation matrices of the skeletal animation. This would allow the entire skeleton's stride and movements to scale proportionally with the visual mesh.Environment
Thank you for your incredible work on the simulator. I am currently working on an autonomous driving Digital Twin using ROS 2, and this feature would be a game-changer for the community. If someone can point me to the right C++ classes handling the animation matrices, I would be happy to try looking into it and opening a PR!