Animation - aniMate - Is This A Bug?
When creating animation sequences that require the figure to translate in the Y direction (i.e. up and down), such as when walking up stairs or down stairs, I was told to translate the figure by moving the Hip so that the animation is not locked down to absolute X,Y and Z positions.
However, I can not manage to follow such a sequence (or aniBlock) with any other sequence (that has not been similarly Hip translated) because Daz assumes that the following sequence is back at the 0 Y translation level and thus at the end of the stair climbing sequence the figure slowly drops as it starts the next sequence.
This drop seems to override existing key frame information (i.e if the first frame in the next sequence is a key frame which specifies a Y translation then it seems to be ignored). Even worse this situation seems to prevent key frames from being set. For example:
I figured that when Daz is transitioning from the first sequence (which introduces the Hip Y translation) to the next sequence, which does not have the Hip Y translation, then this is causing the downwards drop. So I figured that if I offset the Y translation on the figure to offset the Hip translation change then the next sequence can occur at ground level but be translated to the height of the stairs by the Y translation of the figure.
The problem is that when I put a Y Translation on the figure at the beginning of the second sequence, it does not write the information to the key frame. If I click on another frame and then return back to the key frame that I adjusted the Y Translation on, the Y translation does not seem to be present.
This issue can easily be reproduced using the following steps:
1. Add a figure to the scene.
2. Create a blank aniBlock.
3. Make the first frame a key frame.
4. Make the last frame a key frame.
5. While the last frame is selected, move the Hip in the Y (up) direction lifting the figure off the ground.
Play back the animation. The figure starts low and raises off the ground (to the specified height in the last key frame). Now do this:
1. Add another aniBlock but place it far away from the first aniBlock (leaving say a 1 second gap in between).
2. Make the first frame a key frame.
3. Make the last frame a key frame.
4. Verify that there is no Hip translation on either of the key frames.
Place the scrubber (time pointer) on the last frame of the first aniBlock. The figure should be at the full "off the ground" height as seen before during the playback of the first sequence.
Now grab the second sequence and bring it closer to the first sequence eliminating the gap. As soon as the two sequences are joined (or maybe even sooner) the figure will drop down a bit. Not all the way down to ground level but a bit. Now if the sequence is played, the figure will raise during the first part of the sequence although maybe not to its full height and then descend back to the ground in the second sequence (although the start key frame and the end key frame are identical and thus there should be no change between them).
When I try to edit the key frames in the second sequence with a Figure (not Hip) Y translation to offset the drop, the Y translation does not seem to get written.
Is this a bug or am I doing something wrong? All I am trying to do is have a figure walk up a set of stairs and then be able to use the regular aniBlocks (without having to go in any modify Hip translations) to continue the animation. if a Y Translation of the figure is needed to have all following aniBlocks translated to the new height, I have no problem with that (but I would prefer to avoid having to customize each aniBlock with Hip translations after the stairs).
Comments
Well it does sound like a curve is being introduced beteween the two keyframes.
It's a while since I've been near animate, and I don't currently have access to Studio, but wouldn't one just create the y translation keyframes on a separate layer? That way there would be no need to edit the values on the original stepping aniblock.
Do you have only those keyframes? If you do, you need to add some more because by default DAZ Studio uses cubic interpolation, and thus uses four keyframes for each movement. There are free scripts by Casual (here: https://sites.google.com/site/mcasualsdazscripts/) to alter the interpolation method to linear, or other methods, as well as KeyMate (I think, I always mix it up with GraphMate) in the DAZ store that can do the same thing.
Excellent. I am looking for a method such as scripting to do this because I would like to avoid having to buy addons. I am using this for just an interest hobby and thus want to keep the budget at, ideally, nothing.
Thanks for the info, I will try the suggested scripts to see if this will fix the problem.
However, I still don't understand why I am unable to set parameters in key frames after I join a Hip translation aniBlock with another aniBlock.
You also have the Option of taking your First AniBlock, the one that Ends with the Y translation, Extending it to Correct the translation and then Cutting the Front of the AniBlock to just the corrections (keep the Y in it) and saving the new one as a correction to be used when needed.
I am not sure what you mean extend the first aniBlock to correct the translation. The aniBlock is stair climbing aniBlock so it should end with a Y translation.
However the issues seems to be that within the aniBlock the translation is done, as it is supposed to be, via translation of Hip (so that the aniBlock does not use absolute coordinates) but once the sequence ends this hip translation is removed (since the following sequence - whatever it may be - does not have a corresponding Hip translation) and thus needs to be implemented using a translation of the figure. This then allows other aniBlock written for ground level to be used at the new height.
I am not able to do this however because I can not seem to set a y translation of the figure after the stair climbing aniBlock has finished. Trying to insert frames with a y translation on the figure don't seem to work (i.e. the figure drops anyway) or don't allow me to set them (i.e. I set the translation, move to a different key frame, come back and the y translation is gone).
I believe that the problem is that Daz, by default, uses Spline extrapolation of frames and thus Daz tries to make the y translation smooth and thus extends it over multiple frames. I have downloaded a script which allows the extrapolation method to be changed and thus, hopefully, I will be able to make the Hip to Figure transition abruptly (and thus achieve what I am trying to do).
If you Open the Climb aniblock you can EDIT it. Do a FIX as in drop back from Y UP to standard Y and then CLIP the FIX as a fix you only use at the end of the last climb AniBlock.
Extend Add the Y fix in it. Then CUT the Fix as a new AniBlock. Pretty much a Offset you add on a Sub track like the Genesis Feet off set is.
If I understand you correctly you are suggesting that I add some frames in which I remove the Y Translation on the Hip and instead apply a Y translation on the figure, correct? And then have two aniBlock: one without that "special ending" (which can be looped to climb many stairs") and one with that ending used to end the climbing sequence.
if I just undo the Hip Y translation then the figure will drop down (similar to what it is doing now when a following aniBlock is applied). As a result to keep the figure at the new height, I would need to drop the Hip Y Translation and compensate with a figure Y Translation. If the two are synced, the figure should remain at the new height but switch to using figure Y translation (as opposed to Hip Y translation) which then allows it to be followed by any aniBlock designed for ground level at the new height.
Now I can not actually place the figure Y translation into the aniBlock because that would "hard code" the figure's Y position and then this aniBlock could not be used for different heights (i.e. could not be re-used, for example, to go to the next floor) because the figure Y translation would be an absolute value. At least this is what I have been told as it seems to be true.
Thus the Y translation would need to be applied on top of the aniBlock. I tried this by adding a a frame in a new sequence and that did not work. I will retry using the last frame of the aniBlock to see if that makes any difference.
Good news and bad news...
I tried the above suggestion...I added one more frame to my Stair Climbing aniBlock in which I removed the Hip Y Translation and compensated with a Figure Y Translation.
This worked like a charm from the ground floor to the first floor as expected. However, it also worked from that height to the next height which was not expected. Maybe I misunderstood the response that was indicated in one of the other articles but I was under the impression that aniBlock should translate the Hip as opposed to the Figure because if they translate the Figure then any such translations will be absolute. For example, if a aniBlock moves the figure to position X,Y = 120,150 then even if the aniBlock is started in a totally different position, the figure will translate to those coordinates. This is actually what I saw happen because my first attempt at writing the Stair Climbing aniBlock used Figure translations and thus when I repositioned my figure's initial position, the aniBlock did all kinds of weird stuff.
However, it seems here that when I added the Figure Y Translation (to compensate for the removed Hip Y Translation) and saved it as part of the aniBlock, it did not record it as an absolute Y position because, as I said, I was able to walk up many times (which would not have been the case if the Y position was absolute).
Can someone explain this to me, please? Are changes of the X, Y and Z position, within aniBlock, absolute or relative? If they are absolute, then why did my aniBlock work for any level? If they are relative then why was I told not to use figure translations in aniBlocks?
It seems that this post has somewhat diverted to solving my animation problem as opposed to discussing the actual problem that I was trying to identify:
I occasionally had problems setting a y translation in a key frame. I would set it, go to a different frame, return back to the key frame in which I set it and it would not be applied anymore.
I think in some cases I know what was going on: when working on the time line if a key frame is selected and a change is made, the change is written to the key frame. If, on the other hand, a key frame is not selected then changing the value changes that value for the entire sequence. So, for example, if you change the Y translate on a key frame then only that key frame is changed (with surrounding frames being extrapolated from that value) whereas if the key frame is not selected the Y translation is applied to the initial figure state meaning the translation is applied to all frames in the sequence.
Maybe sometimes I accidentally deselected the frame selection and then applied the Y translation which may have resulted in the Y translation being applied to the sequence instead of the frame but I have a feeling a few times this occurred even when I did have a key frame selected. However, this may have been the cause of the seemingly inability to set the Y translation parameter. I probably set the Y translation on the sequence, jumped to the end key frame, saw the the figure was offset translated back, and then...surprise...surprise...when I returned back to the initial key frame it was undone. Well if I was accidentally doing all that on the initial figure instead of the key frames then that might explain it.
If I understand you correctly you want to edit an aniBlock? If you want to do that you need to set it to a different level.
To do that, leftclick on the aniBlock. It will turn from blue to grey and the name of the aniBlock is replaced with the text "Double click for keyframes".
Either do that or click on the "Go into Keyframe mode" icon, which is located left of the "Speed" setting box (where it says "100%").
Right of the Keyframe mode icon there is the Keyframe Level selector (a dropdown list). Set this from "Base" to a different level.
If you now edit translation/rotation/etc. parameters, it won't revert anymore and keep that values.
Keep in mind that after you finished your edits and saved your edited aniBlock, you'll have to set the Level back to "Base" or it will stay at that level you've chosen. It won't reset to "Base" automatically.
If you're looking for premade stairwalk animations, ANYMATTER of shareCG has already done some very nice aniBlocks. They are contained in his animated poses collection:
(http://www.sharecg.com/v/64032/gallery/11/Poser/100++-animated-poses-for-poser-daz3d)
You may need to edit the starting points, cause they're a little bit off. But that's only a few minutes work if you know what you're doing.
The "walking on stairs aniblocks.rar" inside the "walkcycle" directory. They were created for Victoria/Michael 4 but will work for Genesis, too if you correct the foot and hip offsets or use this (http://www.sharecg.com/v/67223/view/21/DAZ-Studio/Genesis-Pose-Adjust-aniBlock) on a Sub-track.
Thanks. I have the stair walk working now...
I saw the "level" option in the timeline but I was not sure what it was for. Can you please, briefly, explain what the purpose of the level is and why I need to switch it? I understand the basics of key frames from the previous program that I used for animating but either the level function is something new to me or it was called something completely different in the previous program. Your patience is much appreciated.
Well, I'm no animation (or aniMate) expert here. Afaik the levels are keyframe layers that allow one to edit a prebuilt aniBlock and still leaving the original keyframes intact. That way you can't accidentally ruin it by setting a false value, no matter what you do.
I think the base mode is some sort of "save mode", where you can edit and preview parameters at a certain keyframe, but the aniBlock won't take that new params forever.
For more information about aniMate 2 I'd suggest the animate2 User Guide at GoFigures! website:
(http://www.gofigure3d.com/site/index.php?option=com_content&view=article&id=92&Itemid=86)
The "Support" section of their site also provides some very helpful video guides and tutorials.
A small hint on using free aniBlocks from shareCG or other sites:
if you plan on using "self made" aniBlocks you may explore that your figure isn't at the correct spot were the "Start Circle" is located (the black/white circle which is shown if you click on the aniMate2 Tool icon). If you have a "wellpopulated" scene it can be difficult to locate a destinct figure properly.
That's the case for most (if not all) self made aniBlocks which have been made by using IPI's Desktop MoCap software.
If you want to make sure that your figure will match it's correct starting point, in most cases you'll have to set the x/y/z translation params of the figures' hip to 0 (zero) on the first keyframe. Make sure your Level Picker is at any Level than "Base". You can either save it as a new aniBlock, or just overwrite it.
Thanks. I think I understand now. The levels are a way of modifying aniBlock for specific scenes without actually modifying the aniBlock itself. Cool.
Thanks regarding the information about the custom aniBlock.
You're welcome!
Happy aniMating :)
Damn! It happened again...I had a sequence of aniBlocks and I was adjusting one of them for a slight Y Translation and the settings would not stay. I tried both Base and Lvl1. I managed to get them to stay by Locking the Y Translation parameter (with the desired value) on each of the desired frames...but without the Lock engaged the parameter value was being overwritten. I am guessing that it is the extrapolation algorithm that is doing it but key frames shouldn't be altered...on extrapolated frames should be altered.
I have much interesting about this topic to learn best way of set y positon at start frame of each aniblocks.
Then I found problem too/
when I set aniblock1 and aniblock 2 with layout sparse,on same timeline,
at start frame of second aniblock 2, it auto adjust hip positon to be same as the positon of last frame in first aniblock 1.
usually it seems convenience . after that hip translation and rotation change relative from start frame value.
so that we can joint anmation smooth.
But sometimes I want to start aniblock 2 with different gloval Y hip positon.
I could not adjust the Y translation value by LV layer, and subtruck.
How many I adjusted the positon of start frame in aniblock 2, and try to record the current postion,
by root node or hip node, animate seems force to set the hip positon
to equal to last frame of aniblock 1 by changing root node y translation.
Then I need to add new start marker,
between two aniblock, and change the positon of root node
on the aniblock 2. (not in edit mode)
start marker move with root node of genesis, then record the value.
so that I can adjust the y positon at start frame in aniblock2.
I think it seems only way to set start hip positon in some aniblocks.