Problem with exporting only legs for forward anim
by Spencer Boomhower · in Artist Corner · 05/04/2004 (12:25 am) · 6 replies
Hey all,
I've been replacing the default character and its animations in the Torque Demo with my own character and its animations. I figured out how to do the blends for the head and arms OK, but I've run into a snag with the forward, fall, and side anims. From the docs I've read, it sounds like I should be able to export only the leg nodes for those animations, and the upper body should be controlled by the animation from... well, I'm not sure exactly. I would guess that the upper body in that case would be controlled by the root animation. It would then be combined with the blend animations, which should (in the case of my character anyway) produce an animation where the character runs along while appearing to hold a gun.
The problem I'm having, however, is that the upper body looks wrong when lower-body-node animations play. The character's upperbody goes into the "Da Vinci" pose when she runs: the arms are extended at a 45 degree angle, totally symmetrical. I don't know where it's even getting that Da Vinci pose. This pose is only present in the first frame of the scene from which I export my player.dts file and in the first frame of the root animation. As far as I know, I'm not exporting the Da Vinci pose as an animation, so I don't know how it gets mixed up with the run. All I know is it looks bad bad BAD when she runs along with her arms sticking out rigidly, like she's trying to fly.
My best guess is that the character's run should have her running with her upper body in the root (holding the gun) pose. This should be exported with all the nodes, both upper and lower. Then the blends are applied to this animation. I've tried it, and it seems to work. The only problem is that it seems totally contrary to what I read in the docs.
So what do you think? Should I export only the legs (and maybe the hip) for a run? And if so, is there a right way to do it that I'm missing?
Many thanks in advance.
-Spencer
I've been replacing the default character and its animations in the Torque Demo with my own character and its animations. I figured out how to do the blends for the head and arms OK, but I've run into a snag with the forward, fall, and side anims. From the docs I've read, it sounds like I should be able to export only the leg nodes for those animations, and the upper body should be controlled by the animation from... well, I'm not sure exactly. I would guess that the upper body in that case would be controlled by the root animation. It would then be combined with the blend animations, which should (in the case of my character anyway) produce an animation where the character runs along while appearing to hold a gun.
The problem I'm having, however, is that the upper body looks wrong when lower-body-node animations play. The character's upperbody goes into the "Da Vinci" pose when she runs: the arms are extended at a 45 degree angle, totally symmetrical. I don't know where it's even getting that Da Vinci pose. This pose is only present in the first frame of the scene from which I export my player.dts file and in the first frame of the root animation. As far as I know, I'm not exporting the Da Vinci pose as an animation, so I don't know how it gets mixed up with the run. All I know is it looks bad bad BAD when she runs along with her arms sticking out rigidly, like she's trying to fly.
My best guess is that the character's run should have her running with her upper body in the root (holding the gun) pose. This should be exported with all the nodes, both upper and lower. Then the blends are applied to this animation. I've tried it, and it seems to work. The only problem is that it seems totally contrary to what I read in the docs.
So what do you think? Should I export only the legs (and maybe the hip) for a run? And if so, is there a right way to do it that I'm missing?
Many thanks in advance.
-Spencer
#2
You can also , in the look blend, move it from davinci on frame 0 to the root pose on frame 1, forcing it to offset to the new position.
In the normal character export process, in example of the Orc, the default export pose in the root pose, and if you export it, the arms will be in root position by deafult, and then you can cull the upper body nodes in the run, side, etc..
In your case, your root is davinci, so when the run plays in place of the root, the nodes not exported go to the root pose of the DTS, which is a davinci pose.
That probably sounded convoluted.. if it came across as confusing, send me an email and I will try to explain it better.
05/04/2004 (6:39 pm)
The Run overrides the root anim in the action thread. frame 0 of run can be davinci, the first frame of the run should also be in the root position. This will force export the arms to be in that position.. the blend run on top of the root and controls the gun look. You can also , in the look blend, move it from davinci on frame 0 to the root pose on frame 1, forcing it to offset to the new position.
In the normal character export process, in example of the Orc, the default export pose in the root pose, and if you export it, the arms will be in root position by deafult, and then you can cull the upper body nodes in the run, side, etc..
In your case, your root is davinci, so when the run plays in place of the root, the nodes not exported go to the root pose of the DTS, which is a davinci pose.
That probably sounded convoluted.. if it came across as confusing, send me an email and I will try to explain it better.
#3
Yep, that's exactly how I'm doing it.
@Joe, I'm not exactly sure if I follow you, so I might be in touch. But let me try to sort through what you said here, if only for the benefit of other people who might be figuring this stuff out.
I'm going to assume that "root" means a gun-toting pose. So I should key frame 0 in a Davinci pose, then frame 1 a root? Then my run cycle currently is from frame 16 to 48, and I export those frames only using the Sequence object.
What you say is confusing to me because you seem to be saying that the position of the character's arms are important within the run animation. I didn't think the arm animation would matter in the run because I'm using a .cfg file to export *only* the leg animation.
BTW, I'm not sure of one thing: should I or should I not check the "blend" checkbox when exporting a run?
Do I *need* to do that, or is it just an alternative to doing the same in the run?
Now I'm confused... My character's root animation isn't a Davinci, it's a gun-toting animation, just like the Orc's. I do have a Davinci pose in the frame 0 of that Max file, but the Sequence object doesn't include frame 0.
It sounds like you're saying the run somehow ends up playing, on the upper body anyway, the first frame of the file from which I'm exporting my DTS. Which is what I was thinking was happening, but I couldn't imagine why it was playing a pose from the DTS instead of my perfectly functional Root animation.
Something just occurred to me: is it bad to have animation in your DTS Max file? I have animation there as a range test. But when I export the DTS I uncheck "export sequences."
Anyway, I'll try the thing you mention with the first key in Davinci and the second key in root.
Thanks Joe, your help is always invaluable with this stuff.
-Spencer
05/04/2004 (10:47 pm)
@Alex: Yep, that's exactly how I'm doing it.
@Joe, I'm not exactly sure if I follow you, so I might be in touch. But let me try to sort through what you said here, if only for the benefit of other people who might be figuring this stuff out.
Quote:The Run overrides the root anim in the action thread. frame 0 of run can be davinci, the first frame of the run should also be in the root position. This will force export the arms to be in that position.. the blend run on top of the root and controls the gun look.
I'm going to assume that "root" means a gun-toting pose. So I should key frame 0 in a Davinci pose, then frame 1 a root? Then my run cycle currently is from frame 16 to 48, and I export those frames only using the Sequence object.
What you say is confusing to me because you seem to be saying that the position of the character's arms are important within the run animation. I didn't think the arm animation would matter in the run because I'm using a .cfg file to export *only* the leg animation.
BTW, I'm not sure of one thing: should I or should I not check the "blend" checkbox when exporting a run?
Quote:You can also , in the look blend, move it from davinci on frame 0 to the root pose on frame 1, forcing it to offset to the new position.
Do I *need* to do that, or is it just an alternative to doing the same in the run?
Quote:In your case, your root is davinci, so when the run plays in place of the root, the nodes not exported go to the root pose of the DTS, which is a davinci pose.
Now I'm confused... My character's root animation isn't a Davinci, it's a gun-toting animation, just like the Orc's. I do have a Davinci pose in the frame 0 of that Max file, but the Sequence object doesn't include frame 0.
It sounds like you're saying the run somehow ends up playing, on the upper body anyway, the first frame of the file from which I'm exporting my DTS. Which is what I was thinking was happening, but I couldn't imagine why it was playing a pose from the DTS instead of my perfectly functional Root animation.
Something just occurred to me: is it bad to have animation in your DTS Max file? I have animation there as a range test. But when I export the DTS I uncheck "export sequences."
Anyway, I'll try the thing you mention with the first key in Davinci and the second key in root.
Thanks Joe, your help is always invaluable with this stuff.
-Spencer
#4
The DTS model is exported in a particular pose. It does not really matter what it is.. but if you have a run animation that does not use the upper body at all, then the pose will be whatever the pose is in the DTS. This pose is frame 0 of the file the DTS is exported from.
Now, to control the body, there are a few threads playing. The action thread controls the animation played when the character moves.. this is the idle (root) , run , side, back movments...
the armthread controls a number of look animations for the gun aiming. This is usally a blend (does not have to be). If it is a blend, the aniamtion is additive, meaning, it only offsets the animation from whatever pose the character is in during that animation.
The reference for all the animations is frame 0 of each particular animation file. If your DTS has davinic at frame 0, that is what the DTS will be. If you have a sequence that starts at frame 1, the offset from frame 0 is what will be exported if a blend, and it will be absolute if it is not a blend.
If you cull out a node, the orientation will be whatever the position is at frame 0 of the base DTS.
So, what is happening, looks like, is that the run is being called (the root stops playing and is replaced by the run) and the arm go back to the pose at frame 0 of the dts (since the .cfg is culling the others)
when the run starts.. it replaces the root animation (and position).. so, you can put the arms in the root position during the run animation and not cull them.. OR, make the base pose of the DTS the root at frame 0 of the DTS (this is how the orc is) OR if davinci is at frame 0 of the DTS and the run has culled nodes, then export the look blends with davinci at frame 0 and offset them to root in frame 1 of the look blend (so the arms offset from davinci into the gun toting pose)
Sorry if this makes it even more confusing.,. there is no right or wrong way to set it in terms of how it gets put together in engine. It is totally flexible, and any way you do it will work as long as all the animations are done to make it 'match' when all the threads are playing and all the animation is playing on top of the action threads.
05/05/2004 (7:43 am)
Ok, sorry to be so confusing,.. I was tired when I wrote that. hopefully this will be better, may not be...The DTS model is exported in a particular pose. It does not really matter what it is.. but if you have a run animation that does not use the upper body at all, then the pose will be whatever the pose is in the DTS. This pose is frame 0 of the file the DTS is exported from.
Now, to control the body, there are a few threads playing. The action thread controls the animation played when the character moves.. this is the idle (root) , run , side, back movments...
the armthread controls a number of look animations for the gun aiming. This is usally a blend (does not have to be). If it is a blend, the aniamtion is additive, meaning, it only offsets the animation from whatever pose the character is in during that animation.
The reference for all the animations is frame 0 of each particular animation file. If your DTS has davinic at frame 0, that is what the DTS will be. If you have a sequence that starts at frame 1, the offset from frame 0 is what will be exported if a blend, and it will be absolute if it is not a blend.
If you cull out a node, the orientation will be whatever the position is at frame 0 of the base DTS.
So, what is happening, looks like, is that the run is being called (the root stops playing and is replaced by the run) and the arm go back to the pose at frame 0 of the dts (since the .cfg is culling the others)
when the run starts.. it replaces the root animation (and position).. so, you can put the arms in the root position during the run animation and not cull them.. OR, make the base pose of the DTS the root at frame 0 of the DTS (this is how the orc is) OR if davinci is at frame 0 of the DTS and the run has culled nodes, then export the look blends with davinci at frame 0 and offset them to root in frame 1 of the look blend (so the arms offset from davinci into the gun toting pose)
Sorry if this makes it even more confusing.,. there is no right or wrong way to set it in terms of how it gets put together in engine. It is totally flexible, and any way you do it will work as long as all the animations are done to make it 'match' when all the threads are playing and all the animation is playing on top of the action threads.
#5
Thanks, that really clears it up. I think :). I haven't had a chance to test it. But it seems clear that I was wrong about one thing in particular: I though sure that the run was using the Root animation on the nodes that weren't exported. It seems I was sorely mistaken. Don't know why I thought that, except it seemed to make sense. I guess it makes more sense that it would simply default to the pose in the .DTS file.
I'm going to try adding the Davinci into frame 0 of the look blend now to see if that fixes the problem.
-Spencer
05/05/2004 (11:41 pm)
Joe, Thanks, that really clears it up. I think :). I haven't had a chance to test it. But it seems clear that I was wrong about one thing in particular: I though sure that the run was using the Root animation on the nodes that weren't exported. It seems I was sorely mistaken. Don't know why I thought that, except it seemed to make sense. I guess it makes more sense that it would simply default to the pose in the .DTS file.
I'm going to try adding the Davinci into frame 0 of the look blend now to see if that fixes the problem.
-Spencer
#6
I ended up going with the method where you add the root pose to frame 0 of the DTS. I probably would've never thought to do that on my own since the Max file that I use to produce the DTS is the one where I tweak the character geometry, and that, to me, means Davinci pose. But I see how it makes sense to make frame 0 the root (and frame 1 Davinci), especially within the context of animation.
Thanks again, Joe!
-Spencer
05/06/2004 (12:07 am)
It works! Hallelujah!I ended up going with the method where you add the root pose to frame 0 of the DTS. I probably would've never thought to do that on my own since the Max file that I use to produce the DTS is the one where I tweak the character geometry, and that, to me, means Davinci pose. But I see how it makes sense to make frame 0 the root (and frame 1 Davinci), especially within the context of animation.
Thanks again, Joe!
-Spencer
Torque Owner Alex Swanson