Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamically update actor trajectories #91

Open
chapulina opened this issue Apr 25, 2020 · 0 comments
Open

Dynamically update actor trajectories #91

chapulina opened this issue Apr 25, 2020 · 0 comments
Assignees
Labels
🔮 dome Ignition Dome enhancement New feature or request

Comments

@chapulina
Copy link
Contributor

chapulina commented Apr 25, 2020

Here is an idea for how to expose skeleton control to systems. Currently, actors can only be controlled from the SDF <script>. With these components, systems should have the flexibility to control actors in various different ways. The only thing missing is a way for a system to set waypoints that are automatically interpolated, but I'm not sure how useful that would be.

➡️ ✔️ components::Pose

  • Implemented on this PR
  • Defines the reference point for all trajectory waypoints (i.e. origin).
  • Initialized to <actor><pose>.
  • Already merged into Dome.
  • Works whether ScriptFromSdf or not.

➡️ components::ScriptFromSdf

  • Defaults to true
  • If false, the entire <script> from SDF is ignored.
  • If set back to true, SDF script starts working again.

➡️ ✔️ components::TrajectoryPose

  • Added on this PR (and this declined one)
  • Defines the pose of the root bone with respect to components::Pose.
  • If ScriptFromSdf, it will be set according to the current interpolation between <waypoint><pose>s.
  • If not ScriptFromSdf, unlike <waypoint><pose>, it's not interpolated from the previous pose and performs teleportation.

➡️ ✔️ components::AnimationName

  • Name of animation being currently played.
  • If ScriptFromSdf, it will be set according to the current <trajectory type> (i.e. <animation name>).
  • It must correspond to one of the <animation>s loaded with the SDF.

➡️ ✔️ components::AnimationTime

  • Time within animation being currently played.
  • If ScriptFromSdf, it will be set according to the animation being currently played.
  • If not ScriptFromSdf, BoneTransforms will be ignored and the render engine is responsible for animating them.

➡️ components::UseBoneTransforms

  • Defaults to false
  • If true, bone transformations will be calculated by Ignition Common and set through the BoneTransforms component.
  • If false, the BoneTransforms component is ignored and the render engine is responsible for calculating the transforms based on AnimationName and AnimationTime.

➡️ components::BoneTransforms

  • The transformations for each bone in the skeleton, with respect to the root bone.
  • If not UseBoneTransforms, it's ignored
  • If ScriptFromSdf, it will be set according to the animation being currently played.
  • If not ScriptFromSdf, it can be set by other systems to control bones directly.
@chapulina chapulina added enhancement New feature or request 🔮 dome Ignition Dome labels Apr 25, 2020
@chapulina chapulina self-assigned this Apr 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔮 dome Ignition Dome enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant