[Bf-taskforce25] NLA system thoughts

Roland Hess me at harkyman.com
Sun Mar 8 14:55:11 CET 2009


I'm going to concur with Nathan on his main point here, but disagree on 
his other one.

First, I agree that it's unwise to animation outside of actions. Actions 
give an animator loads of advantages when working. Here's one (in the 
style Nathan just used, which I like :) ):

Bassam animates a ten second clip of a snail spelling it's name via 
slime trail ("Mr. Slick") on a wooden coffee table.  The customer 
notifies him that the name might change to Mrs. Slick, and asks if 
Bassam can prepare both animations for the final production. Bassam 
would like to add to his animation, while preserving the original one, 
and keep it all in the same file. Using a system with Actions (even the 
current pre-Animato), this is trivial. Without Actions, you start having 
to do things like duplicate scenes or files.

Continuing that example, let us say that there are a variety of objects 
on the coffee table that the snail knocks over as it glorps around 
writing its name. If those bits of animation can be saved in an Action 
along with the crawling animation it makes managing the entire thing and 
switching between versions that much easier.

I was wondering how Animato was going to handle the first use-case, 
which I've actually encountered and used a lot. Perhaps it does, but the 
solution is non-obvious to me.

As an additional note, I still have code laying around from the NLA 
system changes I made during BlenderPeople for some cool NLA stuff such as:

-Animation "layering." The current "add" mode for NLA actually does a 
fairly poor job of blending animation, as has been noted upthread. I 
spent a lot of time creating a "multiply" mode that does the real thing.

-Matchbone. By choosing a character's bone in an NLA strip, it will snap 
the entire character to match that bone's position to wherever it is in 
the strip which the current one is blending from. In other words, if you 
have a strip that has a character ending in Position A with Pose B, and 
a new strip below it, you don't have to make sure that your new strip 
begins in the same Position as the previous. The system says "Where is 
the position of the foot bone at Position A, Pose B? Let's transform 
this whole next strip so that the foot starts right there." Used with a 
couple frames of blend-in, it creates seamless animation across strips 
with varying start and end positions.

Roland
>    I think it is very unwise to allow free-floating animation without
> an action.  Consider the following analogy for Blender's data
> structures:
>
>    animation curves ~= vertices/edges/faces
>    action ~= mesh
>    action strip ~= object
>
>    Blender doesn't allow vertices or edges to exist outside of a mesh.
>  Similarly, I don't think Blender should allow animation curves to
> exist outside of actions.  If I recall correctly, animato is designed
> this way anyway.
>
>    With the mesh/action analogy in mind, I don't think it makes sense
> to create animation and then put it in an action.  Instead the action
> should be created, and then the animation is created in the action.  I
> think this is actually a much *better* workflow than what XSI does,
> and it will actually make things easier for the user to understand
> (animation always works the same way).
>    (This is also why I proposed the default scene-level action in my
> first e-mail: that way people who don't care about NLA don't have to
> bother with it.)
>
>    Anyway... to continue the analogy: Blender also requires an
> "object" for placing a mesh in space.  Similarly, I think Blender
> should require an action-strip to place an action in time.
>    This does *not* mean, of course, that an action should require an
> action-strip for the user to preview or edit the action.  In fact, if
> anything, I think the reverse argument can be made about meshes:
> meshes should be previewable and editable without being linked to
> objects.  But you still need an object for placing the mesh in space.
> And you still need an action-strip to place an action in time.
>    (Again, this implies that the default scene-level action would be
> placed on the timeline with a default action-strip.  Again, so users
> who don't care about NLA can ignore it.)
>
>    Incidentally, I think I'm going to add myself to the 2.5 taskforce
> mailing list.  This is getting ridiculous. :-P
>
> --Nathan


More information about the Bf-taskforce25 mailing list