Jump to content

Making animated idles stoppable


Edmond Dantes

Recommended Posts

Hello members,

 

I've been wanting to do some modifications using existing Fallout 3 idle animations but some of them can be setup in such a way as to loop indefinitely. Console command like playidle reset is ineffective with them, including animations reset functions found in mods like the Groovatron.

 

Basically my question is, how can I make those idles stoppable using either playidle reset or reset function in Groovatron?

 

I know from experimentation that setting a stop time in the animation can stop the animation, but what I want is to be able to have the freedom to stop it when and if I want. Certain animations like umpa dances, and Fallout idles in Groovatron can be stopped using the reset command, and I'd like to know how or what modifications do I have to make to the kf (using Nifskope) in order for the idles to be stoppable.

 

Thanks in advance

Link to comment
Share on other sites

There are probably much better people to answer the question, and hopefully they'll post here, but baring that I'll post what little I remember on the subject.

 

I'll be honest it's been something like a year since I was messing with idles myself, but as I recall the only way I could find to stop an idle was to play another special idle that is just a couple frames long and references all the bones with a high priority. Basically (again if I remember correctly) a special idle overrides any other idle at least for the bones it references, so make a one or two frame animation off the starting pose from mtidle with a locrot key for all bones at 100 priority. I think that should stop all other animations currently active... I think.

Link to comment
Share on other sites

There are probably much better people to answer the question, and hopefully they'll post here, but baring that I'll post what little I remember on the subject.

 

I'll be honest it's been something like a year since I was messing with idles myself, but as I recall the only way I could find to stop an idle was to play another special idle that is just a couple frames long and references all the bones with a high priority. Basically (again if I remember correctly) a special idle overrides any other idle at least for the bones it references, so make a one or two frame animation off the starting pose from mtidle with a locrot key for all bones at 100 priority. I think that should stop all other animations currently active... I think.

 

Thank you for the reply.

 

That's an interesting theory. I thought the ability to stop had to do with the animation in question, but what you say makes sense too. I'll give it a try and post it here. I'm not really sure which animation uses all the bones but I guess I could start with the mtidle. I'll post back and report on the result.

Link to comment
Share on other sites

Well, I gave it a try and unfortunately it doesn't work :confused: It was a good theory though. Thanks anyway Rain.. btw, I love the words on your signature :thumbsup:

 

So my original question remains: how can I modify an idle (in Nifskope I assume) to make them stoppable by playidle reset or the Groovatron's animation reset? My intent is to allow the idle animation to loop indefinitely while still giving me the ability to stop it when I choose too. Drayk_cannon the author of the Groovatron, was able to do this. He/she modified some existing Fallout idles and animations that can loop but can also be stopped using the reset function.

 

I'd like to understand how this was done, but unfortunately I haven't been able to reach Drayk_cannon, so I put this question out here hoping someone with advanced Nifskope knowledge can help.

 

Feel free to drop a line if you have any ideas. I'm open to any suggestions. Cheers

Edited by Edmond Dantes
Link to comment
Share on other sites

Well in theory the technically correct way to start an idle is "PlayIdle BLAH" and then use "PlayIdle BLAH" again to stop it... though idles and very finicky beasts and I do not remember if the "right way" to stop them has any actual effect at all.

 

I can totally sympathize with wanting to match Drayk_cannon's greatness but I myself fell short. I don't know why. I studied everything I could about the Groovatron mod and every single field in every datablock of the animations included but for some reason they still did things with that mod I couldn't replicate. Not sure if I am just stupid or if I missed something simple along the way. For myself I am pretty sure I had to use a blank reset idle like I said above to stop an idle on myself, while I think just using the PlayIdle again would interupt one on an npc... or maybe it was reversed.... either way my main working directory for all those projects was always called "****ing with mtidle" since all I managed to do was generate more questions then answers and usually ended up corrupting the main idles. Then again I was exporting my idles from blender like over a year ago which means a different version of the nif export scripts I suppose. Maybe its easier now, or at least one can hope.

 

Hmmm I guess the bad news in all this jumble of words is I had compared my animations very thoroughly in nifscope to ones used in other mods and couldn't find a substantial difference. I think the amazing thing with groovatron was How it called on and activated the idles. Supposedly (and again I haven't been making little animations for a year now) the only way to use a special idle on the player any time you want, is to first put the player in ToggleFLyCam mode or so I'd been told, but again groovatron slaps a scripted spell on you that calls up the animation and somehow it works.

 

As for myself I am generally satisfied just to stare in slack-jawed amazement at the massive coolness that is groovatron... and wish I could pull off reliably calling up and stopping idles any time I want.

 

Heh and as for the siggy, been my moto for years and years now, both on the net and off.

 

 

Oh yeah and hell if I can remember quite what it was but I did manage to screw up most idles I tampered with at first, so that they played indefinitely and couldn't be interupted... crap if I remember how i fixed that I'll get back to yah but those directories were part of what got eaten when my last old IDE drive bit the dust so I can't check my old stuffs.

I think it was something like, as usual, I was following a guide and the method the guide described turned out a forever looping animation even when I set it to clamp_cycle or whatever. I think in the end I had to do something quite illogical to make it work. I'd experiment with it again now (since I lover getting my stupid poses working in game) but I am busy making some other crap right now.

Best of luck to ya

Edited by rainrtw
Link to comment
Share on other sites

It maybe an idea to look at the Groovatron mod it has buttons for stop all idles amongst other things.

 

Yes, I did look at the Groovatron. As I said in my opening, the stop function doesn't work for certain animated idles. Drayk_cannon, the author of the mod must have made some changes to those game idles for them to be stoppable, unfortunately, looking at both the kf or the way it is set up in GECK didn't bring me closer to an answer.

 

Which is why I'm hoping someone might be able to shed some light on the subject.

Link to comment
Share on other sites

  • 1 month later...

Greetings,

 

I recently ran into Edmond Dantes problem myself and today I found a solution that works for me.

 

I had created my own special idle animations with blender, had them set up in the GECK to loop indefinitely (by ticking the “Loop Forever” checkbox in the Idle Animations dialog) and when I started the idle with the playidle command I could not stop it again, or even force the actor/player to play a different idle. All subsequent playidle commands were ignored. Bummer.

 

This is how I set up my animations with NifSkope now, so I can start them with playidle xxx and then stop them at any time by calling “playidle xxx” again or by starting another idle animation.

 

I use specialidles, so the name in the “NiControllerSequence” obviously has to begin with “SpecialIdle”. The cycle type must be set to CYCLE_LOOP, the start time and end time must be “correct”. With this I mean start time should be 0 and end time should be how long the animation really is, ie. 2.4 for a 2.4 second animation loop.

In the NiTextKeyExtraData array at the very bottom of the tree I have four text keys:

The first is simply called “Start” (without quotes of course) and has time set to 0.

The second is called “Startloop” and has time set to 0 too.

The third is called “Endloop” and has the time set to the actual ending time of the animation. 2.4 for example.

The fourth is called “End” and has time set to “<float_max>”. Without the quotes, of course. Yes, you enter this string into the number input field, no joke. This means the animation doesn't actually loop indefinitely, it would stop after roughly 10^38 seconds (that is a couple billion years, so I guess that counts as infinite anyway).

 

From the GECK's point of view, this animation is now defective. You will get a bunch or warnings in the EditorWarnings.txt file saying that xxx should not be a looping animation. Heh, what does the GECK know. It works just fine.

When you set up the file in the GECK, “Loop forever” should NOT be checked and Min and Max should be set to 0.

 

I hope this helps. If anyone knows a way to do this without causing the GECK to burp up warnings all the time ... let me know, please :)

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...