Difference between revisions of "Project Bento Resources and Information"

From Second Life Wiki
Jump to navigation Jump to search
m
(Project Bento has been out for a few months. I figured it's time to update this page accordingly.)
Line 1: Line 1:
{{TOCright}}
{{TOCright}}


'''Welcome to Project Bento! As we mentioned in [https://community.secondlife.com/t5/Featured-News/Introducing-Project-Bento-New-Bones-Added-to-Second-Life-Avatar/ba-p/2987206 our announcement], Project Bento is adding new bones and attachment points to the avatar skeleton. Bento is now ready for testing!'''
'''Welcome to Project Bento! As we mentioned in [https://community.secondlife.com/t5/Featured-News/Introducing-Project-Bento-New-Bones-Added-to-Second-Life-Avatar/ba-p/2987206 our announcement], Project Bento is adding new bones and attachment points to the avatar skeleton.'''
 
'''Project Bento Testing is now Complete!  Project Bento is now Live in all regions on all viewers!'''
 
==This page has been re-purposed to be Project Bento Resources / Best Practices!==


==What is the test period for? How long will it last?==
==What is the test period for? How long will it last?==


The testing period is designed to validate the viewer and the new skeleton, and will continue until we are confident that we have a solid release candidate, at least a few weeks.
'''The testing period for Project Bento is now over!'''


During the course of testing, we will continue working on the Bento project viewer, fixing bugs and addressing other issues encountered during testing. We do not anticipate making further changes to the skeleton or attachments at this point.
However, as always if you discover an undocumented bug please report it at [https://jira.secondlife.com/ JIRA] with the tag [BENTO] for it to be properly addressed!


At the end of the test period, Bento will become a viewer release candidate. Hopefully not long after that, the Bento viewer will be released as the default viewer.
== What is Project Bento?? ==


==Where can I find the required test viewer?==
Project Bento is an update to the Second Life Avatar Skeleton which is what allows Second Life Avatars to move and come to life, as well as enabling the creation of rigged mesh attachments.


You'll need the latest project viewer for Bento. It is available on the [[Linden_Lab_Official:Alternate_Viewers|Alternate Viewers]] wiki page.
===Bone Updates===


==Where can we test Bento?==
The Project Bento Update added bones to the skeleton to expand rigging and animation support in the following areas:


Bento testing is happening on the main Second Life grid and the [[Preview_Grid|Aditi Beta Test Grid]], which is completely separate from the Agni "Main Grid".
Facial Area (new)


Testing Bento will require uploading and using meshes and animations that take advantage of new joints. It will also allow you to take advantage of new attachment points associated with some of the new joints.
Spine (additional bones)


==How can we test Bento?==
Hands (new finger bones)


There are two ways to help with testing Bento:
Tail (new)
* If you are a content creator, please help us exercise the new skeleton. Create your own meshes and animations for facial animation, hand gestures, wings, tails, and so on! Let us know about any problems you encounter, and share your experiences with other creators in the [https://community.secondlife.com/t5/Building-and-Texturing-Forum/Project-Bento-Feedback-Thread/m-p/2987290#M13915 Creation Forum Thread]
 
* If you are a mesh user, help us test the viewer. Try uploading and using some of the test content. Are there any problems displaying or using it on your system? Do you see a significant impact on performance when using the new skeleton?
Hind Legs for Quadruped Avatars (new)
 
A full list of the alterations for the skeleton exists [https://wiki.secondlife.com/wiki/Project_Bento_Skeleton_Guide here.]
 
===Slider System / Shape Updates===
Additionally Project Bento updated the slider system to move these new bones with the Avatar Shape system.
 
'''Scope of slider interactions'''
 
While the updates to the slider system made it so that these new bones move with sliders, it does not override, or affect in any way existing behavior on the default Linden Avatar head and hands. The default Linden Avatar depends on ''morph targets'' to perform hand poses and facial expressions.  This is a completely different system from using ''bone based rigging'' on mesh attachments worn in the same area (which is what Project Bento adds support for). While these two systems are affected ''similarly'' by slider manipulation by design, it is good to keep in mind that it is an approximation, and only that.  It is fundamentally impossible to exactly mimic the motion of a morph target based system with a bone based rigging system.  For example : sliders will affect a mesh attachment head differently than it affects the Linden Avatar head.  This is unavoidable due to how both systems differ mechanically.
 
===Animation File Updates===
On top of additional bones and slider integration, Project Bento also increased the maximum allowable size of animation files, and also removed the restriction on BVH animation file uploads that prevented translation based bone movement.


== Caveats & Best Practices ==
== Caveats & Best Practices ==
Line 37: Line 53:
This was the best practical alternative to simply not allowing translation based animations at all due to the possibility of them overriding sliders.  The community asked for the ability to have translation/position based animations available for greater creative control and it was agreed upon that suffering the confusion from this conflict of behavior was still an overall gain.
This was the best practical alternative to simply not allowing translation based animations at all due to the possibility of them overriding sliders.  The community asked for the ability to have translation/position based animations available for greater creative control and it was agreed upon that suffering the confusion from this conflict of behavior was still an overall gain.


== Current Test Content ==
== Current Content & Resources ==


=== Models ===
=== Models & Skeleton Files / Test Content ===


Note: to add new test content to the wiki, you can first attach it to [https://jira.secondlife.com/browse/BUG-10981 BUG-10981], then post a link to that attachment in the wiki. The wiki does not allow attaching most file formats directly.
Note: to add new test content to the wiki, you can first attach it to [https://jira.secondlife.com/browse/BUG-10981 BUG-10981], then post a link to that attachment in the wiki. The wiki does not allow attaching most file formats directly.
Line 84: Line 100:
Dec, 2016 update fixes minor rotation issues in the collision volume bones that existed in the initial August 2016 posting.
Dec, 2016 update fixes minor rotation issues in the collision volume bones that existed in the initial August 2016 posting.


=== Animations ===
=== Test Animations ===
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/animations/anim/bento_randomize_bones_and_attachments.anim scramble the positions] of all bones and attachments
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/animations/anim/bento_randomize_bones_and_attachments.anim scramble the positions] of all bones and attachments
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/animations/anim/bento_reset_bones_and_attachments.anim reset the positions] of all bones and attachments to the default.
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/animations/anim/bento_reset_bones_and_attachments.anim reset the positions] of all bones and attachments to the default.


=== Tools ===
=== Animation Export Tools ===
 
'''Maya'''
 
The following tools are used for export of BVH files from Autodesk Maya Software.  The exporter was authored by Aura Linden and is available for free below.
 
It works ideally with the skeleton included in [https://marketplace.secondlife.com/p/MayaStar-Plugin-System-for-Maya-Autodesk/5454253 Mayastar], maintained by Cathy Foil.  But should be able to be used as a standalone script as well.


* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/tools/maya/Maya_BVH_Export_Bento_Project.mel Maya BVH exporter] - mel script
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/tools/maya/Maya_BVH_Export_Bento_Project.mel Maya BVH exporter] - mel script
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/tools/maya/maya_bvh_export_instructions.txt Maya BVH exporter instructions] - text file
* [https://bitbucket.org/lindenlab/sl-sample-content/raw/tip/tools/maya/maya_bvh_export_instructions.txt Maya BVH exporter instructions] - text file
'''Blender'''
While blender does not have any freely available animation exporters, it has an excellently maintained plugin package known as [https://blog.machinimatrix.org/avastar/ Avastar] maintained by Gaia Clary.
'''3DSMax'''
Autodesk 3D Studio Max presently does not have any publicly available animation exporters.  However, polysail resident is presently working on a plugin that will do so.  Completion date is TBD.


=== Reference ===
=== Reference ===
Line 97: Line 128:
* Some helpful models to show the locations of various types of bones can be found at https://marketplace.secondlife.com/p/Avatar-Testing-and-Visualization-Kit/9842033
* Some helpful models to show the locations of various types of bones can be found at https://marketplace.secondlife.com/p/Avatar-Testing-and-Visualization-Kit/9842033


== Scale Locking Test Viewer ==
== Scale Locking Option ==
 
There is a proposed feature and a test viewer to allow uploaded models to optionally lock some of their joints' scales. Some info on this that was originally posted on the forum thread (reposted here to make it easier to find):
 
We have had some discussions in the past about possibly adding the ability to override the scale as well as position for joints in uploaded mesh models. A joint with both position and scale overrides would be effectively "slider-proof" - no sliders that affect the joint would have any effect on the model. This may be useful for content creators who want to control their avatar mesh shape exactly, without being affected by the standard customization options.


A proof of concept build for this can be found here: http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/bento-box-scale-override-proof-of-concept/rev/319431/index.html
With Project Bento, the option to have an uploaded mesh attachment completely ignore all slider input was also added.


When you upload a model using this test viewer, under the standard "Include skin weight" and "Include joint positions" check boxes, this build provides an additional check box for "Lock scale if joint position defined". If you check this box, then any joint that has a position defined will also have its scale locked. Scale locking will be enforced whenever a joint would normally be scaled by a slider.
When you upload a model beneath the standard "Include skin weight" and "Include joint positions" check boxes, there is now an additional check box for "Lock scale if joint position defined". If you check this box, then any joint that has a position defined will also have its scale locked. Scale locking will be enforced whenever a joint would normally be scaled by a slider thus "immunizing" it to all slider influence.
To make a bone truly slider-proof, you will have to pay attention to the joint hierarchy. Any change to the scale of a parent bone will also cause the child bone to move, so you will have to make sure the bone's ancestors also have joint positions defined. A joint position will be ignored unless it differs from the bone's default location by at least 0.1 mm (ie, 0.0001 m in the units used by the skeleton definition file). If you want to lock a joint without changing its position, use a very small offset that will not be large enough to have a visual effect (some fraction of a mm).
To make a bone truly slider-proof, you will have to pay attention to the joint hierarchy. Any change to the scale of a parent bone will also cause the child bone to move, so you will have to make sure the bone's ancestors also have joint positions defined. A joint position will be ignored unless it differs from the bone's default location by at least 0.1 mm (ie, 0.0001 m in the units used by the skeleton definition file). If you want to lock a joint without changing its position, use a very small offset that will not be large enough to have a visual effect (some fraction of a mm).


If you get a chance to try this out, please let us know what you think! Any feedback about the design of feature or bugs encountered would be very helpful.
Note that this is just a test build to help with discussion of the feature. It may or may not make it into Bento in this form, or any other form.


==I found a problem? How can I give feedback?==
==I found a problem? How can I give feedback?==

Revision as of 21:49, 30 August 2017

Welcome to Project Bento! As we mentioned in our announcement, Project Bento is adding new bones and attachment points to the avatar skeleton.

Project Bento Testing is now Complete! Project Bento is now Live in all regions on all viewers!

This page has been re-purposed to be Project Bento Resources / Best Practices!

What is the test period for? How long will it last?

The testing period for Project Bento is now over!

However, as always if you discover an undocumented bug please report it at JIRA with the tag [BENTO] for it to be properly addressed!

What is Project Bento??

Project Bento is an update to the Second Life Avatar Skeleton which is what allows Second Life Avatars to move and come to life, as well as enabling the creation of rigged mesh attachments.

Bone Updates

The Project Bento Update added bones to the skeleton to expand rigging and animation support in the following areas:

Facial Area (new)

Spine (additional bones)

Hands (new finger bones)

Tail (new)

Hind Legs for Quadruped Avatars (new)

A full list of the alterations for the skeleton exists here.

Slider System / Shape Updates

Additionally Project Bento updated the slider system to move these new bones with the Avatar Shape system.

Scope of slider interactions

While the updates to the slider system made it so that these new bones move with sliders, it does not override, or affect in any way existing behavior on the default Linden Avatar head and hands. The default Linden Avatar depends on morph targets to perform hand poses and facial expressions. This is a completely different system from using bone based rigging on mesh attachments worn in the same area (which is what Project Bento adds support for). While these two systems are affected similarly by slider manipulation by design, it is good to keep in mind that it is an approximation, and only that. It is fundamentally impossible to exactly mimic the motion of a morph target based system with a bone based rigging system. For example : sliders will affect a mesh attachment head differently than it affects the Linden Avatar head. This is unavoidable due to how both systems differ mechanically.

Animation File Updates

On top of additional bones and slider integration, Project Bento also increased the maximum allowable size of animation files, and also removed the restriction on BVH animation file uploads that prevented translation based bone movement.

Caveats & Best Practices

  • Due to the restrictions of the pre-existing Second Life Animation System. Playing animations that affect bone scale will (continue to) not work with Project Bento, however the slider system has been incorporated to adjust bone positions and bone scale.
  • Any slider controls that affect the position ( translation ) of a specific bone will be overridden if the user plays an animation that moves that bone. Since presently the animation system has no means of knowing the positional offset that the slider is providing, that animation will be played based off of the bones natural ( pre-slider adjustment ) position. However the influence of the affected bones scale will not be altered.

Because of the above two restrictions it is ill advised, to mix content where you want the translation based sliders to work with translation based animations. Because the animation will always override the slider. For a list of all the bones that are influenced by sliders that adjust their position refer to this : https://wiki.secondlife.com/wiki/Project_Bento_Skeleton_Guide#Bones_Currently_Affected_By_Positional_Sliders

This was the best practical alternative to simply not allowing translation based animations at all due to the possibility of them overriding sliders. The community asked for the ability to have translation/position based animations available for greater creative control and it was agreed upon that suffering the confusion from this conflict of behavior was still an overall gain.

Current Content & Resources

Models & Skeleton Files / Test Content

Note: to add new test content to the wiki, you can first attach it to BUG-10981, then post a link to that attachment in the wiki. The wiki does not allow attaching most file formats directly.

Collada (dae) files:

The following model files are compatible with the current project viewer, as of 2016-07-14, and should work with currently implemented sliders. Includes weighting to the new mFaceJawShaper bone.

Maya (ma) files:

These are also current with the skeleton of July 14, 2016:

(NOTE: Standard Skeleton with bone located in standard positions determined by the avatar_skeleton.xml file.)

(NOTE: Standard Skeleton with bone located in standard positions determined by the avatar_skeleton.xml file.)

FBX files:

These are based on the Maya files above.

3ds Max (max) files

All files are saved as 3dsmax2012 files, if your version predates this, they probably won't load.

"Basic" skeleton files contain no additional nodes and will not work for advanced control rigs and animation export, but are simpler, contain less clutter and might be ideal for simple rigging&skinning work. However bone rotation axis will not behave ideally for animations.

"Normal/Animation" Rigs have additional nodes for ease of use with animations, but animation must be done on "mBoneName_DRV" point helper nodes instead of the bones directly. These skeleton files have nodes oriented in a manner that will make joints rotate on their local axis. This is particularly useful for mimicing animation in parts of the bento skeleton such as the hands and face where the bone is not aligned with an axis ( perpendicular to other things in the scene ). Hopefully these skeleton rigs will help understanding of the new joints.

For both skeletons ( both "basic" and "animation" ) the mesh skinning and rigging should be done to the mBoneName or "collision volume" (fitmesh) bones / dummies only. All skeletons are default (female) bone positions ONLY.

Dec, 2016 update fixes minor rotation issues in the collision volume bones that existed in the initial August 2016 posting.

Test Animations

Animation Export Tools

Maya

The following tools are used for export of BVH files from Autodesk Maya Software. The exporter was authored by Aura Linden and is available for free below.

It works ideally with the skeleton included in Mayastar, maintained by Cathy Foil. But should be able to be used as a standalone script as well.

Blender

While blender does not have any freely available animation exporters, it has an excellently maintained plugin package known as Avastar maintained by Gaia Clary.

3DSMax

Autodesk 3D Studio Max presently does not have any publicly available animation exporters. However, polysail resident is presently working on a plugin that will do so. Completion date is TBD.


Reference

Scale Locking Option

With Project Bento, the option to have an uploaded mesh attachment completely ignore all slider input was also added.

When you upload a model beneath the standard "Include skin weight" and "Include joint positions" check boxes, there is now an additional check box for "Lock scale if joint position defined". If you check this box, then any joint that has a position defined will also have its scale locked. Scale locking will be enforced whenever a joint would normally be scaled by a slider thus "immunizing" it to all slider influence. To make a bone truly slider-proof, you will have to pay attention to the joint hierarchy. Any change to the scale of a parent bone will also cause the child bone to move, so you will have to make sure the bone's ancestors also have joint positions defined. A joint position will be ignored unless it differs from the bone's default location by at least 0.1 mm (ie, 0.0001 m in the units used by the skeleton definition file). If you want to lock a joint without changing its position, use a very small offset that will not be large enough to have a visual effect (some fraction of a mm).


I found a problem? How can I give feedback?

  1. Submit bugs in Jira in the BUG project: please put [Bento] in the summary line.

If you have a display problem, please try with hardware skinning enabled and disabled

Me->Preferences->Graphics->Advanced->Avatar Rendering->Hardware skinning checkbox

Does changing that setting affect the display?