SL project updates, 23/2: Content Creation Meeting

The Content Creation User Group meeting, at the Hippotropolis Camp Fire (stock)

The following notes are taken from the Content Creation User Group meeting, held on  Thursday, June 8th, 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.

A video recorded at the meeting by Medhue Simoni is embedded at the end of this update, my thanks to him making it available. Timestamps in the text below refer to this recording. The meeting was disrupted by three region crashes, and this is reflected in the stream recording.

Asset HTTP Viewer

[2:50] The Asset HTTP RC viewer (version 5.0.6.326593 at the time of writing) has an update with LL’s QA. As noted in my last TPV Developer meeting update, this includes the new viewer update management code. It is now expected to appear in the release channel and an RC update in week #24 (week commencing Monday, June 12th).

Animated Objects

[3:18] Vir is continuing to work on the animated objects project, and now has an internal version of the viewer that hooks-up to a correctly configured simulator. It is still some way from being ready to be offered as a project viewer, however.

Skeleton Positioning

[4:09] One issue to be considered with animated objects using the avatar skeleton is where the skeleton is supposed to be positioned. Avatars are placed by the simulator providing information on where the agent is, and the bones are then positioned and things like hover height are applied, and whatever rigged objects are being worn are positioned relative to the skeleton’s position. With an animated object, the reverse is true: the object has a defined location, and some means needs to be found for the system to position the bones accordingly; it’s not currently clear how this should be done.

Vir has tried experimenting using the mPelvis bone, and aligning that with the object’s position, with mixed results. So, should the Lab simply pick a convention and have people build their animated objects accordingly, or should a smarter, more adaptive solution be sought?

Collisions

[10:50] Collisions (being struck by avatars, other objects). Collision detection isn’t currently carried out in SL for skinned objects, however, Vir is considering calculating collisions based on the collision volume of the skeleton, although this has yet to be investigated.

Setting a Prim as Object Root

[11:19] Cathy Foil has suggested using a prim as the root for an animated object, with the skeleton positioned relative to that prim. This has the advantage of potentially allowing the skeleton, as a child linkset of the root, to have physics; further, the prim could be set statically at a fixed location in a region, and the skeleton  / object animated to roam independently or it could be scripted to move (and even use Pathfinding), with the animated skeleton / object carried along with it. Thus, it could offered a flexible approach to the problem.

[14:34] One of the things Vir is aiming for is for creators to be able to take existing skinned mesh content and turn it into animated objects, without the need for the model to be re-worked / re-uploaded.

Multiple Rigged Meshes in an Animated Object

[17:38] With his current work, Vir believes it should be possible to have multiple rigged / skinned mesh objects animated by a single skeleton (e.g. so an avatar body can be split into the notional lower body, upper body, head). This could have some interesting uses providing the meshes don’t try to use the same bones.

Frame Rates

[20:05] Vir has had a number of animated objects running at the same time, and he has not seen a significant impact on frame rates. However, the caveat here is the relative rendering complexity of animated objects and how that affects client-side processing. The current hope is that the impact of any given animated object will equate to that of a similarly rigged and complex avatar, so the potential for performance impact is there; it’s just too early in the project to make any definitive statements.

Editing Size

[20:45] At the moment, the size of an object is governed by the size of the skeleton; it could be more flexible if the size of the objects could be set / edited, and this determines the size of the skeleton. This might, for example, be done by sizing the skeleton to the object’s bounding box (which adjusts as the object is resized). However, it’s again too early in the project to offer a definitive way this might be done.

[23:12] Cathy points out that having a root prim for an animated objects, sizing them could be tied to the size of the root prim. So, for example, doubling the size of a root prim would double the size of the object.

Applying Baked Textures to Mesh Avatars

[33:41-35:45] A short explanation of this project for those unfamiliar with it. In brief, a means to apply composited textures bakes (skin, tattoo, clothing layers, etc), to mesh bodies using the SL baking service, with the aim of potentially reducing the complexity of avatar bodies.  This work is being carried out alongside of animated meshes, but is not dependent upon that project (or vice-versa).

[29:06] Updates to the baking service to support baking textures on mesh avatars has now started. This is currently infrastructure work – updating the baking service to a newer version of Linux, etc.

After this, the first step in getting the service to work with mesh bodies will be updating it to support 1024×1024 textures and producing a corresponding viewer update. Once the latter is available for testing, then the Lab will be ready to look at the feature set for supporting bakes on mesh.

Materials Support and the Baking Service

[30:30] There may be a misunderstanding circulating that the baking service will “disable” materials on meshes. This is not the case.

The baking service has never supporting materials processing, and the work to enable texture baking on meshes will not include extending the baking service to handle materials  – this would be a huge undertaking. However, it will not prevent materials from being used via other means (application directly on the mesh, etc.), or any other way in which materials are used in-world.

The baking service uses is a composited diffuse (texture map). This may be less than is currently possible when using applier systems (which should continue to work alongside bakes on mesh). [40:34] It will also be possible to still manually apply normal and specular maps to an avatar mesh using the bakes.

Baked Texture Delivery to a Mesh / Persistence

[31:53 and 38:47] Once a bake has been completed it would be delivered to the mesh by means of flagging the face to which it is to be applied. This flag will remain persistent, so when the avatar appearance is updated texture will be re-applied to the face, until the face is flagged as requiring a different baked texture.

Arbitrary Use of Bakes

[36:24] As noted in my last Content Creation UG update, there has been some discussion of a more arbitrary use of bake textures and applying them to other objects, but this in not the focus of this current work. However, these ideas might be considered in the future.

Anchor Linden

[41:58] Anchor Linden is a new name at the Lab, and is currently working with Vir, focusing on the texture baking project.

Supplemental Animations

[41:38] The supplemental animations work, designed to overcome issues of animations states keyed by the server-side llSetAnimationOverride() conflicting with one another, is still on the card, just no further movement as yet.

General Discussion

[44-22-end] General discussion: mesh uploads, proper management of LODs, etc.

SL project updates 23/1: server, viewer, environment updates

Out on the Calas horse trails, Caitlyn leading the way – blog post

Server Deployments

As always, please refer to the server deployment thread for the latest news.

  • On Tuesday, June 6th, the Main (SLS) channel was updated with a server maintenance package (17.05.26.326655), containing fixes to help with the caps (capabilities) router, particularly with reference to trying to teleport to regions which have a heavy avatar load (see here for details).
  • On Wednesday, June 7th, the RC channels should be updated as follows:
    • BlueSteel and LeTigre should each receive the same server maintenance package (17.06.01.326763), comprising internal fixes.
    • Magnum should receive a server maintenance package, but details were still TBD at the time of writing.

Capabilities Losses at Region Restart

Some regions are still suffering capabilities failures at restart (see this forum thread for an example, and see these wiki pages for more information on capabilities: Capabilities and Current Sim Capabilities). This overall caps system is shared at the server level, so when problems like this occur, it affects all of the regions on that server, which then require an individual restart to correct.

SL Viewer

There have been no further viewer updates since my last project updates article. This leaves the current viewer pipeline as follows:

  • Current Release version 5.0.5.326444, dated May 18th, promoted May 23rd – formerly the Maintenance RC viewer overview
  • Release channel cohorts:
  • Project viewers:
    • Project Alex Ivy 64-bit viewer, version 5.1.0.505089, dated May 11th
    • 360-degree snapshot viewer, version 4.1.3.321712 dated November 23rd, 2016 – ability to take 360-degree panoramic images
  • Obsolete platform viewer, version 3.7.28.300847 dated May 8, 2015 – provided for users on Windows XP and OS X versions below 10.7.

Other Items

Environmental Update

“We are going to kick off a set of environment improvements – exact scope is still TBD,” Oz Linden states at the Simulator User Group meeting on Tuesday, June 6th. “[but] there are a couple of hot problems that need to be stomped first.”

While the exact nature of these improvements is still TBD, the comment sparked a conversation on parcel windlight settings, which Oz indicated the Lab is still planning on implementing. While all discussion on this is still somewhat speculative, the current thinking on this at the Lab is:

  • The precedence will be 1) viewer local (so if you set a windlight through the viewer, that will take priority over any windlight indicated by the region / parcel) , 2) parcel (if allowed by estate), and 3) region
  • Currently, it is unlikely that the parcel controls will allow setting windlight environments by altitude (aka Firestorm zoning).

The latter point is perhaps the most contentious for those using the current Firestorm zoning for windlight – not only does this allow different windlight conditions for different altitudes (particularly useful in role-play regions which may have different locations stacked vertically, each of which is ideally suited it its own environmental setting), it also things like caves and caverns to have their environment set to midnight, naturally darkening them (a technique we use at Caitinara Bar for the benefit of those using Firestorm).

In addition to parcel windlight, the Lab is looking to add an experience-controlled way to change environment for an individual avatar – so that those joining an experience will have their viewer automatically adopt the windlight setting for the experience, if one is set. This could also provide a means for “altitude zoning” of windlights to some degree.

None of these additions will prevent users applying their own viewer-side windlight should they wish (as noted above).

Other subjects possibly on the list of environmental settings:

  • Selectable cloud textures (similar to the capability in Firestorm)
  • The ability to change the moon texture
  • Adjustable day length (so, for example, one SL day =  a physical world day)

As Oz noted in the meeting, the details of what the Lab would consider working on with the environment improvements has yet to be fully defined; however, he also added, “When we get to the point where we’re ready to start work on it (hopefully very soon), we’ll post a description of what we’ve got in mind … and yes, we’ll accept suggestions for improvements then.”

SL project updates 22/2: TPV Developer meeting

Chess Wonderland, Egypt; Inara Pey, May 2017, on Flickr Chess Wonderland – blog post

The majority of the notes in this update are taken from the TPV Developer meeting held on Friday, June 2nd, 2017. The video of that meeting is embedded at the end of this update, my thanks as always to North for recording and providing it. Timestamps in the text below will open the video in a separate window at the relevant point for those wishing to listen to the discussions.

Server Deployment – Recap

  • On Tuesday, May 23rd, the Main (SLS) channel was updated with a server maintenance package (#17.05.22.326523), containing a fix for BUG-100704, “[Server] If Anyone Can visit is selected after Allow Group was set only group members can enter”, related to the parcel overrides update.
  • On Wednesday, May 31st, the RC channels were updated as follows:
    • BlueSteel and LeTigre received the same server maintenance package (#17.05.26.326655), comprising “Tweaks to help with capability loss”.
    • Magnum received a server maintenance package (#17.05.26.326659) for the simulator operating system update, which does not contain and functionality changes.

SL Viewer

[0:20] The Voice RC cohort updated to version 5.0.6.326589 on Wednesday, May 31st.

[0:31] The Asset HTTP viewer is doing reasonably well in its latest RC update (version 5.0.6.326593, dated May 26th), and this might be the next viewer to gain promotion to release status.

[28:22] Once the asset HTTP viewer has been promoted, the Lab plan to develop a schedule for removing simulator support for the old UDP messaging the HTTP updates have replaced. The actual removal of the messaging paths might not occur until 2018.

Maintenance RC

[0:40] A new Maintenance viewer was released as a RC cohort on Thursday, June 1st, 2017. Version 5.0.6.326731 includes a range of bugfixes and updates, including further updates to Trash management:

  • Fix for number of items in Trash calculation
  • Trash is full floater wasn’t showing in some conditions when it should have been. It will do as it should now.
  • Fix for when Trash version gets out of synch
  • A delete warning will now show up once every session to cut down on accidents
  • Trash purge message will include number of items deleted.

Alex Ivy (64-bit viewer)

[0:55] A new update for the 64-bit viewer will be appearing soon, it will include the new viewer update code, to help ensure the correct version of the viewer (32-bit or 64-bit) is delivered to the user.  Additional changes to the server-side viewer update manager (the code which tells the viewer there is a newer version available) have delayed this update from appearing sooner.

[2:10] When this version of the viewer is issued, it is anticipated that work will commence on building and QAing a Release Candidate version of the viewer. At this point the Lab will also start work on updating the SL wiki instructions for building the viewer.

[5:35] The Lab’s reocmmendation is that if Windows users are using the 32-bit version of the viewer on a 64-bit system, they should swap to a 64-bit version of the viewer for a less crash-prone experience.

[6:16] A caveat to this is 64-bit systems using the Intel HD and Intel HD4000 GPU chipsets. These systems cannot run the 64-bit version of the viewer and require the 32-bit version.

360-degree Viewer

[3:43] An update to the 360-snapshot viewer is expected soon, pending the fix for an issue with the Mac OS X build.

When the update appears, it will not require any post-processing of a ZIP file (as is currently the case). Instead, it should produce an equirectangular image with all the necessary metadata required for displaying on sites which support 360-degree images.

OTR and Chat Text Encryption

[7:14-18:56] Questions have again been raised on the use of end-to-end encryption of IM conversations by TPVs. This was a thing several years ago, largely derived out of misplaced fears that LL staff where reading people’s IM conversations willy-nilly. However, as it used viewer code never intended for that purpose, it was “broken” when the underpinning code was updated / removed.

At the time the encryption was used, it was problematic for the Lab, as it interfered with things like verifying abuse reports by checking IM logs (if the conversation is encrypted, LL cannot verify what was said, and so cannot take any action, even if warranted), and could also be an issue assisting in other types of necessary investigation (e.g. possible fraud / money laundering acts).

The circumstances under which someone from LL can view IM files are strictly limited and controlled, both in terms of who can view them, when then can view them and how much of them can be viewed. As such, there is no risk in IM logs just being casually read at the Lab. Given this, and the issues it can cause, use of any form of encrypted IM exchange would likely be frowned upon or be regarded as a “normal” function of SL (and so wouldn’t be safeguarded from potential “breakage” during future changes to the viewer). Instead, those feeling they need secure communications with other are encouraged to use other means of doing so.

Shoutcast / Streaming Scripts Issues

[23:30-26:33] The Magnum channel RC has resulted in breakages to scripts used by various streaming service DJ boards (see BUG-10073). The issue has been diagnosed, and a means to allow these services to keep operating is being developed. However, when deployed it will mean that the scripts themselves will also need to be revised, and it will not be backwards compatible with systems that are not updated by their creators, which will remain broken. As the change causing the issue is integral to the HTTP updates being made to improve SL’s performance, it will not be rolled back.

Griefing Following Ban

[30:02-35:39] Some estate managers are finding themselves specifically targeted for griefing after banning someone from their land (identified by the griefer as ban notifications carry the banner’s name). In some cases the griefing can extend to groups associated with the land. One solution is to use a bot for banning purposes, however, the request has been made for better anonymity for those carrying out the ban. A JIRA has been requested, providing the fullest possible description of the issue, what happens, and how, and what is believed to be needed to counter it.

General

  • [19:17] BUG-40824, “Missing Offline Group Notice (Unreliable Delivery)” is still proving a problem for some. The Lab haven’t looked at the issue recently, but will get back to it.
  • [21:25] Local and group chat has been lagging – again, it’s been noted, but no specifics on possible causes.
  • [21:49] Increasing limits (physics, etc) – currently the focus is on the simulator OS update, which includes, software tools and libraries. Once this work has been completed, the Lab hopes to look at all the limits and see what can be adjusted, either directly or with some up-front work.

SL project updates week 22/1: server, viewer

Meadow Rose III, Tyme; Inara Pey, May 2017, on Flickr Meadow Rose III – blog post

Server Deployments

As always, please refer to the server deployment thread for the latest news.

  • On Tuesday, May 23rd, the Main (SLS) channel was updated with a server maintenance package (#17.05.22.326523), containing a fix for BUG-100704, “[Server] If Anyone Can visit is selected after Allow Group was set only group members can enter”, related to the parcel overrides update.
  • On Wednesday, May 31st, the RC channels should be updated as follows:
    • BlueSteel and LeTigre should each receive the same server maintenance package (#17.05.26.326655), comprising “Tweaks to help with capability loss”.
    • Magnum should receive a server maintenance package (#17.05.26.326659) for the simulator operating system update, which does not contain and functionality changes.

OS Update Notes

Alongside the Server Deployment notes for Magnum, Linden Lab also state they are working on a fix for an issue addressed with 17.05.23.326524 from last week (BUG-100737 “Shoutcast receivers unable to relay on RC Magnum”). This has been diagnosed, and they are working on a solution which will require a simple update to affected scripts.

SL Viewer

  • Current Release version 5.0.5.326444, released on May 18th, promoted May 23rd – formerly the Maintenance RC viewer – overview
  • RC viewers:
    • Project AssetHttp project viewer updated to version 5.0.6.326593 on May 26th – This viewer moves fetching of several types of assets to HTTP / CDN – overview
    • Voice RC viewer, version 5.0.5.325998, re-released on Friday, May 5th
  • Project viewers:
    • Project Alex Ivy 64-bit viewer, version 5.1.0.505089, updated on May 11th
    • 360-degree snapshot viewer updated to version 4.1.3.321712 on November 23rd, 2016 – ability to take 360-degree panoramic images
  • Obsolete platform viewer version 3.7.28.300847 dated May 8th, 2015 – provided for users on Windows XP and OS X versions below 10.7.

SL project updates week 21/3: Content Creation UG w/audio

The Content Creation User Group meeting, at the hippotropolis Camp Fire (stock)

The following notes are taken from the Content Creation User Group meeting, held on  Thursday, May 25th, 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, covering the core points of the meeting. Please note, however, that comments are not necessarily presented in the chronological order in which they were discussed in the meeting, but are ordered by subject matter.

A video recorded at the meeting by Medhue Simoni is embedded at the end of this update, my thanks to him making it available. However, do not that this cuts out mid-way through the meeting. Timestamps in the text below refer to this recording.

Applying Baked Textures to Mesh Avatars

[1:54] This was announced as a new project – see my separate update for details.

The meeting saw additional questions asked about the baking service, which are summarised below.

Will the Baking Service Support Animated Objects?

  • Not initially. Baked textures are only relevant to your Current Outfit Folder (COF), affecting your appearance only. Animated objects will not have any notion of a COF (as they do not have an associated inventory structure as avatars do), so whose textures would an animated object show?
  • Also, even if you could assign your own COF-defined appearance to an animated object, it would only be valid until you change your own appearance, which would discard the bake used by the object, probably leaving it blank.
  • One solution might be allowing arbitrary textures to be sent to the baking service (see below). Another would be to allow animated objects to have their own notion of a COF contained within the object itself which the baking service could somehow reference
    • WERE this kind of work to be adopted, this would be Vir’s preferred approach. However, it is not currently a part of either the animated objects project or baking textures on meshes.

Baking Arbitrary Textures

Would it be possible to have a LSL function to request baking arbitrary textures?

  • Not as a part of applying baked textures to mesh, although it might be considered in the future.
  • However, the baking service could offer considerable flexibility of use were it to be extended, simply because of the way it defines the body area (head, upper body, lower body).
  • A problem is that, as noted above, baked textures are held only so long as your current avatar appearance defined via your COF is relevant, after which they are discarded. For the system to be useful with arbitrary textures, the resultant composite textures would need more rigorous storage, perhaps as a new asset class or retained in some form of “temporary” texture store – either of which would have to be defined and allowed for.
  • Thus, the problem is the amount of work involved in extending the baking service and (potentially) the asset handling required to support it.

HTTP Asset Viewer

[4:22] The HTTP Asset viewer was updated to version 5.0.6.326593 on Friday, May 26th. This update primarily bring the viewer to parity with the recently promoted release viewer, and so primarily comprise the revised region / parcel access controls, and the updates to Trash emptying behaviour.

Supplemental Animations

[6:53] As well as working on animated meshes, Vir is now also working on the LSL side of supplemental animations alongside of LSL changes need for animated objects. The work is designed  to overcome issues of animations states keyed by the server-side  llSetAnimationOverride() conflicting with one another.

Animated Objects

Current Project Status

Vir has got basic prototyping working in a “hacked up” single version of the viewer. He’s now working on the shared experience – how is an animated object seen by multiple viewers.

There is still no details on what limits beyond land impact which may be applied to animated objects (e.g. number of animated objects – not avatars – permitted per region type, etc), as there is not at this point any solid data on potential performance impact to help indicate the kind of limits which might be required..

Number of Allowed Animation Motions

[8:52] Currently, SL supports a total of 64 animation motions playing at one time per agent (hence walks, arm swings, wing flaps, tail swishes, etc., all of which can happen at the same time). It’s not been tested to see how much of an actual load running multiple animations places on a system. The limit might have to be changed as a result of animated objects – or it might not; it’ll come down to testing.

Other Items of Discussion

Avatar Scaling

[12:24-video end] There is a lengthy discussion on avatar scaling.

  • Essentially, the size slider works within a certain range; go beyond this, and distortions of body parts (e.g. facial features) can start to occur, as some sliders stop working properly.
    • Obviously, it is possible to scale avatars using animations, but again, doing so also doesn’t play nicely with the sliders.
  • This problem is particularly impactful with Tiny and Petite  avatars (although it also affects really large avatars). One workaround is to upload a mesh without joint positions of the affected bones, but this causes breakages in the mesh.Thus, having a slider which could handle the avatar’s scale over a broader range might be beneficial. However:
    • Changing the definition of the current scale slider to work over a broader range isn’t an option, due to the risk of existing content breakage.
    • Adding a new “global scale” slider to the system might be possible. However, while its is relatively simple at the viewer end of things, SL is already close to its limit of 255 sliders, and any additional global slider will require significant changes to the back-end.
  • A further problem is motion is not affected by scale, but is keyed to the current avatar size range. So, additional work would be required to the locomotion system to ensure the distance covered by an avatar’s stride is consistent with its size, adding further complexity to any changes.
  • Also, the ability to scale avatars would also require using rotations only, as any use of translations could result in locomotion issues noted above (e.g. so a really small avatar would appear to zip along at 100s of miles an hour), and rotation-only animations are somewhat limiting.

BUG-20027: Allow joint-offset-relative translations in animations

Created during the Bento project, this feature request was originally closed as something the Lab could not implement. It has now been re-opened as people wanted to add further feedback to it. So, if you have an interest – please go and comment on the JIRA.

Cost of Animating via Bones vs. Using Flexis

The Lab views animating via flexis as being very inefficient, but have no numbers for a direct comparison to the cost of animating bones.

Improving IK Support

General requests have been made for SL to better support Inverse Kinematics (IK) to add greater flexibility of joint / extremity positioning. Vir has requested that if someone could start a feature request JIRA, open for comments, on what might be sought, it would be helpful.

Next Meeting

The next CCUG meeting will be Thursday, June 8th, 2017.

SL project updates 21/2: NEW project: applying baked textures on mesh avatars

During the Content Creation User Group meeting held on Thursday, May 25th, Vir Linden announced that Linden Lab is now formally investigating applying baked textures to mesh avatars in Second Life, a project that has been on the request list since at least the Bento project.

In short, if it can be implemented, it would mean that textures such as skins and make-up layers could be applied to a mesh avatar in much the same way as system layer clothing can currently be applied to system avatars, thus in theory reducing the complexity of mesh avatars by reducing the number of “onion layers” they currently require in order to simulate the capabilities of the baking system.  This in turn should ease the rendering load mesh avatars place on CPUs and GPUs, thus hopefully improving people’s broader Second Life experience.

HOWEVER, the project is only at its earliest stages, and it will be a while before there is anything visible to see with regards to it. The following is a summary of the project’s current status:

  • The first aspect of the work will be to update the existing baking service.
    • This currently operates at a maximum texture resolution of 512×512.
    • For mesh purposes, this needs to be increased to 1024×1024 (which can already be used directly on avatar meshes via textures and / or applier systems).
    • As the baking service hasn’t been touched in some time, updating it may take a while, and any progress on the rest of the project is dependent upon it being completed.
    • Once the baking service has been updated, then the actual work of extending it to support mesh avatars should be fairly straightforward.
  • The exact specifications for how the bakes will work have yet to be defined, so there are no feature / capability details at present.
  • The capability will not support the use of materials, as the baking service as a whole has no notion of materials at present; it only produces a composite of diffuse textures, and there would be a considerable amount of additional work required to make it “materials aware”, marking it as (perhaps) a separate project.

It is important to note that this capability is not necessarily intended to replace applier systems; rather it is to add flexibility to using texture bakes with mesh, and potentially reduce the complexity of mesh avatars.

Further updates on this work will come via the Content Creation User Group (CCUG) meetings, and I’ll report on them through my usual CCUG meeting updates.

The following is an audio extract from the May 25th CCUG, at which Vir announced the project.

Note: there was a broader discussion on the avatar baking service, and this will be covered in my upcoming report on the CCUG itself.