SL project updates 19/2: NEW projects – supplemental animations and animated objects

The following notes are taken from the Content Creation User Group meeting, held on  Thursday, May 11th, 2017 at 1:00pm SLT at the the Hippotropolis Camp Fire Circle. The meeting is chaired by Vir Linden, and agenda notes, etc, are available on the Content Creation User Group wiki page.

Audio extracts are provided within the text – although please note, these are not necessarily presented in the chronological order in which they were discussed in the meeting. Rather, I have tried to place a number of related comments by Vir on specific topics together – project scope, constraints, etc., where in the meeting they may have been discussed / reiterated at different times. Medhue Simoni recorded the meeting, and his video is embedded at the end of this report for those wishing to following the discussion chronologically. My thanks to him for the recording.

The meeting held two major announcements: supplemental animations and animated objects, both of which are being loosely referred to under the umbrella of “animation extensions”.

Supplemental Animations

This is an idea to overcome issues of animations states keyed by the server-side  llSetAnimationOverride() conflicting with one another. This problem has been particularly noticeable since the arrival of Bento, and a typical example is that an animation to flap Bento wings, if played to have natural wing movement while walking, results in a conflict with the walk animation, causing the avatar to slide along the ground.

  • Supplemental animations will allow additional animations to run alongside the basic llSetAnimationOverride() locomotion graph, requiring updates to the server-side animation code, rather than any viewer updates.
  • The changes will allow for more than one supplemental animation to run at the same time – so you could have wings flapping while walking and a tail swinging – providing the animations are restricted to using discrete sets of bones and do not clash (e.g. the wing flapping doesn’t call on a bone used in tail wagging or walking). If there is an overlap, the normal animation priorities would then determine which animation is played.
  • While the syntax still has to be worked out, it will likely be a call to add a set of supplemental animations associated with a specific state (e.g. walking) on attaching a relevant object (such as wings), and a call to remove the animation set when the item is subsequently detached.

Animated Rigged Objects

The Lab is starting work on adding the ability to animate rigged objects to Second Life – something which has been the focus of ongoing discussions within the Content Creation User Group for the past several months.

General Overview, Initial Limitations – *NOT* NPCs

  • At this point in time, this is not about adding fully functional, avatar-like non-player characters (NPCs) to Second Life.
  • It  is about providing a means to use the Bento skeleton with rigged mesh to provide things like independently moveable pets / creatures, and animated scenery features via scripted animation
  • The project may be extended in the future.
  • It will involve both back-end and viewer-side changes, likely to encompass new LSL commands to trigger and stop animations (held in an object’s inventory)
  • It’s currently not clear if this will involve a new type of mesh object, or whether it will need a new flag added to an existing rigged object type in order for the object to be given its own skeleton. But either way, it will be in the same family of rigged mesh objects which is current available.

  • While these objects may use the avatar skeleton, they are not avatars.
  • They will not:
    • Have any concept of body shape or avatar physics associated with them.
    • Use a Current Outfit Folder for wearables.
    • Utilise any system wearables (body shape, system layers, physics objects, etc.).
    • Be influenced by the shape sliders, or have any gender setting (as this is determined by the shape / shape sliders).
  • They will only be related to avatars in that they have associated animations driving them.

  • Given this is not an attempt to implement fully avatar-like NPCs in Second Life, use of the term “NPC” with them is not encouraged.
  • At the moment, the preferred term is simply “animated objects”.

Performance Concerns

  • There is liable to be two areas of impact for this capability:  in-world land impact, directly affecting the simulator, and a rendering impact on the viewer.
  • Right now, the Lab has no idea how great either might be, but they do mean that what can be supported could be limited (hence a reason for not jumping directly to providing “full” NPC capabilities).  However, it will be something that will be monitored as the project moves forward.

General Q&A

This news prompted a range of questions, which Vir sought to address:

  • Would this mean custom avatar skeletons?  – No, it would use the existing (Bento) skeleton, and attaching it to an animated rigged object. However, joint positions and offsets will be supported, allowing the skeleton to be modified to meet different uses.

  • Will this allow the use of Animation Overriders on objects?  – No. objects would at this stage not have  their own locomotion graph like an avatar does, and therefore would not have any notion of walking or flying, etc. All animations would have to be scripted.

  • Does this mean limits associated with the current avatar skeleton – such as the limit of placing a bone no further than 5 metres from the avatar’s centre via an animation – will still apply? Yes, any limits baked into animation will remain. The idea is for existing meshes and existing animations would be able to leverage this capability. In terms of the 5 metre offset limitation.
  • Could animated objects be attached to an avatar?  – This is not necessarily what is being looked at, which is not to rule it out; rather, the emphasis at the moment is getting things animated independently of avatars. There is also a concern over the potential additional impact of animated attachments to an avatar may have.

  • What happens if a script tried to drive the rigged mesh, rather than the avatar skeleton? – Normally, the scripts driving an avatar are in the attachments to that avatar, so “crossing the beams” is not something the Lab would recommend.
  • Is the Lab using this to help fix Pathfinding? – Not really. Pathfinding has its own set of issues and these are unlikely to be tackled as part of this project.
  • Can the skeleton for an animated object be assigned via script from an inventory object? – This might cause permissions issues.
  • How will a script know which object to animate? – The basic thinking is that the script would be inside the object it is animating (as is currently the case for placing scripts in an object), and so has permissions to animate that object. Using a single script to animate multiple independent objects would be more complicated and require some kind of object ID.
  • Could several rigged objects (rigged the same) be linked and have the same animation played? – Yes; the difference would be the object would be animated with respect to its internal skeleton rather than an actual avatar skeleton.
  • Would it be possible to sit on animated objects? – Possibly; although there might be issues, things might look odd. The Lab hasn’t investigated far enough to determine potential gotchas for this, but the hope is animated objects could work for vehicles.

  • Could animation scaling be used to adjust the size of an animated object? – It might make more sense to add some kind of “global scale” which would allow a skeleton to accommodate itself to the size of its object (rather than the object’s size being defined by the skeleton).

  • Will this allow animated objects to have wearables and attachments? – Not at this stage (although mesh clothing could in theory be a part of a the linkset making-up an animated object).  This is a very focused project at this point: playing animations in-world on rigged objects.

Other Points

  • A suggested name for the animated objects project is “Project Alive” – this might actually be adopted!
  • The are no plans for a blog post announcing the project. However, a mechanism will be provided for people to keep involved and comment on the work, possibly via a forum thread, as was the case with Bento. This might at some point utilise polls to focus down on people’s preferences.
  • The in-world forum for discussing this work will be the Content Creation User Group.
  • Between the 44:24 and 51:10 there is a discussion of adding a prim cube) as the root of the skeleton, allowing it to inherit physics and the abilities associated with a prim, morphing physics, plus using IK (inverse kinematics) with rigged object skeletons etc. Pros and cons of these ideas are discussed – largely in chat.  In short: the Lab are still considering how physics might be handled, although they are unlikely to opt for animated or morphing physics, while IK would also need to be looked at.
  • At present, there are no clear time frames as to how long these projects – supplemental animations and animated objects – will take, or when they will be implemented, simply because they are in their early phases. However, given the supplemental animations are restricted to server-side changes and do not require associated viewer updates, they might arrive sooner than animated objects.

Applying Baked Textures to Mesh Avatars

This remains under consideration, with Vir noting animated rigged objects could add a level of complexity to it, were it to be formally adopted as a project.



One thought on “SL project updates 19/2: NEW projects – supplemental animations and animated objects

Have any thoughts?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s