Hi Toni,
sorry for the late response, the end of the semester is a little always crazy.
Antonio Bleile wrote:
> Hi,
>
> as we are collaborating with the local technical university
> and as we're offering some master thesis, we also proposed a
> thesis (with Dirk's authorization of course) that would resolve
> the animation issue in OpenSG, the title is "An Animation
> Framework for OpenSG". If there's time remaining, the solution
> also contains a plugin for 3ds and/or Blender that exports
> animations. The description of the thesis contains an
> explicit commitment to the Open Sourcness of the results and the
> collaboration within an international and distributet team of
> developers (that would be you!).
> We now found a young computer science student who is interested
> in this topic, and he's ready to go. But before taking off I've
> a couple of questions:
>
> - Do you have some concrete ideas on how an animation
> framework should look like in OpenSG? Are there any
> papers/references other SceneGraphs where to learn from?
None that I'm aware of, this is not really my topic. X3D has a basic concept
(Fields/Routes) that seems to work reasonably well, but it is very general and
goes beyond animation.
> - Where should he work on? In OpenSG 2.0 or OpenSG 1.8? I
> personally prefer 1.8 as I think we won't use 2.0 anytime
> soon.
I'm with Marcus on this one: if you can write it in a way to supports both or
can be ported easily. The mainly means use RefPtrs everywhere. :)
> - What about Collada? Collada contains animation description and
> as far as I know, a Collada reader will be available in 2.0 ?
Yes, but so far it doesn't have animation support (AFAIK). I looked into the
Collada animation and the basics seem interesting, so it might be a good start.
Definitely something to look into.
> - I need some help from you guys taking care that the result
> is satisfying for all of us (a kind of tutor/mentor). Any volunteer?
I'll be happy to have you bounce ideas off me, but my reaction times are a
little unpredictable these days (I'm swapping quite a bit). :-/
Here are some ideas/aspects:
What to animate? Given that OpenSG has a reflective interface, it would be nice
if any Field could be animated. That would a very nice and generic approach.
Which fields can be animated would depend on what kind of animation needs to be
done.
Some fields (like children) will probably only be able to switch between sets
of
values. This could be the minimum behavior.
Other fields (like Vectors) are interpolatable. There are different kinds of
interpolation, like None (see above), Linear, Quadratic, different Splines etc.
AFAIK (and don't quote me on this), as long as you have linear operations on
the
type all of those work. IMHO all animation should be time-based (more about
that
later), so I would use time as the input parameter.
Collada (and some animation packages) break everything down into 1D
interpolations. I can see the point to be able to draw it in a GUI, but in
general it seems not very intuitive to me, so I probably wouldn't do that.
Interesting cases are matrices and quaternions.
Interpolation matrices is possible but non-trivial (see Marc Alexa's SIGGRAPH
paper http://portal.acm.org/citation.cfm?id=566592), so I'm not sure if you
would want to support it. Just switching should be fine. ComponentTransform can
take care of that.
Quaternions need special interpolation. Most probably slerp, even though I
remember an article in Game Developer that advocated cheaper approximations for
animation.
Time is important, and I would separate the animation from the time objects, so
that it is possible to control and share time independently from the
animation(s). I'm also not a big fan of relative/incremental animations. IMHO
it's easier to simulate relative animation using an absolute system than the
other way around.
I also think it would be nice to have the option to have multiple independent
times, in addition to a default time, so you don't have to specify an explicit
time for everything. Which means there's going to be some animation master or
controller than keeps track of all animations and times, to make it easier to
advance the animation.
Do we need linked animations, i.e. the end of one animation triggers the next?
Might be useful, and would probably be fairly easy to do by making times in the
animation relative to a predecessor animation. I.e. there would be be a need
for
explicit triggering, it would just happen at a relative time.
How simple can it/does it have to be? Does anybody care about Performer-style
Sequences, i.e. simple nodes that automatically switch between their children?
I
could never come up with a convincing use case for that, so I'm ok with not
having trivial animation.
Special cases: characters/skinning and particles.
Characters are IMHO not an animation problem. They need new nodes for drawing
them in the graph, but thetual animation should use the normal
vector/quaternion
animation.
Particles are totally separate, as they don't just animate, there is a lot of
creation and simulation going on, so I would not tackle particles at first.
They
can use some parts of the animation framework, like the time, but they are
intrinsically different.
Just my $.02
Dirk
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Opensg-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-core