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?