| Version 8 (modified by osg, 4 years ago) |
|---|
osgAnimation
osgAnimation is the a new effort to put generic animation is OpenSceneGraph. It is currently in 'beta' and in development phase but can do a various things yet. The way osgAnimation is made is to let the user the flexibility to change the behavior of predefined class.
The development branches are located
hg clone http://hg.plopbyte.net/osg-branch/
short description of class
- Sampler is the 'low level' type (use to interpolate in a keyframe container with an functor that define how to interpolate)
- Channel is the association of a Sampler and a Target (it's the result of the sampler poll)
- Animation is a container of Channels . Often you will have position,rotation and scale, but you can have what you want like color, animation of a stateAttribute. You can add what you want.
- Bone is a new transform type to manage skeleton animation
- Skeleton is the root of a tree that contains Bone
- Timeline is a way to organize and play animation (like a scheduler)
- Callback begin, end are implemented through the timeline scheduler (see the example osganimationtimeline)
- EaseMotion , ease motion are predefined curve ready to use (follow the link, you will understand)
Features supported
- skeleton animation with rigged mesh [software implementation]
- solid animation
- it can link an animation channel of any type to another object, or state attribute. (e.g.: linking the x animation of an object to the alpha of a color.)
- blender exporter http://hg.plopbyte.net/osgexport/
- timeline scheduler
- mixer with priority
What are we doing now
- Clean up of Animation class to only provide Animation data, remove logic from this class.
- Clean up AnimationManagerTimeline?, move it to an UpdateVisitor?, and do the same for BasicAnimationManager?
- Enhance AnimationManagerTimeline?. let the user to clean old action finish, use a hierarchical data structure to accept a lot of action.
Short term feature to implement
- hardware skinning
- split component in keyframe, like splitting x, y, z on different channel... It's more a exporter function
Long term feature to implement
- improve performance
- inverse kinematics
- max exporter, maya exporter, ...
- compressed keyframe container
