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?).
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!
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.
- 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
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)
- 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.