SL project updates 42/2: Content Creation User Group

The Content Creation User Group Meeting, Thursday, 13:00 SLT

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

Medhue Simoni live steamed the meeting to You Tube, and his video – in two parts – part 1 and part 2. These have been embedded as a playlist at the end of this article, as should play one to the next. Time stamps to the recordings are included below, and clicking on any of them will launch each video in a separate browser tab at the assigned point. However as these notes present the meeting in terms of topics discussed, rather than a chronological breakdown of the meeting, so some time stamps may appear to be out of sequence.

Animesh (Animated Mesh)

“I like the name ‘animated objects’ because I think it’s unambiguous, but it takes a long time to type!” – Vir Linden joking about the name “Animesh”.

Project Summary

The goal of this project is to provide a means of animating rigged mesh objects using the avatar skeleton, in whole or in part, to provide things like independently moveable pets / creatures, and animated scenery features via scripted animation. It involves both viewer and server-side changes.

In short, an Animesh object:

  • Can be any rigged / skinned mesh which and contains the necessary animations and controlling scripts in its own inventory  (Contents tab of the Build floater) required for it to animate itself.
  • Can be a single mesh object or a linkset of objects (link them first, then set them to Animated Mesh via the Build floater > Features).
  • Has been flagged as and Animesh object in the project viewer, and so has an avatar skeleton associated with it.
  • Uses three new LSL methods to run or stop animations, or check which animations are currently running:
  • Can use many existing animations.

At this point in time, this is not about adding fully functional, avatar-like non-player characters (NPCs) to Second Life. So Animesh objects will not (initially) have an avatar shape associated with them, make use of the viewer’s inventory floater or the server-side avatar locomotion graph for walking, etc., and so will not use an AO, and will not use the avatar baking service. Such capabilities may be added as a future phase of the project.

Viewer Progress

The project viewer, with supporting documentation, was released on Wednesday, October 19th. See the official blog post and my overview for more.

Testing – General Feedback

[video 1: 8:29-9:15] Vir re-iterated that the purpose of the testing is to uncover bugs, check the workflow logic, gather performance data, etc., and encouraged creators to try to push the capability by doing as many different things as possible to ensure this pass of Animesh results in a “good” release.

People have been using the test items provided on Aditi, and early reactions to to the capabilities have been positive. JIRA issues and requests have been filed, and Whirly Fizzle has created a JIRA filter for Animesh to make listing all current reports and requests filed for Animesh.

Some Noted Issues

[Video 1: 10:32-13:15] Animated mesh height placement: One issue with Animesh noted in the meeting is determining where on / above the ground an Animesh objects should be placed, with people noting that when enabling the Animated Mesh option in the viewer, an Animesh creature / avatar can sink into the ground somewhat – as can some Animesh objects which should appear to be attached to an avatar, such as at the hand attachment point.

This appears to be an issue within the baking service which will likely require an update. In addition, Vir is hoping that testing will reveal more about height offset positioning so that the workflow for calculating where Animesh objects appear to be can be further refined to avoid discrepancies.

[Video 1: 16:29-18:18] Animation Playback Speeding Up at Greater Distances: This is a known issue wherein animations appear to “speed up” the further away you cam from the object / avatar being animated (the same thing also happens when avatars are impostered). This isn’t an Animesh issue, but a product of how animation updates are handled and his been known about for some time (and was subject to some investigations and tweaking with things like the Interest list several years ago), and is particularly noticeable with large numbers of avatars dancing.

A non-public JIRA has been specifically filed against the problem for Animesh, as it is felt the problem could be far more visible in regions where Animesh creatures, etc., are used. Vir’s hope is that the Lab can re-examine the issue with a view to reducing the issue’s visibility.

[Video 1: 19:22-19:40] Viewer crashing on unchecking the Animated Mesh option: this is a known issue, but one not seen as occurring frequently enough to be considered a blocker to issuing the test viewer. It is being looked at.

Other Points of Animesh Discussions

  • [Video 1: 13:17-15:11Animesh: Purpose Built, or Just Conversion? Should Animesh just be a case of being able to convert any rezzable rigged mesh to Animesh (as is the case) or should mesh intended to be Animesh be specifically designed with that end use in mind. In the case of the former, conversion lowers the barrier to entry with Animesh, but might lead to inefficient models being converted, possibly leading to performance issues. The latter is likely to be used by some content creators wishing to optimise their content for Second Life, but potentially limits the scope of Animesh.
  • [Video 1: 15:12-16:23] “Unrigging Meshes” on conversion to Animesh: It is noted that converting a rigged mesh to Animesh and not animating it causes the rigging applied to the mesh to be ignored, effectively “converting” it to an unrigged mesh. So modifiable items brought from a creator which are not supplied with an unrigged version might, be “converted” in this way.
  • [Video 1: 20:19-21:43] Mesh attach / detach limitations: By default, we generally attach / detach objects directly from inventory; also by default, mesh attachments cannot be dropped in-world. However, this means that the only way to currently “pick up” and “put down” an Animesh pet which can roam in-world / be held, is via inventory, which doesn’t make a lot of visual sense. Vir agrees this should probably be looked at and amended, if possible.
  • [Video 1: 22:30-23:12 and 23:40-25:20] 90-degree rotation of visual mesh versus bounding box / physics: The question was asked if this is a side effect of the +x alignment (see my previous CCUG update for a discussion on avatar alignment). In short, yes, but there is a lot going on in defining, rigging, attachment mesh, it’s not clear precisely what is going on, and further investigations are required.
  • [Video 2: 0:00-0:30] Attaching a prim object to an Animesh object causes the prim to become invisible: (partially messing from the videos): the reason this happens is unclear, but it is regarded as a bug.
  • [Video 2: 0:48-2:15] Is there a script function for attaching a mesh to an existing Animesh object: yes, but is permissions based.
  • [Video 2: 3:05-7:45] Facial animation / pathfinding issue? Medhue Simoni reports that adding pathfinding to an Animesh object which does not have facial animations running can make the object’s face “explode”.  This requires further investigation to pin down – but might indicate Animesh may need a “reset” option similar to the Reset Skeleton option for avatars (also covering alignment / bound box issues).
  • [Video 2: 7:58-9:45] Animesh and avatar shapes: as noted in the project summary above, Animesh currently does not recognise avatar shapes (but this may be added in a future iteration of the project, once baking service support, etc., is available. This means all joint in a skeleton are in their default position unless affected by a script / animation & there is no ability for shape editing.
  • [Video 2: 10:29-13:44 and 15:08-16:00] Sitting on Animesh objects & pathfinding: sitting an avatar on an Animesh object should be possible, but if the mPelvis bone of the Animesh is moving, this may result in odd avatar movements, as noted in past Animesh updates. For an Animesh creature using Pathfinding, a sit target will likely need to be explicitly scripted.
  • [Video 2: 14:04-14:29] Interacting with Animesh by clicking on it: there is a known issue still being looked at, where right-clicking on an animated Animesh works, left-clicking doesn’t.
  • [Video 2: 16:16-20:00] Using a prim as the root of an Animesh object: Animesh currently requires the root object in the linkset is rigged mesh (and – as noted above, re: attaching prims to an Animesh item) is not very happy if any other parts of the linkset are not rigged mesh. A request has been made to allow the root of Animesh items to be a prim, in order to ease problems of orientation / bounding box scaling.Vir’s view on this is that work still needs to be done to ensure a better placement and orientation of the skeleton in order to better overcome issues of orientation, etc.
  • [Video 2: 16:46-17:40 and 22:50-23:20] Handling joint conflicts: conflicts with multiples meshes in an Animesh attempting to manipulate a joint at the same time are essentially handled the same way as for avatars where multiple attachments may try to manipulate the same joint: an arbitrary decision on which position is used is made by the system based on asset UUID.
  • [Video 2 20:24- 21:40] Why is there an alignment issue? The core issue with orientation is that, until now, attachments have been based on the avatar skeleton already being in-world, which causes an attachment to be correctly positioned and oriented to it. With Animesh, the opposite is true, it is the object that is already in-world, and the skeleton is then being associated with it. Wherever the skeleton goes and faces will become the visual location / orientation for the object, and its finding a way to most accurately position the skeleton with respect to the object that is the problem.
  • [Video 2: 24:40-25:13] Do linked Animesh objects each have a skeleton? No. Animesh linksets only use a single skeleton. So link three Animesh items together, and they’ll have a single skeleton.

Animesh In-World Groups

Two unofficial in-world groups for Animesh have been created:

Environment Enhancement Project (EEP)

Project Summary

A set of environmental enhancements, including the ability to define the environment (sky, sun, moon, clouds) at the parcel level; a new environment asset type that can be stored in inventory and traded through the Marketplace / exchanged with others; scripted, experience-based environment functions, an extended day cycle and extended environmental parameters. This work involves both a viewer updates (with a project viewer coming soon) and server-side updates.

Current Status

[Video 2: 25:47-26:38] Rider has converted the day settings in the new format and is about to start working on making environment setting into inventory objects. Once he’s completed this work, his focus will be on producing a project viewer for people to use in testing the available EEP capabilities. This will be “soon”, but may not include the scripted elements of the project.

Bakes on Mesh

Extending the current avatar baking service to allow wearable textures (skins, tattoos, clothing) to be applied directly to mesh bodies as well as system avatars. This involves server-side changes, including updating the baking service to support 1024×1024 textures, and may in time lead to a reduction in the complexity of mesh avatar bodies and heads. The project is in two phases:

  • The current work to update the baking service to support 1024×1024 textures.
  • An intended follow-on project to actually support baking textures onto avatar mesh surfaces (and potentially other mesh objects as well). This has yet to fully defined in terms of implementation and when it might be slotted into SL development time frames.

This work does not include normal or specular map support, as these are not part of the existing baking service.

Current Progress

[Video 2: 27:57-28:32] An updated baking service server is going to be set-up on one of the Lab’s internal development grids for load testing.

[Video 2:  28:44-29:33] People are looking towards the bakes on mesh project; Vir re-stated that it is a major project in total, and currently the only aspect being tackled is getting the baking service to comfortably support 1024×0124 textures. Where the rest of the work required to support baking on to mesh bodies and items, etc., lies on the Second Life development roadmap and time frames is still TBD.

Content Creation User Group Meetings Moving to Aditi

[Video 1: 6:44-7:33] To assist with Animesh discussions and testing (the latter of which is currently only be possible on the Aditi, also known as the beta grid or preview grid), CCUG meeting will, for the foreseeable future, be moving to that grid and the Animesh 4 region on Aiditi. Details of the meeting location will be made through the CCUG wiki page.

However, if you have not previously logged-in to Aditi, you will need to file a support ticket to request access, and do so at least 24 hours in advance of the meeting. For further information on Aditi, including how to log-in, please refer to the Aditi wiki page.