Jump to content

Over-riding 'internal animation' expression with another animation


Pussycat Catnap
 Share

You are about to reply to a thread that has been inactive for 2339 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I've seen a few products that do this, I even have two of them.

But I'd like to figure out the basics of doing it myself.

The internal animations, aka 'emotes', or facial expressions ( http://wiki.secondlife.com/wiki/Internal_Animations )- when they trigger, I'd like to play a certain animation. Kind of an AO to override these. This is particularly useful for things like Bento heads.

Both of these two products do this, but also do a long list of other things as well:

https://marketplace.secondlife.com/p/BENTO-EXPRESSION-HUD-V13/11827184

https://marketplace.secondlife.com/p/HD-bento-Facial-expression-HUD-BENTO-poseao/11027732

 

I gather this is as simple as finding a way to, with as low lag as possible, know that an expression has been triggered. And then when that happens, simple play my chosen animation. Not so much worrying about the 'expression' as it is animating a part that is no longer visible if I'm wearing a bento attachment over that - as with those HUDs I've linked.

Any suggestions on detecting when something has triggered one of these?

Do I just need to set up a nearly 0 time timer (that seems like a lag beast), and scan for the UUIDs of these animations?

Running 'llGetAnimationList' every 0.1 seconds or something and comparing the list against every UUID that I wish to do something with?

That seems... pretty lag inducing.

Any better solutions?

 

 

Link to comment
Share on other sites

It would be great if whatever is triggering the internal emote animations broadcasted it was doing so on a known channel, else you're going to have to poll llGetAnimationList(). You could at least typecast or hash check the list each poll to see if it has changed and if it has, go through your "animations of interest" list.

Link to comment
Share on other sites

I've looked at both adverts and, while clearly they play animations to affect your facial expression, I see nothing in the adverts -- and it may be that I've not looked closely enough -- to indicate that they're triggered by any facial expressions that might be playing.   

Indeed, I cannot offhand think of circumstances in which the facial expressions provided as internal animations actually do play automatically, other than as part of emotes or when they're triggered by an attachment (e.g. something that makes you smile at random).

As Lucia says, if you really do need to detect when an internal animation is playing, and then play a substitute one to animate the mesh head, then continually checking llGetAnimationList is the only way to do it, but I'm not at all sure why you would need to do this.

I think if I were trying to animate a mesh head, I'd approach it in the same way as whoever scripted my Slink hands did it -- that is, have a HUD to play particular animations when I want them (so smiles, frowns, winks and so on) and maybe very subtle random changes of expressions the rest of the time.

If you want to tie the animation in with gestures, then have the head listen on a particular channel and have the gesture say a cue on the appropriate channel when it's triggered.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 2339 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...