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

Pose-based animation interpolation in realtime #30

Open
VinnyVicious opened this issue Mar 2, 2017 · 6 comments
Open

Pose-based animation interpolation in realtime #30

VinnyVicious opened this issue Mar 2, 2017 · 6 comments

Comments

@VinnyVicious
Copy link

I'm not sure on the details of this, but the technique is well explained and demonstrated by Wolfire's David Rosen at:

http://www.gdcvault.com/play/1020583/Animation-Bootcamp-An-Indie-Approach

@guillaumeblanc
Copy link
Owner

guillaumeblanc commented Mar 7, 2017

Very impressive results with 13 key frames only!

As I understand it, pose-based animation could fit in a sample:

  • Each pose (key frames for the whole skeleton) could be stored as an array of SOA transforms in local space (just like the usual SamplingJob output).
  • ozz-animation pipeline can be used to generate these poses/key frames. fbx2anim could be used to import an animation with the few keys we're interested in. This animation should be sampled at specific times (without any interpolation) to get the few interesting poses back (in the SOA transform array).
  • Blending would then be done between these poses using David Rosen interpolation techniques (cubic, spring/damper...).
  • Ozz LocalToModelJob would finally be used to compute model space transforms in the end, as usual.

Don't hesitate to tell if you see it another way.
If someone is interested into trying that and implement a sample, please do!

I also noticed some interesting features to dig in:

  • Foot IK / 2 bone IK
  • Head/torso/eye look at
  • Secondary physics

Cheers,
Guillaume

@VinnyVicious
Copy link
Author

VinnyVicious commented Mar 23, 2017

I'll definitely try to come up with something. I'm still getting used to the library and how it works, so it's a bit difficult for me. Thanks for the info, very useful!

By the way: what do you mean by secondary physics?

@guillaumeblanc
Copy link
Owner

Secondary physics: joints that are animated by a dynamic simulation, reacting to primary animation and character movement.

Anything new on your side?

@VinnyVicious
Copy link
Author

I realized that i was wasting too much time trying to get this system in place for my game. As an indie, time is precious and i've noticed that doing the animations in Blender was faster. So, unfortunately, no news.

@grimdeathr
Copy link

Does this feel difficult to achieve? I thought it was a case of interpolating between the poses?

@VinnyVicious
Copy link
Author

As @guillaumeblanc described, you would have to use a library to implement all of the interpolation techniques (Maybe https://github.com/mobius3/tweeny ?) and just use ozz-animation as a driver.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants