Project Bento – extending the SL avatar skeleton
The following notes and audio were taken from the weekly Bento User Group meeting, held on Thursday, March 3rd at 13:00 SLT on Aditi. For details on each meeting and the location, please refer to the Bento User Group wiki page.
Note that this update does not present the discussion in chronological order; items discussed have, wherever possible and without compromising the discussion itself, have been grouped together to try to present a complete discussion of the topics raised in turn.
New Project Viewer and Bento Skeleton
A new version of the Bento project viewer has been released. Version 126.96.36.1991861, dated March 2nd, 2016, includes the updated Bento skeleton, which the Lab hopes will be the final version. In particular this adds further new bones:
- Four new spine joints: two between mPelvis and mTorso, and two between mTorso and mChest. By default these bones are folded up inside the current spine and will not affect the appearance of the avatar, but like other bones they can be repositioned in uploaded meshes, or animated according to need
- New face bone root: rather than adding extra neck bones, the Lab have added an extra face bone root, which could be used as an extra neck bone if desired
- Three new centre face bones along the mid-line of the face, two on the lips and one on the forehead
- Two new joints for ears, allowing for floppy or otherwise more flexible ears
- An additional pair of limbs, each with 3 joints apiece, and a new root bone to which they are connected. These are named “Hind” limbs, but using the root bone, the can be relocated to be used elsewhere – such as an extra pair of arms
- One new bone for each wing to allow a simple fan as would be used in a bat-type wing.
- Removal of two wing root bones: these were originally included as a workaround for the lack of joint translations. As this is now possible, only a single wing root bone is actually required
- Various bone position changes.
As some of the existing bones have been removed or changed position, this does mean that content made using the original Bento skeleton will need to be updated in order to display as intended. Aditi servers have been updated with the new skeleton.
Vir discusses the new bones and the removal of some bones
The ability to add new spine bones is a direct result of the Lab being able to fix the two issues referred to in my last Bento update, the first of which would crash the Bento viewer if additional spine joints were added, while the second was that new spine bones would break the rendering of the default avatar.
In order for this to work, the new bones have an odd positioning / ordering within the skeleton, so they seem to “zig-zag” (spine 1 is located in chest, spine 2 in the pelvis, then comes the torso, etc). The reason for this was to allow all the original skeleton joints exactly where they had always been located, and to avoid the creation of any zero length bones, with the internal matrix maths (as well as some other programmes) doesn’t particularly like, as Vir explained which discussing the new spine bones.
Vir expands on the new spine bones and ordering
There may be some issues which are causing Blender to incorrectly display the new spine bone positions and orientation. One suggestion for those encountering similar issues is to visualise the bones by setting them to the polyhedral models where it is wider on one end than the other (I’m unfamiliar with blender, so not sure of the precise term for the visualisation) to make it easier to see the orientation of the bones, although this may not work.
Aki Shichiroji, who has experienced the problems, has indicated she’d talk a little more with the Avastar team about things. Certainly, Vir believes working with them is going to require a delicate touch when working with the spine bones in the likes of Maya and Blender, due to the risk of coincident bones.
The Lab intends to freeze the skeleton soon, and those wishing to test it are advised to do so over the next few days. Currently, the easiest way to obtain the latest version of the skeleton is directly from the new version of the project viewer (link above), although hopefully the wiki links, etc., will be updated soon.
There is liable to be one more update to the project viewer once the skeleton is frozen, after which the Lab will be turning attention to the avatar.LAD file, the other major configuration file for the skeleton, and finalising changes and corrections to the shape sliders and potentially adding some new attachment points which can leverage the revised skeleton.
The biggest issue as far as progress the project to initial deployment on the main grid is concerned, is bug fixing. There are still some significant problems yet to be resolved, which are dependent upon understanding the route cause of the problem and having the staff available to investigate them / resolve them:
- Issues with the extra joints, such as the default avatar pose issue (see below)
- The rendering deformations encountered at high altitude
- The general avatar deformation issue seen within the Bento viewer (see here and here for further notes).
There are also a number of more general bugs to be corrected as well.
Overview of the next steps in the project from the Lab’s perspective
Default Avatar Pose Issue
foreleg crossing: issue may be deeper than thought
There has been further investigation into the default avatar pose issue which can see quadruped avatars unnaturally crossing or folding their forelegs when shifting between animations (for background see here, here, and here).
It had been thought that the issue was due to the way that scripted animation override systems (e.g. the ZHAO and ZHAO 2) overlay the default server-side avatar poses, occasionally allowing these server-side animation to start playing when shifting between poses as a result of a message timing issue between server and viewer. The suggested solution was therefore thought to be to encourage creators to write AO for their Bento avatars which would utilise the llSetAnimationOverride capability introduced in 2013, which overwrites the server-side defaults with the animations of the creator’s choosing, thus preventing the “wrong” animation starting to be played.
However, more recent testing suggests that the issue can still occur when using llSetAnimationOverride.
A problem here has been that the JIRA specifying the issue and providing information on various tests, etc., carried out to date by the Lab has, not been publicly viewable (for valid reasons), making it hard for other outside the Lab attempting to investigate the problem to understand what has happened to date and report their own findings back to the Lab. Arrangements are now being made to clone the JIRA and make is public to eliminate this problem.
Removing Mesh Upload and Display Restrictions
Second Life has always had a number of upload and display restrictions wherein creators were required to include certain joint positions whether or not they were in fact using them (the uploader wouldn’t check to verify whether the positions were actually used, just that they are listed). There were some checks which insisted that if the positions of some of these bones were changed, they all had to be changed.
This obviously limited the number of meshes rigged to bones from different creators that an avatar could wear, because there would inevitably be conflicts between the listed joints in each mesh. The checks themselves date back to when the Lab used a different method for tracking joint positions, and they don’t make a lot of sense today, and so work is in hand to remove them, and should be completed with the next release of the project viewer.
The upshot of this is that once done and available, avatars will be able to wear meshes from different creators, providing the mesh items only list the joints they actually use. This would allow, for example, this will allow someone to wear a centaur avatar from one creator and add a set of wings from another creator without the risk that the meshes would conflict because they list the same “required” joint positions. However, for this to work, it does mean that creators will need to ensure they list only the joints they require in order to offer some degree of “interoperability” between meshes.
Vir discusses the removal of the upload and display restrictions
Using Bones to Animate Hair and Clothes
One benefit from being able to rig and list only the bones which are being used, is that it potentially opens the door to creators being about to use some of the additional bones to animate things like hair and dresses.
For example, as bipedal, humanoid avatars are unlikely to require the tail bones or the “hind” limb bones, these could potentially be used to naturally animate a mesh gown (particularly one with a long train) or long dresses. Similarly, the additional ear bones might be used to animate mesh hair.
Cathy Foil points-out the potential for clothing and hair makers as a result of the removal of the restrictions
Scripted Methods for Bone Positions
BUG-11407 is a feature request to provide scripted control of bone positions, allowing to an LSL command to pass an array of bone positions to the client to animate oneself, or, with permission granted, to animate another user.
Commenting on this at the meeting, Vir indicated that while such an approach is “interesting”, but due to the scope of things, has been considered to big an undertaking for the Bento project, and would likely have to be considered as a project in its own right. Rider Linden further suggested raising the idea for discussion at the Simulator User Group meeting.