Results 1 to 14 of 14
  1. #1
    Member
    Join Date
    Oct 2007
    Location
    finland
    Posts
    144

    NLA Additive blending reference pose...?

    Hi,
    I'm not even sure if my terms are wrong here but...

    Currently, it feels like additive blending always uses rest pose as a reference pose when trying to make any kind of additive blending. Because of this, it's really difficult to use additive blending effectively and easily.

    Imagine this situation: you have made most beautiful hand shaking animation ever in the world. But then you realize that you need to offset your character hand a bit on Z axis.

    In ideal situation you would just make new NLA strip&action and set additive "reference pose" to what is the starting pose of the hand shake animation, offset your hand on Z axis and it's done.

    In current blender situation you have to make new NLA strip&action and set it to additive, but because the reference pose is rest pose, you have to reset all pose transforms on your new action and then offset your hand on Z axis.

    Current way is doable but then (As far as I know at least) you can't see the final combined animation when you edit your new action. So by hitting tab you edit it ,when you are done editing hit tab to exit action edit mode and check results, if the position of your characters hand is not correct, rinse and repeat until it looks correct.

    Is there any little button anywhere to make additive blending use the current NLA strips combined transform as reference pose to do the additive blending or is such a thing possible in blender?



  2. #2
    Member stilltrying's Avatar
    Join Date
    Oct 2011
    Location
    Tampa, Fl
    Posts
    508
    Not sure what you are trying to do, buy can't you just use replace rather than add? Do you have an example file and can you grease pencil what you want to do?



  3. #3
    Member
    Join Date
    Oct 2007
    Location
    finland
    Posts
    144
    Thanks for your reply

    Of course I _could_ use replace but that means I would have to redo all small movements I already have on that earlier animation layer because new action would replace all earlier keyframe transforms, not ideal solution if you just want to offset your limb a bit.

    Replace works but I am specifically talking about additive layer on this thread and how one should use it in a real production, without having a reference pose for additive layer it's really difficult to use effectively.
    Last edited by Etana; 08-Sep-16 at 04:49.



  4. #4
    I feel that I understand what you want. I would also greatly like to have this offset/additive option with NLA strip&actions thing. I often deal with mocap, and this blending mode is needed there very much to adjust things and see what you are doing on the fly.
    There's no such thing as far as I know, at the moment. That is what Animation Layers do in Maya, Max and MotionBuilder. I wrote to developers with a proposition to add a special "OFFSET" blending mode to NLA editor, that would make offsets that you do to your animations, clear for editing. But there was no answer.

    My example of a thing, which is impossible to do with current NLA blending modes is: to insert the same initial pose to dozens of MOCAP actions of the same character, for game animations. I only have to insert the initial and final poses in base layer and adjust ALL CURVES ALL BONES of the character in ALL ACTIONS! This is a great deal If there is a simpler way, which I do not know - I'd be delighted to hear of it!



  5. #5
    Member Hadriscus's Avatar
    Join Date
    Apr 2012
    Location
    Massilia, France
    Posts
    1,288
    Hi,

    no it doesn't work at the moment. I agree it is frustrating. It is on Aligorith's roadmap though, so it may come some day.



  6. #6
    Originally Posted by Hadriscus View Post
    Hi,

    no it doesn't work at the moment. I agree it is frustrating. It is on Aligorith's roadmap though, so it may come some day.
    Great to hear, that is on to do list! Thanks!



  7. #7
    Member mangojambo's Avatar
    Join Date
    Jul 2002
    Location
    BRASIL - Londrina / PR
    Posts
    57
    I'm having the same problem and it is really annoying behavior for now. I'm developing a blendtree animation for a project I'm working on and this is the first time in 17 years using Blender, I will need to move to Maya (or something else) to accomplish something not possible in Blender. Sad day indeed...
    3D Artist and Animator



  8. #8
    Member
    Join Date
    Oct 2007
    Location
    finland
    Posts
    144
    It's been a while since last time this topic was brought up but developer of auto-rig pro has made and addon called additive keyer
    It looks to be nice workaround for real additive animation blending in blender.
    here is a video of it



  9. #9
    Member Hadriscus's Avatar
    Join Date
    Apr 2012
    Location
    Massilia, France
    Posts
    1,288
    Thanks !!!



  10. #10
    After I saw that, I started thinking of ways to do that more automated (because I don't want to keep clicking buttons). I came up with 2 methods (but same principles):

    Method 1 = Copy Location+Copy Rotation+[offset]
    Method 2 = Child Of+Child Of

    Select the bone/object you want to modify, then pressing Ctrl+Shift+C and selecting the desired constraints. If you didn't Shift+select the active (I.E. two or more things currently selected) then Blender will create an empty object at the active and target the constraints to it; otherwise the previous active will be the target in the constraints
    (note: you don't have to re-select the object, because the constraints will be targeting the same thing)
    Constraint bone = bone/object you set the constraint on. Constraint control = the target of the constraint.

    For Method 1 all you have to do clear the location+rotation of the constraint control for when you want to use the original constraint bone's transforms, then pose the constraint control when you want to offset.
    If you want to have the constraint control near the constraint bone, you have to set the constraint to Local Space <> Local Space, and add a parent to the constraint control. Now when you move the control's parent, the bone won't be affected.
    (note: bone-to-object in local space probably doesn't work correctly. Best to use bone-to-bone)

    For Method 2 (my preferred) you just add the Child Of Constraint two times, then disable Location on one, and Rotation on the other. Click Set Inverse, and ctrl+a >> All Transforms to Deltas so you can clear /Transforms without having to copy keys/etc to disable offset.
    (note: this is only in world space, so you can't move the constraint control without affecting the constraint bone)

    ----------------------

    Reason you need 2 Child of Constraints is Location+Rotation causes the constraint-bone to pivot around the constraint-control, yet with two constraints, it just copies the offsets individually.



  11. #11
    Member NIWO's Avatar
    Join Date
    Oct 2012
    Location
    Germany
    Posts
    33
    @Etana
    Great information. Better than nothing!

    @Edtion
    Please make a tutorial for this.
    I'm not that advanced to understand what you wrote.
    But I'm very interessted in automating this process.



  12. #12
    Member Hadriscus's Avatar
    Join Date
    Apr 2012
    Location
    Massilia, France
    Posts
    1,288
    Oooohhhh clever, or you could duplicate every controller, and create a global switch to show either the first set (parent) or the second (child, additive)...!



  13. #13
    I'm not really a video tutorial guy.

    Here's a simple example file for this showing the two methods:
    !hand_constraints.blend

    Method #1's world space rotation is off (in my test). It works but it seems to offset the initial rotation.

    A simpler explanation is:

    1) select bone >> ctrl+shift+C >> Child Of
    2) ctrl+shift+c >> Child Of
    3) bone constraints >> Set Inverse (both constraints)
    4) disable Location X/Y/Z #1
    5) disable Rotation X/Y/Z $2

    Looking at the example file shows what it should look like.....or this image:Click image for larger version. 

Name:	!hand.jpg 
Views:	5 
Size:	73.9 KB 
ID:	494407
    Last edited by Edtion; 10-Aug-17 at 15:55.



  14. #14
    Originally Posted by NIWO View Post
    I'm not that advanced to understand what you wrote.
    But I'm very interessted in automating this process.
    I made a script to do this faster (with my preferred method)......well I did but while I was typing this, I decided to make it an addon (sort of)

    Install this addon: ChildOf.zip (as text >> http://pasteall.org/510952/python)
    Then run whichever of these commands you want to use:
    Code:
    bpy.ops.constraint.child_of()
    bpy.ops.constraint.child_of_location()
    bpy.ops.constraint.child_of_rotation()
    bpy.ops.constraint.child_of_scale()
    I suggest using this command for location+rotation:
    Code:
    bpy.ops.constraint.child_of_locrot()

    Select a bone or object then run the command, to create an (empty) offset control.
    Select the empty and press ctrl+A >> Apply All Transforms to Deltas to be able to Alt+G/R/S to reset it to the default transform.

    For using the Addon, just add the command to a hotkey in your user preferences Input.
    example: [Input] >> Window >> Add New >> constraint.child_of_locrot
    Key: Shift+I

    The way I'm using it (because I'm not a programmer) is add the commands to buttons using Pie Menu Editor addon (and maybe temporarily add hotkeys to them while I'm working).



Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •