Game Development Community

nonblend DSQ trouble

by TheGasMan · in Artist Corner · 11/04/2009 (12:29 pm) · 12 replies

I would like to force a nonblend animation to play on a character.
I want it played the EXACT way I animated the character, which is how the DSQ shows in showtool.

However, in-game, the nonblend animation is being changed by the blend animation prior to that nonblend.
Some say that's how it works, some say it's a bug. There aren't any docs, that I am aware of, that explain DSQs technically.

Can someone tell me how I can force an animation without it being altered in any way by other animations that are used by the character ? I want these animations to play precisely as made.

thx




#1
11/04/2009 (12:37 pm)
I was under the impression ....

If you have ALL the nodes accounted for with animations keys in your DSQ that the animation will override all others, including blends. Might also help if you give it the highest priority.

I'm not that up on playing animations, does playCelAnimation still work? Is that what these sort of dance/celebrate/range/salute animations where back in TGE?
#2
11/05/2009 (9:43 pm)
even those animations are altered by the [previous blend animation]..they are not played 'absolute'.

obligatory image of Orc's wave being altered by the 'look' angle:
www.ericrbarth.com/uploadpanel/view/wavewtf.jpg

I'm at a loss for words,..I need absolute animations played. Anyone do this ever ? ..point me in the right direction plz. I'd like to avoid dissecting the player source.

//Edit:
@Steve, There must be a way, I just have not found it yet.
#3
11/05/2009 (10:25 pm)
hmmm... death is I suppose the only one which forces everything because there is no interference ... because the client is not in control of the avatar.

But that is a bit "extreme" to have to take momentary player control away.

I'll just check something
#4
11/05/2009 (10:28 pm)
I eventually plan to remove avatar control if the DSQ system is incapable of this.
//edit: but yeah, wth.
#5
11/05/2009 (10:37 pm)
I see what you mean, I can look around and move my head if I play a death animation using either playdeathanimation(1); or playthread(1, death1); - playcelanimation doesn't seem to function ...

On the remove user control note - I'd previosuly set the controlobject as a spare waypoint marker as a way of removing keyboard control at certain points (like preventing the player from moving the cam around after death so that they had to wait for a pop-up menu to exit the level) and I'd planned to use it for freezing the player during gui cutscenes, info text on screen and that sort of thing.

It was a handy, general way to remove player control for a time - waypoints don't move.
#6
11/05/2009 (11:42 pm)
BrokeAss guys ? ..Calef ? Rex ?

#7
11/06/2009 (5:17 am)
Found here in the TDN:
tdn.garagegames.com/wiki/DTS/FAQ/General_FAQ#Animation
Why are my blend animations being overridden by other sequences?
Blend sequences should not be overwritten by other sequences, but some sequences on the player shape (such as run and walk) will override any sequence that is currently playing once it has been activated.
-----------------------------------------------

Now if I can just find out how the walk/run overrides blend anis.
#8
11/06/2009 (6:43 am)
The ActionThread is the 'issue' here, I believe. They take precedence; always. I believe it a throwback to the original FPS base to the engine. With the twitch and shoot factor of an FPS, you basically do want extraneous animation to 'end' when the most important feature of the engine is used; Movement code.

For Ruin Online, we changed Source to allow for this basically to NOT happen; which is how we achieved melee weapon attacks and open hand combat. With this system, the Action Thread does not take control over any sequence, they basically all 'blend'. This would probably not produce the 'clean/absolute' animation you're seeking...

This is a fundamental departure from the stock code base....me thinks, get ready to wade, wade, wade thru Threads, and the Animation scheme.

Good luck!

May have to hack around with scripting as well....like remove the current 'blend' on the player briefly before applying the Action Thread sequence....in your calling sequence/code.

It may help to explain what you are trying to achieve....have you tried changing priority of this new 'absolute' sequence to the highest level[5]?? all nodes?

It almost seems as though the Player Class needs new Thread classifications....we need a 'head' thread...an 'upper body' thread, etc...to isolate the areas of the body which need independent motion....??!

Have you tried applying this sequence as an armThread?? and not an ActionThread?
#9
11/06/2009 (8:25 am)
I'll try setting the sequence to "5". I tried 6,7,8 and 9. ..never knew it stopped at 5.

(I can't explain what I am doing, due to an NDA. Not sure if it would ruffle feathers to even explain this portion of the project.)

The animations are fullbody. I can say that. ;)

Rex, I'd like to buy you a big beer if this works out well.
#10
11/09/2009 (8:10 am)
:/ ..doesn't work.

To iterate my frustration aloud, I would like to state:
"The Orc issue above proves the DSQ system has documentation falsities."

- I'll have to dive into the code to fix this. Another thing to fix, yay.


#11
11/09/2009 (12:16 pm)
Not sure if this helps...

I have NPCs in my game for which I need to play full-body non-blend animations, which may be called while they are in the middle of another (idle) animation sequence. So I need to be sure that the non-blend animation plays and is not altered in any way.

I play the NPC idle animation sequences using the "setActionThread" command. If I need to play a full-body non-blend animation, I do the following:

1. stop the idle animation by issuing a new "setActionThread" command to play a "still" animation -- that is, the NPC just sitting still in the root position.

2. play the non-blend DSQ animation using the "playThread" command.

3. when the animation is done, I stop the thread and re-call the idle sequence using the "setActionThread" command.

This generally works pretty well for me, although there are always a few glitches that I can't readily explain. But for player characters, I assume you could do the same thing if you temporarily take control away as Steve stated. I do this in my game by popping the actionMap and pushing a custom actionMap that has very restricted input, until the animation has ended. Then I push the regular actionMap back.
#12
11/17/2009 (3:01 pm)
Thx for that reply Rubes and I would do that if the object was not controlled by the player.

The only way I solved this for now was to remove the look and head blend animations from the animation list. Not 100% correct but it's viable until I find the time to dive into the code.