ik chains explained

13»

Comments

  • Richard HaseltineRichard Haseltine Posts: 100,800
    Robinson said:
    IK can be used for single frames, depending on how active they are. Other than the softness of the pinning what are you finding "buggy"?

    If I say at frame 0 "pin this" (foot) and then to a pose-to-pose on frame 30, as long as I stay within limits (which I can change), it's usually more or less there whilst I'm dragging other parts about.  But if I play back, I find the TCB interpolation hasn't respected the pin.  So at 1 and 30 it's in more or less the right place but at the inbetweens it isn't.  MCasual's Autolimb and Keep Orient scripts will calculate and adjust the limb chain on every frame to keep the position and orientation the same (in world space).  This is something you'd expect the pin to do without having to script it.  This is the main problem with it I think (for me, I don't know about others).

    Are you sure it is buggy, and not just doing what it was asked? It' a little hard to keep rack of who feels cofident they understand the tools and so can say they have met with a bug and who is less sure of things. Pins certainly aren't "hard", so it is easy to move the pinned bone, and that is a known and acknowledged limitation. Perhaps an example, if you have or can readily create one, here or in a bug report.

  • RobinsonRobinson Posts: 751

    Yea saw that in show your renders.

     

    I will play some more with Animate then.  I've really struggled with it though, especially the UI (it's pretty dumb).  Things like undo-redo stack, pressing the delete key on something you've got selected doesn't delete a key it deletes a figure from your scene, all that stuff.  To be fair Daz is a bit like that too.  If I select a key in the timeline, it's not captured the keyboard focus, no, something else has that still.  I find it really quite annoying when familiar UI metaphors are subverted like that.

  • IvyIvy Posts: 7,165
    edited April 2020
    Robinson said:

    Yea saw that in show your renders.

     

    I will play some more with Animate then.  I've really struggled with it though, especially the UI (it's pretty dumb).  Things like undo-redo stack, pressing the delete key on something you've got selected doesn't delete a key it deletes a figure from your scene, all that stuff.  To be fair Daz is a bit like that too.  If I select a key in the timeline, it's not captured the keyboard focus, no, something else has that still.  I find it really quite annoying when familiar UI metaphors are subverted like that.

    yeah I agree it does take some learning the Daz Studio UI .But not as bad as Zbrush. Unlike The new & improved Daz timeline and Ik-chain solutions, The Animate2 plugin has been about for like 15 years so there are tons and tons of YouTube videos on any subject on using the Animate2 UI .Ive been using daz for animation a very long time so thats why it appeard easy for me.

    But once you learn all the basics of daz Studio , creating animations becomes much easier.  But as with any software there is a learning curve and it just depends on how much time you want to invest getting through it all.  I find animate2 much easier to use then a lot of other type timelines I have used. Such as Poser's timeline which to me that UI can get confusion after you been using daz studio for a while.

    Post edited by Ivy on
  • hookflashhookflash Posts: 169
    Robinson said:
    IK can be used for single frames, depending on how active they are. Other than the softness of the pinning what are you finding "buggy"?

    If I say at frame 0 "pin this" (foot) and then to a pose-to-pose on frame 30, as long as I stay within limits (which I can change), it's usually more or less there whilst I'm dragging other parts about.  But if I play back, I find the TCB interpolation hasn't respected the pin.  So at 1 and 30 it's in more or less the right place but at the inbetweens it isn't.  MCasual's Autolimb and Keep Orient scripts will calculate and adjust the limb chain on every frame to keep the position and orientation the same (in world space).  This is something you'd expect the pin to do without having to script it.  This is the main problem with it I think (for me, I don't know about others).

     

    That is the expected behavior. Regular pins only influence the *posing* of the character. When you use them for pose-to-pose animation, you are essentially *posing* with IK but *animating* with FK (i.e., Daz doesn't know or care how the poses it's interpolating between were achieved, nor should it). This isn't a bad thing. Sometimes FK is preferable -- e.g., when you want a character's arm to swing in a smooth arc.

    When you do pose-to-pose animation with IK nodes, it is the positions of the IK nodes that are being interpolated, which is why, when you don't move an IK node from one pose to the next, the endpoint of the chain *should* remain in place (of course, things won't be quite that simple in Daz until we get hard pinning...). This is preferable for walk-cycles and the like.

    In other words, we need both regular pins and IK nodes, and (apart from serious performance issues when you've got lots of content installed), they both work pretty much the way they should. Next up on my personal wishlist: Animation constraints so that we can create actual, full-blown rigs!

     

  • Richard HaseltineRichard Haseltine Posts: 100,800
    hookflash said:
    Robinson said:
    IK can be used for single frames, depending on how active they are. Other than the softness of the pinning what are you finding "buggy"?

    If I say at frame 0 "pin this" (foot) and then to a pose-to-pose on frame 30, as long as I stay within limits (which I can change), it's usually more or less there whilst I'm dragging other parts about.  But if I play back, I find the TCB interpolation hasn't respected the pin.  So at 1 and 30 it's in more or less the right place but at the inbetweens it isn't.  MCasual's Autolimb and Keep Orient scripts will calculate and adjust the limb chain on every frame to keep the position and orientation the same (in world space).  This is something you'd expect the pin to do without having to script it.  This is the main problem with it I think (for me, I don't know about others).

     

    That is the expected behavior. Regular pins only influence the *posing* of the character. When you use them for pose-to-pose animation, you are essentially *posing* with IK but *animating* with FK (i.e., Daz doesn't know or care how the poses it's interpolating between were achieved, nor should it). This isn't a bad thing. Sometimes FK is preferable -- e.g., when you want a character's arm to swing in a smooth arc.

    When you do pose-to-pose animation with IK nodes, it is the positions of the IK nodes that are being interpolated, which is why, when you don't move an IK node from one pose to the next, the endpoint of the chain *should* remain in place (of course, things won't be quite that simple in Daz until we get hard pinning...). This is preferable for walk-cycles and the like.

    In other words, we need both regular pins and IK nodes, and (apart from serious performance issues when you've got lots of content installed), they both work pretty much the way they should. Next up on my personal wishlist: Animation constraints so that we can create actual, full-blown rigs!

    Does this sound encouraging? http://docs.daz3d.com/doku.php/public/software/dazstudio/4/change_log#4_12_1_82 (keeps being mentioned from there to the end).

  • hookflashhookflash Posts: 169
    hookflash said:
    Robinson said:
    IK can be used for single frames, depending on how active they are. Other than the softness of the pinning what are you finding "buggy"?

    If I say at frame 0 "pin this" (foot) and then to a pose-to-pose on frame 30, as long as I stay within limits (which I can change), it's usually more or less there whilst I'm dragging other parts about.  But if I play back, I find the TCB interpolation hasn't respected the pin.  So at 1 and 30 it's in more or less the right place but at the inbetweens it isn't.  MCasual's Autolimb and Keep Orient scripts will calculate and adjust the limb chain on every frame to keep the position and orientation the same (in world space).  This is something you'd expect the pin to do without having to script it.  This is the main problem with it I think (for me, I don't know about others).

     

    That is the expected behavior. Regular pins only influence the *posing* of the character. When you use them for pose-to-pose animation, you are essentially *posing* with IK but *animating* with FK (i.e., Daz doesn't know or care how the poses it's interpolating between were achieved, nor should it). This isn't a bad thing. Sometimes FK is preferable -- e.g., when you want a character's arm to swing in a smooth arc.

    When you do pose-to-pose animation with IK nodes, it is the positions of the IK nodes that are being interpolated, which is why, when you don't move an IK node from one pose to the next, the endpoint of the chain *should* remain in place (of course, things won't be quite that simple in Daz until we get hard pinning...). This is preferable for walk-cycles and the like.

    In other words, we need both regular pins and IK nodes, and (apart from serious performance issues when you've got lots of content installed), they both work pretty much the way they should. Next up on my personal wishlist: Animation constraints so that we can create actual, full-blown rigs!

    Does this sound encouraging? http://docs.daz3d.com/doku.php/public/software/dazstudio/4/change_log#4_12_1_82 (keeps being mentioned from there to the end).

    Oooh, yes!

  • IvyIvy Posts: 7,165
    hookflash said:
    Robinson said:
    IK can be used for single frames, depending on how active they are. Other than the softness of the pinning what are you finding "buggy"?

    If I say at frame 0 "pin this" (foot) and then to a pose-to-pose on frame 30, as long as I stay within limits (which I can change), it's usually more or less there whilst I'm dragging other parts about.  But if I play back, I find the TCB interpolation hasn't respected the pin.  So at 1 and 30 it's in more or less the right place but at the inbetweens it isn't.  MCasual's Autolimb and Keep Orient scripts will calculate and adjust the limb chain on every frame to keep the position and orientation the same (in world space).  This is something you'd expect the pin to do without having to script it.  This is the main problem with it I think (for me, I don't know about others).

     

    That is the expected behavior. Regular pins only influence the *posing* of the character. When you use them for pose-to-pose animation, you are essentially *posing* with IK but *animating* with FK (i.e., Daz doesn't know or care how the poses it's interpolating between were achieved, nor should it). This isn't a bad thing. Sometimes FK is preferable -- e.g., when you want a character's arm to swing in a smooth arc.

    When you do pose-to-pose animation with IK nodes, it is the positions of the IK nodes that are being interpolated, which is why, when you don't move an IK node from one pose to the next, the endpoint of the chain *should* remain in place (of course, things won't be quite that simple in Daz until we get hard pinning...). This is preferable for walk-cycles and the like.

    In other words, we need both regular pins and IK nodes, and (apart from serious performance issues when you've got lots of content installed), they both work pretty much the way they should. Next up on my personal wishlist: Animation constraints so that we can create actual, full-blown rigs!

    Does this sound encouraging? http://docs.daz3d.com/doku.php/public/software/dazstudio/4/change_log#4_12_1_82 (keeps being mentioned from there to the end).

    what really sounds promising is 4.12.1.84 beta when that  version goes into effect i may start using Beta versions of daz again

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

    • Source maintenance

    • Extended DzNodeProperty SDK API; added emitAboutToChange()

    • Modified DzSkeletonProperty SDK API; deprecated emitAboutToChange()

    • Updated SDK version to 4.12.1.84; SDK min is 4.5.0.100

    • Updated SDK API documentation; DzNodeProperty, DzSkeletonProperty

    • Update to NVIDIA Iray RTX 2020.0.0 (327300.2022)

      • Increases minimum driver requirement (on Windows) to 441.22 for pre-Turing GPUs (to support CUDA 10.2), and 442.19 for Turing GPUs (to support OptiX 7.1)

    • Added Scheduling options (i.e., CPU Load Limit, CPU Thread Affinity) to Render Settings (NVIDIA Iray) > Advanced > Hardware

    • Fixed an issue with saving (and therefore restoring) of NVIDIA Iray scheduling options

    • Node Transform Constraints now guard against cyclical evaluation (infinite loop) caused by disallowing selection of the parent node as a target node

    • Node Transform Constraint target controls on the same node now guard against selection of the same target node across multiple controls

    DAZ Studio : Incremented build number to 4.12.1.84

     

  • RobinsonRobinson Posts: 751
    edited April 2020
    hookflash said:
    That is the expected behavior. Regular pins only influence the *posing* of the character. When you use them for pose-to-pose animation, you are essentially *posing* with IK but *animating* with FK (i.e., Daz doesn't know or care how the poses it's interpolating between were achieved, nor should it). This isn't a bad thing. Sometimes FK is preferable -- e.g., when you want a character's arm to swing in a smooth arc.

    When you do pose-to-pose animation with IK nodes, it is the positions of the IK nodes that are being interpolated, which is why, when you don't move an IK node from one pose to the next, the endpoint of the chain *should* remain in place (of course, things won't be quite that simple in Daz until we get hard pinning...). This is preferable for walk-cycles and the like.

    Ah, I understand now.  So my expectation should be (note I'm working in terms of expectations just in case the feature isn't quite there yet), if I do pose to pose, frame 0 and frame 30, then add an IK node to the foot at frame 0, making sure it's in the same place at frame 30, the timeline should try to keep that in position on the inbetweens?  Or is it too late by then?  I'm trying to work out what I have to do for workflow with these... Also don't need to parent the IK node to anything unless I want it to follow, correct?

    Post edited by Robinson on
  • Richard HaseltineRichard Haseltine Posts: 100,800

    Rob says:

    Animating, where the IK solver is used to determine the behavior of nodes that participate in a given IK chain while the IK target itself is animated using FK, is accomplished through use of the reach properties on the IK target. (https://www.daz3d.com/forums/discussion/comment/4802351/#Comment_4802351)

  • hookflashhookflash Posts: 169
    Robinson said:
    hookflash said:
    That is the expected behavior. Regular pins only influence the *posing* of the character. When you use them for pose-to-pose animation, you are essentially *posing* with IK but *animating* with FK (i.e., Daz doesn't know or care how the poses it's interpolating between were achieved, nor should it). This isn't a bad thing. Sometimes FK is preferable -- e.g., when you want a character's arm to swing in a smooth arc.

    When you do pose-to-pose animation with IK nodes, it is the positions of the IK nodes that are being interpolated, which is why, when you don't move an IK node from one pose to the next, the endpoint of the chain *should* remain in place (of course, things won't be quite that simple in Daz until we get hard pinning...). This is preferable for walk-cycles and the like.

    Ah, I understand now.  So my expectation should be (note I'm working in terms of expectations just in case the feature isn't quite there yet), if I do pose to pose, frame 0 and frame 30, then add an IK node to the foot at frame 0, making sure it's in the same place at frame 30, the timeline should try to keep that in position on the inbetweens?  Or is it too late by then?  I'm trying to work out what I have to do for workflow with these... Also don't need to parent the IK node to anything unless I want it to follow, correct?

    As long as the Reach Translation / Rotation of the IK node is dialed up, the IK solver should attempt to keep the chain Chain End in place. Note that the Reach Translation / Rotation is keyable, so you can actually animate the relative influence of FK & IK on the bones in your IK chain (this is known as "FK / IK switching").

    And I believe IK nodes are parented to the root by default.

  • RobinsonRobinson Posts: 751

    So I just did an experiment.  I created an anim with pose-to-pose frame 0, 20 and 40.  I added an IK node to the foot and set pin trans and rot on.  It made absolutely no difference to the animation over and above using a traditional pin and going pose to pose.  I mean I saw no additional "stability" on the joint over and above that in the inbetweens.

    Perhaps this is something I'm just never going to understand.

  • hookflashhookflash Posts: 169
    Robinson said:

    So I just did an experiment.  I created an anim with pose-to-pose frame 0, 20 and 40.  I added an IK node to the foot and set pin trans and rot on.  It made absolutely no difference to the animation over and above using a traditional pin and going pose to pose.  I mean I saw no additional "stability" on the joint over and above that in the inbetweens.

    Perhaps this is something I'm just never going to understand.

    Try animating a character squatting down. When using regular pins on the feet, they will drift below the ground plane and then back up; whereas, if you use IK chains (and follow Padone's setup guide) the feet will remain in place. To really compare the difference, you could even use both methods at once (e.g., use a regular pin on the left foot, and an IK chain for the right foot).

    Don't forget to lock Twist and Side-to-Side on both shins (so as not to confuse the IK solver), and turn off rotation limits on the feet.

  • RobinsonRobinson Posts: 751
    edited April 2020
    hookflash said:

    Don't forget to lock Twist and Side-to-Side on both shins (so as not to confuse the IK solver), and turn off rotation limits on the feet.

    Oooomph.  I wasn't locking these.  I'll have another try, but I assumed if you told the IK node to "lock rotation", it would "lock rotation".  I've always seen the other controls as the same as rotation, just different names for the axis.  So like MCasual's scripts, you have to "hint" the controller with limits and locks.

    Post edited by Robinson on
  • PadonePadone Posts: 3,688

    @Robinson if you read the first posts of this discussion they answer your questions and more and there's an example and duf files you can use as reference. But basically it's as @hookflash explained. The issue is that when you save a scene then reload it the first ik goal seem to be lost, but unless you save and reload everything seems to work fine. You have to correctly setup limits to avoid explosions.

    I didn't test the beta.

  • RobinsonRobinson Posts: 751
    Padone said:

    @Robinson if you read the first posts of this discussion they answer your questions and more and there's an example and duf files you can use as reference. But basically it's as @hookflash explained. The issue is that when you save a scene then reload it the first ik goal seem to be lost, but unless you save and reload everything seems to work fine. You have to correctly setup limits to avoid explosions.

    I didn't test the beta.

    I mean that's the least of my problems right now.  E.g. I try to set up a simple demo.  I load a character on my timeline (a character I've characterised previously, i..e has morphs) and notice there are some keys - I must have saved subset without first deleting them, so I try to delete them and they can't be deleted (T keys - it's a bug I reported a few days ago).  Then I collapse the timeline tree and some more keys appear that weren't there before (TRSOAH is turned on).  I delete them.  Now the timeline shows no keys apart from at 0.  Then I pose the character, set limits and so forth and add an IK block to left and right hand.  Then I set the pin translation and rotation of both to on.  Then I move to frame 15 to make a pose there, but the right hand rotation has changed back to 0.  Eh?  I move to frame 1 and it changes from the value I gave it at 0 (-101) to 0.  There are no keys at all on the timeline.  The graph editor shows no keys either.   The tree shows no rotation/translation properties under the hand either.  The parameters pane shows them there.

    It's a tale of wohooooaaa to be honest.  Pretty pointless me testing it to see if it works with all that going on (it's not just the beta, the release is bugged too).  I'm baffled.  I don't see other people reporting these issues so assume I'm doing something wrong.

  • barbultbarbult Posts: 24,240
    Robinson said:

      I don't see other people reporting these issues so assume I'm doing something wrong.

    Some of us have just given up for now in frustration, due to lack of documentation from Daz on how to use the IK, and what we interpret as unexpected/incorrect behavior. Help requests have been submitted with no resolution response, so we wait in hopes of future improvements (and documentation!!!). It doesn't mean we think all is well with the current state of Daz Studio IK.

  • PadonePadone Posts: 3,688
    edited April 2020

    @Robinson Apart doing little tests to help others, I don't use daz studio for animation myself. Personally I believe daz studio is not ready for professional animation yet, until they fix and improve the ik system. It seems I can do short animations with some success though and I know there are people here who make animation with daz studio. Also you can use premade mocap animations with aniblocks, that seems to work fine.

    My suggested workflow for the time being is to make very short animations and bake them to aniblocks, then use aniblocks for long animations.

    Again I'm not using the beta so I don't know if there are more issues there.

     

    p.s. Totally agree with @barbult about the odd lack of ik docs ..

    Post edited by Padone on
  • PadonePadone Posts: 3,688
    edited May 2020

    This is an example for @hookflash who asked me for a hand to target a shoulder in another character. In this case the hand ik chain has to be parented to a null that is parented to the shoulder. The basic method is also explained in the tutorial below for anyone interested. Scene included.

    ik.jpg
    470 x 281 - 34K
    duf
    duf
    ik.duf
    217K
    Post edited by Padone on
  • RobinsonRobinson Posts: 751

    Been playing with Maya IK and I think I understand this thing now.  Daz's ActivePose solver looks very much like IK but pose-to-pose interpolation is all FK, with no constraint solving, just limits.  mcasual's scripts go back and "fix" the errors as if it had been IK.

  • IvyIvy Posts: 7,165
    edited June 2020
    Padone said:

    This is an example for @hookflash who asked me for a hand to target a shoulder in another character. In this case the hand ik chain has to be parented to a null that is parented to the shoulder. The basic method is also explained in the tutorial below for anyone interested. Scene included.

    I found creating a primitive and parenting the primitive to the body part you need contact with and add a ik-chain to the primitive instead of the body parts will allow for interaction with the timeline keyframes cleanly when you turn off /on the parenting of the ik-chain.,  where if you try using direct contact with the ik-chain to the body part it will distort the body parts during the motions it usually stretches out the mesh of the body part like the ik-chain is still connected if you try direct contact with the ik-chaims,  took me the longest time to figure that out. But you can actually place primitives along a hard surface where the feet or hands touch during the walk cycle and in effect create a hard surface pinning solutions using IK-chains with Primitives. it fairly quick set up as well. and in the primitive you can set the values of where you want the feet to be located on the hard surface. instead of adjusting the character, you adjust parameters of the primitive . don't ask me why that works where direct ik-chain contact doesn't

     At least that technique has been working for me

    Post edited by Ivy on
  • rillarilla Posts: 57

    Ivy said:

    This is an example for @hookflash who asked me for a hand to target a shoulder in another character. In this case the hand ik chain has to be parented to a null that is parented to the shoulder. The basic method is also explained in the tutorial below for anyone interested. Scene included.

    I found creating a primitive and parenting the primitive to the body part you need contact with and add a ik-chain to the primitive instead of the body parts will allow for interaction with the timeline keyframes cleanly when you turn off /on the parenting of the ik-chain.,  where if you try using direct contact with the ik-chain to the body part it will distort the body parts during the motions it usually stretches out the mesh of the body part like the ik-chain is still connected if you try direct contact with the ik-chaims,  took me the longest time to figure that out. But you can actually place primitives along a hard surface where the feet or hands touch during the walk cycle and in effect create a hard surface pinning solutions using IK-chains with Primitives. it fairly quick set up as well. and in the primitive you can set the values of where you want the feet to be located on the hard surface. instead of adjusting the character, you adjust parameters of the primitive . don't ask me why that works where direct ik-chain contact doesn't

     At least that technique has been working for me

    Wow, you look for a fancier solution and the simple things get overlooked. I feel like a fool right now.

Sign In or Register to comment.