Need animate2 expert help...
Hello folks,
For once I'm asking for help instead of offering it.... Due to a number of recent developments, Alexa has been able to continue on her main animation project. However, she seems to have hit something in the interaction between animate2<->timeline that I can't seem to resolve, and can't find any references on.
She has an extremely complex scene that involves many objects, however, the current problem involves just one. She has a Genesis character that has to move through a complex of obstacles. When she sets up the aniblocks back-to-back there is a lurch between the blocks. For instance, if she applies a corner-left aniblock, followed by a walking cycle there is a noticeable lurch/translation between the two (about 20cm). I'm thinking that this is part of the larger problem, so hang with me.
To get around the lurching issue, she has decided to cut the animation into approximately 1.5-2 second chucks. When she plays the settings via the timeline, or the aniblock tab, everything works fine. However, the problem starts when she bakes the aniblock. In the first (0) frame the genesis figure is positioned correctly, but in all frames that follow the genesis figure has been shifted. The amount and direction of the shift makes no sense. The translation sliders for the genesis report (0,0,0) but the shifted location is far from the true (0,0,0) -- well over 400cm from true (0,0,0). The character starts about 50cm more distant from true (0,0,0) than the shifted location. Only the X and Z translastions seem to be affected, as the Y translation (which is constant) is maintained. Unfortunately, she must bake the aniblock since she's using Optitex dynamics on the character and must perform the draping after the bake.
She's investigated shifting the environment so that this genesis starts at (0,y,0) but when she adds the other animated characters/objects into the scene they will be offset as far as this one was originally. She really must get this issue resolved as this sequence is significantly less complex than another that is coming up soon.
As part of her testing, she has parented all of the other assets in the scene to a NULL. It make no difference whether the environment is parented or not. Resources don't see to be an issue as this issue under both 32 and 64 bit systems.
Anyone experience this before, and/or know of a workaround/fix?
That leads to another, unrelated, question: What are the limits of animate/Studio's simultaneous animated objects? Can either handle around 32-50 moving things?
Kendall
Comments
I haven't done much with aniMate2 and Genesis, but two things to check, that are general stumbling blocks.
Firstly, in the aniBlock, make sure that the Genesis root is not keyed. To do this, go into the graph editor - that's the third icon from the right when in editing mode, see screenshot below. The top item in the graph should be "hip", not "root". It is very important not to have "root" as the top item. To get rid of "root", click it in the graph editor, and then click the -key. Then you should have "hip" as the top item.
I've written a couple of posts in the animation forum in the last day or so, as to why the root should not be keyed. I can elaborate if this turns out to be one of Alexa's problems.
Secondly, check the last frame of the aniBlock. If the last Y key is more than a certain degree rotation, that I can never remember, maybe 21 degrees - it's somewhere on here or the GoFigure forum, then if that is the case, then aniMate2 thinks that the figure needs to do a turn. That's really annoying when you don't want the figure to do a turn.
Thirdly, I've just reported a bug about nulls - when I tried to create an aniBlock on a null, I lost the ability to put aniBlocks on to figures.
I don't know how many things can be animated in a scene. I'm a self-confessed dabbler.
Thanks for the response. I've just re-checked the above, and all settings are "as they should be." So none of the above were the issue.
Kendall
I would do a new scene with nothing and see if Genesis does what it suppose to - then add a prop and so on .
Just for yuks can someone see if they can replicate this:
New scene
load genesis, position at -485.98,10.35,-834.03
rotate on y axis by -90 or 270
load corner-left into animate starting at frame 7
bake into timeline
Does the figure change position to the wrong place?
Kendall
Mine didn't actually jump.
However, it appears to me that the problem is that during the baking, aniMate2 compensates for the offset of the position by changing the hip value to the root value.
What happened to me was that after the bake, on frame zero, the origin in the viewport was at your coordinates. At frame 1, the origin jumped to 0,0,0 (can be seen in the viewport by clicking Genesis and having the translate tool selected).
So what I did then, was to bake Genesis at 0,0,0.
The baking put keys on all the root frames, so I couldn't just move the figure then. So I went into the Timeline, selected Genesis, and for all those little black triangles, I went to that frame and did a Key Delete.
Then I went to frame 0, and changed the root to your coordinates, and it works.
Here's after baking to show the origin jump.
The second one is frame 0, and the first one is frame 1. The hip translations compensate to keep the figure in the same position.
That's how I did it as well, however, this will not work when there is more than one figure in a scene. Especially, if these figures interact in some way in the animation. This is a very serious problem.
EDIT: Of course, this could all be happening because all of the motion aniblocks that currently exist are for the G4 figures.
Kendall
I guess what needs to happen is that you bake as you were, mistakes and all.
Then theoretically a script could:
1. Save the origin position on frame zero.
2. Minus each frame's origin translations from the hip translations.
3. Delete each frame's origin translation keys.
4. Set the origin position on frame zero to that saved in step 1.
Ugh.
I don't know that being for G4 figures would make any difference - they are just keying on joints. I guess you could experiment with putting your aniblocks on V4 figures, but I would have thought the result would be the same.
Yes...but aren't there offsets/corrections/etc built into the joint parameters...and aren't the G4 ones different than the Genesis ones? The root should be 'clean' but every other joint is going to be in a slightly different location, so couldn't this be sort of an 'oribital calculation error', where being off by the tiniest fraction of a degree means several thousand miles once you reach orbit?
A bunch of small errors combined making a big one...
It's so cut and dried that on frame 0 the origin is correct, but on frame 1 the origin is 0,0,0, that I don't think that calculation can come into it. I think that the baking is wrong.
G4 characters do not suffer the translation errors. It seems to be a problem with Genesis, animate, and the current set of motions shipped with DS.
Kendall
Color me surprised - thanks, Kendall for letting us know that.
Does it still do it if you create your own blocks or just ones that GoFigure created?
Don't know yet. That's a test that is on the list. Right now I've got some RL work that has to be done, and Alexa is going to be doing the tests when she gets a chance. More information as I have it.
Kendall
I tried it earlier, and I do not get the Genesis translation. I did get a very strange jump once using Point At, several months ago, but I was never able to replicate the bug. Basically typing the translations in Parameters seems to never cause the bug. In fact I remember I had dragged Genesis in the viewport, which is a thing I very rarely do, which I expect is the cause of the bug, but you apparently have to hit some strange numbers for the bug to happen. Or that was my conclusion based on my tests. It could also be a separate issue from Alexa's.