• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: VWR-15403
Type: New Feature New Feature
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Mel Vanbeeck
Votes: 9
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
1. Second Life Viewer - VWR

Add higher animation priorities

Created: 04/Sep/09 12:22 PM   Updated: Saturday 04:02 PM
Return to search
Component/s: Avatar/Character
Affects Version/s: 1.23
Fix Version/s: None

Issue Links:
Relates


 Description  « Hide
Pretty much all avatars in SL use some sort of AO to trigger a custom set of animations, and due to the way these AO's detect an avatar's status, animations designed for them need to be uploaded at a higher priority to compete with the default avatar animations.

The easiest example to illustrate is the walk animation. Part of the default duck walk is priority 3. Typically, you'd expect it could be overridden by another priority 3 walk, which works fine until your avatar steps over a gap, or falls a short distance, your viewer sees that you were falling for .02 seconds, but your AO does not. The result is the default falling animation is played for .02 seconds, then your walk animation is triggered again, overriding parts of your AO's walk with the refreshed duck walk, resulting in a ridiculous looking wobble. There are 2 possible solutions to this specific issue of walking - one is to use a priority 4 walk which will not be affected by any of the default animations, and the other is to implement a customizable viewer AO instead of a scripted, attached AO (as suggested in http://jira.secondlife.com/browse/VWR-386).

In my opinion, both of these solutions are needed to address the overall needs of avatar animations in SL. The reason the internal AO doesn't fix everything by itself is somewhat complex. One straightforward reason is that just about every walk available in SL today is already priority 4. The problem, as has been pointed out in numerous other JIRAs, is that it is important for other animations to be able to persist over these priority 4 walks. Classic example is the arm holding the hand bag. Currently, the only way to make a Pri4 hand bag animation overpower those priority 4 walk animations is to put a script in the handbag that spams the handbag animation (causing it to stack many copies of itself in the avatar's animation info). This procedure is (probably) taxing on the sim, and generates all sorts of unnecessary network traffic, etc. The situation would be resolved very simply by allowing higher priorities so you could set your handbag to priority 5, or as the case may be, your handcuffs to priority 6 so you know that no matter what you do, your hands will stay cuffed!

Currently, there are a number of people who have already figured out how to upload higher priority animations, many of whom jealously guard their trade secrets, and others who openly distribute their tools and techniques. This is really something that you shouldn't need to pull a rabbit out of a hat to accomplish, though, and it would eliminate a lot of wasted time and sim/client/network resources.

Special bonus features - as was pointed out by many other JIRA contributors, the animation system in SL allows for setting per joint priority for animations. There is already a tool out there for creating animations with joint priorities (see Zwagoth Klaar's posts in http://jira.secondlife.com/browse/VWR-2374), but this requires you to convert the animation to the native SL format (not .bvh) outside SL, then bulk upload it using the modified bulk uploader in Emerald Viewer. Wouldn't it be great if you could just pop out a panel in your animation upload dialog and punch in the priorities for each joint as you upload?



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
WarKirby Magojiro added a comment - 04/Sep/09 02:34 PM
How would adding higher priorities help? Bad animation makers would just make their walk anims even higher priority than before, and you'd get the same issue.

A better way:

1. Make it possible to DISABLE, not just override, the linden default animations.
2. Discard the horrible concept of priority embedded in the animation asset. Make a new animation function which takes a priority as an argument.
3. Community agreed standards on what each type of animation should have as a priority. eg, walks, 1 or 2, etc.


Mel Vanbeeck added a comment - 04/Sep/09 02:57 PM
WarKirby: Well, for starters, the problem in the status quo isn't bad or uninformed animation makers. It actually doesn't work, whether your animator is smart or not. Priority 3 walks don't work. Priority 4 walks do. They make their walks Pri4 - that's smart, but leaves other anims without an opportunity to continue undisturbed at a higher priority = broken.

Your ideas have merit, though it would somewhat increase the complexity of the SL universe for your average joe who has no idea what an animation priority is and is just double clicking them out of his inventory. The addition of support for priority 5 and 6 is a very low work solution - there are already functioning priority 5 and 6 animations in world as we speak. All that needs to be done for anyone to be able to create them is to update the uploader to offer it as an option to all.

In the long run I'd like to see a better AO solution, and from what I understand Lindens have talked about it, are in favor of it, but have no intention of devoting resources to making it happen any time soon. Your number 2 item has some drawbacks, though. With embedded priorities you can set the animation priority for each individual joint. As it is, you make this decision with crude tools of whether to set each joint's priority to 0 or X (X being between 1 and 4). If you change the joint's position between frame 0 and frame 1, it will be set to X, otherwise it will be set to 0. The actual animation engine in SL supports any priority combination for all joints, though, and would happily play a single animation with some joints at 0, others at 3, others at 4, and still others at 6. The uses for this may be obscure, but that power and flexibility is indeed useful! If only the uploader didn't dumb it down so much!


tatiana niven added a comment - 06/Sep/09 07:54 AM
You can gain access to this functionality just by editing anim.ini (at least, on the current RC)

I've already uploaded anims with priority 5 and 6 on the normal client, and I even uploaded an animation with per-joint priority.

Not going to describe the finer detail right here, because presumably LL deliberately only exposed priority up to 4 to us... If a Linden comments here saying this is fine, I'll happily describe exactly how to do it.

But yeah, the comment saying saying giving us access to 5 and 6 is a 'low work solution' is right on the nail. Two lines of code in an ini file did it for me.


Mel Vanbeeck added a comment - 21/Nov/09 06:10 AM - edited
Well, this has been here 2½ months now. LL has had plenty of time to post any complaints about the issue so in the interest of moving forward I'm going to go ahead and post the information needed to test priority 5 and 6 animations in SL.
____________________________________________________________________
Method 1:
close Second Life
open Second Life/skins/default/xui/en-us/floater_animation_preview.xml in a text editor
modify this section:

<spinner decimal_digits="0" follows="left|top" height="18" increment="1" initial_val="0"
label="Priority" label_width="50" left="10" max_val="4" min_val="0"
name="priority"
tool_tip="Controls which other animations can be overridden by this animation."
width="90" />

change max_val="4" to desired maximum animation priority level
upload your animation normally, choose desired priority level

Method 2:
close Second Life
open Second Life/app_settings/anim.ini
add this section to the top:

[GLOBALS]
priority = 6 (or other desired value)

upload your animation normally, choose desired priority level

Method 3:
download the modified qavimator created by Zwagoth Klaar referenced http://jira.secondlife.com/browse/VWR-2374?focusedCommentId=112939&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_112939 . Create an animation and save it in the .anim format, polish it using his AnimMaker tool, then upload it using Emerald Viewer's bulk upload (Or Zwagoth's uploader patch).
____________________________________________________________________

For methods 1 and 2, you may run into a windows permissions error preventing you from modifying the file in question. You can get around this by running your notepad as an administrator (right click > run as administrator), or by copying the contents of the file in question into a new one, then delete/swap the old one out.

What needs testing is whether the server can handle all animation priorities on all joints, whether the various viewer mods posted above have any pitfalls or shortcomings, etc. It would be nice to hear from a Linden whether the server has any issues with higher priority animations. To help new animators, it might also be wise to add some guidelines in the uploader in the form of tooltips for what would be an appropriate priority level choice for certain types of animations.


Avimote Dreamscape added a comment - 21/Nov/09 04:02 PM
I urge content creators to use this information responsibly, making user experience the first priority when determining the appropriate priority for new animations.

There are hundreds of thousands of existing products which make heavy use of the fundamental assumption that starting a priority 4 animation will override whatever existing animation is playing for the affected joints.

We do need more priorities. It is a real shame that Linden did not have the foresight to set a standard with more than one priority above the system animations at the beginning of time.

Before uploading a new animation at a priority higher than 4, please consider whether your user will honestly expect your animation to continue playing when they sit on a chair or join a dance ball or get into a car or any of the thousands of other possible actions they might take. Similarly, please consider whether your animation is going to break all those existing shoes and accessories that currently use priority 4 scripts to lock ankles and arms.

There are certainly situations where a priority 5 animation which overrides just a few joints opens fantastic new possibilities. However, the person who creates an AO full of priority 5 animations has doomed their customers to a life of confusion and simply elevated the problem we have today with priority 4 animations to priority 5.

Should we foresee that inevitability and upload our cool new animations, which are by far the best and most definitely the only ones which should be playing, at priority 999? Or 99999? Obviously this is absurd. In the absence of guidance from Linden and enforcement of limits at the server level, it is up to those of us with the skill to circumvent the limitations to be responsible.

I recommend that we establish guidelines for the use of higher priorities. To this end, I have taken the first step and created a Wiki article at https://wiki.secondlife.com/wiki/Animation_Priority

It could use some additional examples of good uses for lower priorities, if there is anyone out there that is having success with those.

AD