Skip to content

Support uniform <scale> tag for skeletal animations in <actor> elements (DAE/BVH) #3440

@LloydHt

Description

@LloydHt

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedWe accept pull requests!

    Type

    No type

    Projects

    Status

    Inbox

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions