LSL Feature Request: New statements for creating and playing back synthesized animations.
tracked
Kyle Linden
How would you like the feature to work?
Proposal Description.
Implementation of scripts to experiment with the following functions.
Partial playback of animation (setting start and stop times), EaseIn, EaseOut, Looping, LoopIn, LoopOut, Bone information, and Priority override.
Preloading of animations and confirmation of their completion.
Why is this feature important to you? How would it benefit the community?
SL's animation playback scripts have remained very primitive and unchanged for the last 20 years.
I think it is time to add new functionality, and this time I would like to propose the implementation of a new script that can be executed on the viewer side.
(This is a function that should be executed on the server side, but since the scale of the modification is likely to be large, I am daring to propose something that can be executed on the viewer side this time.)
This year SL has been able to obtain beautiful screens by supporting PBR Materials, and I would like the next step to improve the animations.
Problems.
Currently, it is difficult to prepare the necessary animations, except for users who can create their own animations.
This leads to the purchase of commercially available animations, but in such cases, it is rarely necessary to use everything from the beginning to the end of the animation.
Scripts can make the animation stop early, but what is really needed is only part of the way through, and only some of the bones of the animation.
For this reason, I have long felt the need for a function that would allow me to extract a portion of the motion from multiple animations and merge it together to create the motion I need.
Technical Benefit.
With this function, anyone can get the animation they need by synthesizing even existing animations, making it easier to create machinima, dance videos, VLogs, and other animated works the way they want.
Poses can also be created by setting the start and stop times to the same and activating Looping.
This helps the photographer to create poses. Although it is possible for photographers to create poses themselves, they are not experts in creating poses. In this respect, poses cut from animated images are dynamic and can easily be used to get the poses needed.
The ability to play back the animation in slow motion with a sequence of poses also makes it possible to accurately adjust the start time of the animation and the position of objects when setting up a scene in which avatars or avatars and objects are in contact during the creation of a movie.
For example, it helps to adjust the position of the hands and legs when avatars fight each other, or to correctly align the bat and ball when an avatar hits a ball with a bat.
Effect on the market.
In the past, some would have wanted to make a video but had difficulty obtaining the animation they needed, so they compromised with animation of unintended movements, or gave up on the production.
Photographers also struggle to obtain unique poses that are different from others.
In such a situation, the implementation of this function will change the situation.
At the very least, it will be a great benefit to video and photo shooters who use animations and poses.
Also, animation is a labor-intensive process to create a good motion of the whole body, but it is easy to create various motions of some bones.
So there could be a market for such animations. If it encourages new animation creators and photographers, the trend will circulate. The result will be a reflection of SL as a whole.
The Art, Music and Photography forum and the Machinima forum will be revitalized.
SL videos will increase on YouTube and other video posting sites.
Considerations.
Since scripts are executed on the viewer side, necessary animations must be downloaded in advance.
Therefore, a function is also required to preload animations to the viewer side and check if they exist.
Scripting is not that difficult to implement, since all that is required is to extract a portion of the animation once downloaded to the viewer side, override EaseIn, EaseOut, Looping, LoopIn, LoopOut, bone information, and priority, and then replace it with a conventional animation file. It is not that difficult to implement.
However, throughput will not be improved because all of the animation data will be downloaded, even if only a portion of it is used.
Still, since there is no need to consider communication latency, animation synthesis will be accurate, and high quality animations will be generated, so there will be no more shooting failures.
On the other hand, there is a possible way to do this on the server side.
That is, only the necessary parts of the animation are cut out on the server side.
This reduces the amount of data transmitted and lowers throughput, which is a great benefit to the user but increases the load on the server.
In addition, the latency caused by the communication will delay the composition of the animation, so accurate composition will not be possible. In this case, it may be necessary to use the Ease setting to cover up the inadequacy of the animation composition.
The implementation of this will be difficult, as it will not be handled solely by the viewer.
However, if this can be done, there is an advantage of being able to use composited animation for animations seen by others, such as AO, Game, Experience, Combat System, and so on.
Log In
Kristy Aurelia
Would be nice if viewer could override these too, many people use viewer based Animation Override feature that's in Firestorm and Alchemy viewers (maybe some other viewers too), so would be nice if those features could take advantage of the new features and adjust priories etc.
Note: there is a separate Canny to add the Viewer AO feature to the LL viewer.
Edit: also - Gestures. So we can specify in a gesture which part of animation to loop etc.
Spidey Linden
tracked
Issue tracked. We have no estimate when it may be implemented. Please see future updates here.
Vincent Nacon
Long overdue, but yes; this should be in scripting features section.
Kadah Coba
Shouldn't this be in the scripting section of Canny? :V
Martin Yeats
I love this, and have been wanting this kind of functionality for years.
>> "Therefore, a function is also required to preload animations to the viewer side and check if they exist."
Common practice in the SL performance world is to "cache" your animations by rapidly playing them. This is very hit or miss, as you'd expect. It would be nice to have a function to force the caching of a dance animation, and I can see how it would work smoothly for one avatar... but to be of value to a performance, you want to ensure everyone at the event has precached the dance. I hope you consider the "audience" use case for this functionality.
Another possible addition to this... can we have the ability to play any animation as a "mirror" so animation creators can stop wasting time uploading mirrored versions of animations?