Hi,
sorry for the delay, my yearly cold just hit me taking my brain out
the last few days.
On Tue, 2009-08-11 at 11:25 -0500, Carsten Neumann wrote:
> [some follow up ideas]
>
> Hello,
>
> Carsten Neumann wrote:
> > where I don't have a good solution yet (but really need one, so ideas
> > very welcome), is the blending of multiple animations; I see two
> > difficulties this introduces:
> > 1) the output of multiple interpolators has to be temporarily stored
> > somewhere and there needs to be a trigger to perform the actual blending
> > and storing of the final value. Alternatively something has to know that
> > it is the first thing to write to a field in this frame and sets an
> > absolute value, while all subsequent writes in this frame make relative
> > changes. The latter sounds fairly brittle to me though.
> > 2) since the blend weights change over time (e.g. to fade one anim out,
> > fade another in) the natural choice seems to control the weights with an
> > animation of their own, but then there is an ordering dependency between
> > animations.
>
> ok, so here is one idea how to solve this in a fairly general fashion:
> When adding a field connection we add attachments to source and
> destination (SrcConnAtt/DstConnAtt). DstConnAtt stores the sources and a
> sequence number, which is computed as max(sequence number of sources) +
> 1 and a source without a DstConnAtt has sequence number 0.
> When a field is changed, the SrcConnAtt (registered as a changed
> callback) notifies the DstConnAtt that updated data is available and the
> DstConnAtt puts itself in a priority queue on the FrameHandler. After
> firing all FrameTasks the FrameHandler goes into a loop until the
> priority queue is empty. In each round of the loop it triggers the
> DstConnAtt with the lowest sequence number which means that it will only
> modify the destination field if all inputs for this frame are available.
>
> Random other things:
> - DstConnAtt with a single source can write data immediately
> - we can keep the current type of connection and call the new ones
> ManagedConnection ?
> - managed vs. unmanaged connection can not be freely mixed, as I don't
> see a way to preserve the sequence numbers without a destination
> attachment (the current connections can target a plain FieldContainer,
> managed connections require an AttachmentContainer as target).
>
> comments/ideas ?
hmm, not 100% sure. One line of thought I had was to route the times
into the blender and let the blender poll the interpolators. That's kind
of half way between this one and the old one. Ideally it would look
something like:
DEF Blender1 Blender
{
slots
[
Slot
{
source CoordInterpolator
}
Slot
{
source CoordInterpolator
}
}
DEF TS1 TimeSensor
{
startTime 10
stopTime 20
fadeInTime 8
fadeOutTime 18
fadeType linear
}
DEF TS2 TimeSensor
{
startTime 20
stopTime 30
fadeInTime 18
fadeOutTime 28
fadeType linear
}
ROUTE TS1.fraction TO Blender1.slots[0].time
ROUTE TS1.weight TO Blender1.slots[0].weight
ROUTE TS2.fraction TO Blender1.slots[1].time
ROUTE TS2.weight TO Blender1.slots[1].weight
In order to get the order right one approach I was thinking about
was to have the blenders as frame task and to make the frame tasks store
inside the frame handler a priority queue and call commit every time the
priority changes. That should strike a reasonable balance for the commit
calls and still keep it flexible.
The TimeSenor might need a new name.
What I'm not so happy with, that would move us a little towards a
pipeline infrastructure.
First thoughts though, I continue to thing about it.
kind regards,
gerrit
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users