Will this new animation system support IK animation by chance?
Well I plan to do it, but in a second time.
Though it will be more like basic IK constraints, nothing too fancy.
Any sort of IK support would be nice. I’ve been using all sorts of workarounds in my asset pipeline and its been painful. I’m pretty excited about these changes! The tween system from lemur kicks butt too. I’ve been using it for different “effects” in Spoxel.
Well IK will be something like : 2 bones chain, IK target… at least for a starter.
10000 times this. Thanks for the renaming
@nehon thanks for your awesome work.
I have a question regarding following statement.
So you are saying with new system the animation transforms will not be combined with bind pose. Yes ?
So if I set the same animation (for example a walk animation) on both of below characters (supposing bones name and count are the same in both characters) , regardless of theirs bind pose (T-pose or A-pose) the animation will look the same on both of them, Yes ?
In theory yes I did not look much into retargeting since I did the change, but yeah it should make retargeting a LOT easier.
…hm… then this may lead to an unpleasant looking in my game animation mechanism.
Suppose I have this hunchbacked old man character.
and this straight stature young man
If I set the a walk animation on both of these characters,
with new animation system I will get the same walking style on both the young man and old man which will look unpleasant and unnatural on old man. Whereas if animation was combined with his bind pose it would be more pleasant looking walk animation on him.
I have also illustrated a similar case in this video
Albeit this can be solved by providing a utility class for new animation system to let us combine animation transforms with target character’s bind transform.
Well… first if you have your own retargeting code then you can do whatever you want and use the bind pose…
second, I didn’t get into retargeting yet so I can’t tell you what it will do or not.
But eventually, it will work the same.
I don’t have any. I will wait until you release new animation system.
Just wanted to give you a hint on this problem so you might consider this for the new system.
Well retargeting is not part of the initial scope, though. Also it’s more an editor stuff than an engine stuff. Maybe I’ll release it as a separate library so that editors or some games can use it (unless it’s a couple of classes…we’ll see).
Note that the old system will stay a while though, deprecated, but still there.
There is already a migration util to transform a model with the old system to the new system.
It will be a good task to add support the new system to jMB
Hey @nehon - Got a question about Monkanim v2. Will there be a visual front end to allow programmers to use this tool?
I am guessing so after the API is complete. But I just want to make sure
Check out Maud:
While Maud supports animation retargeting, it doesn’t include Monkanim v2 … yet.
You always have a good way to put people into thinking.
As I work in both Unity mechanim and know detailed about jME, i may show some different parts and features that I may want in both. Currently I guess Unity animation is much more advanced, don’t get me wrong but let compare the two into topic of API, Abstract level and Tools. If you toward Unity framework (as I read) and you don’t have a full picture yet, this post may have some value (is it?).
UNITY
API:
Old Unity version before 2017 compose of:
- Animation, Motion, AnimationClip,
- AnimationState, AnimationStateMachine, Animator ( run-time Component), AnimatorController, Transitions, Trigger,
- Hooker (Behavior) and a Generic Event system.
- Skeleton, Avatar, Mask to specify Data and Action to some target Mesh
- Smart Value driven Graph of State and Value (called Mechanim).
- Humanoid Structure analizer with Fuzzy. Mechanim have a AAA “Machine learning model data” that created by analysing real human movements!
2017 version has Playable API that a little bit more complex. That is a Graph of Graph of Playable Value!
Implementation:
Animator (Component) take a TreeTimeline (Tracks) by Name of Keyframes of Value or Ref (Curves), and Playback.
StateMachine take a Graph of State and Transitions that input Triggers a fire Events to Behavior allow scripts to hook in.
Tools
They have
- Timeline Editor for Curves.
- Retargeting in Editor with Mechanim
- Exporter/ Importer from main 3d model format and a Hookable Importing API.
- There are a lot of Commercial Tools for Cinematic, 2D, Tweening purpose.
What I did with Unity
- 50+ games as developer and later director
- In-house editors for 2d/3d/Cinemactic/MotionCapture animation
JME
What I did with jME
- A lot of games and tools
- In-house editors for 2d/3d/Cinemactic/MotionCapture animation ( I also try to “copy” Unity in some aspects)
- I’ve tried to rewrite the whole jME Animation system and make my own editor 2d/3d with Component/Blueprint style.
API & Implementation
- Animation is a Playable Data, AnimationTrack is a Serials of Data, a Timeline (No TreeTimeLine)
- No StateMachine (Maybe in Monkanim will introduce)
- AnimationControl is a Updater of Animation
- Skeleton and Bone, basic Mask are Data, Configuration, Factor of Deformation that a Mesh morph along with SkeletonAnim
- Basic Event system
- Cinematic System that play a Curves of Value but no Transistion (Ease)
Critic:
- A Generic Asset system but lack of Extension point and Hooker or a proper Document Object Model system <= I did extended AssetManger to create a full reloadable AssetSystem that Cache, handle Asset identity, data and Dependency. This is heavy work but a Must to extend animations to wider audiences.
- Blender importer is good but because the lack of Extension point is hard to extract info
- AnimationControl is the main problem when I redesign, its not abstract away so can not inject Driver (StateMachine and Trigger) into it. <= If we can inject thing into this or can Exten this abstract is will be much much easier…
- A Builtin generic Event system <= No big deal…
- A proper Tool to create Animation/Cinematic <= We all wish for it ( I abandoned mine)
- Component flavor (use Lemur) or write a mini Composable Data system (use Rx)
So both are good! But Unity is a little bit more open to extend…
Actually my team can extend jME 3.1 to its limit and later modify some core classes (just a few) to make a very complex animations system with even live rigging/ targeting and smart bones, morpher that can be import from CCD like Max or Blender.
I always put my self in you guys shoes before write down any critic (because I my self also can not put a success end to our product of jME editor) but that’s some insight you may find interesting.
About the easy to extend characteristic of Unity and to prove my point.
This is Anima2d a tool that use its own Bone Component but can procedure AnimationClip and AnimationStateMachine that imply Unity API.
This is the Animator yaml which basicly text with some id if the AssetSystem is smart enough
This is the tool that I created to import own 2d animation into Unity (Not spine).
Dont be offend but cheer, this is a conversion from a jME code base and we can use the same characters and animation in a jME project!!!
I will try to open source the whole thing sometime.
Don’t mean to revive an old topic. But I’ve recently been using the monkanim branch to test out some animation features like morph targets, bone animations, etc. I was wondering if there is a way I can copy animations from one model to another similar to the use case I had previously here:
In short I have multiple GLTF files that are 1 animations per file, and I would like to copy from the GLTF files to my main rig. Currently what I’m doing is copying the AnimClip
classes to my main rig AnimComposer
instance, but when I try to play the copied animation, it doesn’t play. Is there a correct way to copy animations from different files to a main rig?
mhh I never tried… something must be wrong, I’ll look into it.
Hey nehon,
thank you for the new animation system. It is very cool
Are there any news? I think some of the tweens are mandatory such as: parallel, sound, effect or maybe a more generic tween? The generic tween can then be used to trigger custom events like applying damage to an entity, playing sounds or something.
I also think a state machine is still necessary to create situations such as: making a combo attack while walking. Am I right?
And is there any way to set the loop mode of the animations?