[BUG-41063] [Bento] Some fitted mesh no longer fits on Bento viewers #12652
Comments
polysail commented at 2016-12-16T03:29:27Z I remember investigating an issue in the same region of the body, but that issue was an incorrectly scaled tail bone. I'll have to dig for an old avatar_skeleton.xml to go back and double double check that nothing in the male sliders was changed in the butt region. I'll check into that later. I can't really tell exactly what's going on here, but my instinct is to check the vertex data? I know there's some differences between how vertex weighting is handled pre-and post bento. If pre-bento it had some weighting to something else, that somehow got "filled in / replaced" by normalizing the vertex weights, and that process is different in bento somehow? @the clothing designer, what happens if you try uploading the content again post-bento? |
polysail commented at 2016-12-18T08:20:53Z Is it possible that this behavior is due to the "repaired sliders" that were not working at values above 50% mentioned in https://jira.secondlife.com/browse/BUG-40672 |
Whirly Fizzle commented at 2016-12-18T10:15:14Z Hmm that bug only affected the torso muscles slider on female shapes though... |
polysail commented at 2016-12-19T06:30:32Z Yeah ~ I just double checked the Butt bone influence in the differing avatar_LAD files. There's no difference between the values, which leads the only explanation to be interpretation. |
Vir Linden commented at 2016-12-21T20:41:01Z, updated at 2016-12-22T13:04:52Z (edited: the pre-bento count of joints was 52, previously said 53 here. Also fleshed out the explanation a bit.) This one took a while to track down. The short answer is that this is a content problem that was previously masked by limits imposed by our rendering system. The longer answer with more technical details: It turns out that the skinned mesh is rigged to 53 joints, or at least lists 53 joints as influences. The last joint in that skinned joint list is the BUTT collision volume, ie, it's at element 52 in the zero-indexed array. The joint at element 51 is the PELVIS collision volume, which will become relevant later. Before Bento, only 52 joints per skinned mesh were supported (because the pre-bento skeleton had 26 collision volumes and 26 bones, this was considered the maximum needed), so the maximum legal index was 51. When the mesh was being drawn, indices above 51 would be clamped to 51. In the case of this mesh, that meant that vertices that said they were weighted to the BUTT collision volume (index 52) would wind up getting weighted to the PELVIS collision volume instead (index 51). This would tend to have the effect of flattening out/moving forward these butt-weighted vertices. So pre-bento, the model would not render as designed if it was rigged to the butt. So what "breaks" with Bento? Now the limit is 110 joints per mesh, so the index of 52 is perfectly legal, and no clamping is done. Now items that say they are weighted to the butt actually do get weighted to the butt, so the content renders as designed. This will tend to push those vertices farther back. The easiest way to see that this is the problem is to edit the shader file objectSkinV.glsl and change one line: // ORIGINALLY:
index = min(index, vec4(MAX_JOINTS_PER_MESH_OBJECT-1));
// CHANGE TO:
index = min(index, vec4(51.0)); Once the index is getting clamped at 51, you should see the original pre-Bento appearance for these meshes. So it looks like this really needs to be fixed at the content level by tweaking the weights and re-uploading the mesh. |
polysail commented at 2016-12-21T21:15:45Z, updated at 2016-12-21T21:22:52Z hmmmm~ there is the possibility that this may be a bit more wide-spread issue then. The habit is so entrenched in some people they were submitting tickets over not being able to continue to do it : https://jira.secondlife.com/browse/BUG-41066 |
Vir Linden commented at 2016-12-21T21:30:40Z Well, just having a model that's weighted to 53 joints is not a problem. The problem with this particular model is that the BUTT weights are bad, but this was being compensated for by having them remapped to the PELVIS. |
Vir Linden commented at 2016-12-22T00:27:54Z, updated at 2016-12-22T13:06:19Z Also, there should be no reason for pre-bento content to have 53 joints. The original skeleton had 26 bones and 26 collision volumes, so there must be a duplicate or invalid joint somewhere in the joint list for these rigged meshes. (Or an attachment point, which at the time was not officially supported) |
This bug was reported on the Firestorm Bento release by @JimmyV33304.
The same behaviour is seen on the LL Bento viewer.
Repro Items
Purchase the (NIRAMYTH) - AESTHETIC mesh body at http://maps.secondlife.com/secondlife/Niramyth/42/216/26
The demo will reproduce the problem.
The demo is not available on the Marketplace.
You will be forced to the landing point - use the teleporter in the store to go to the Aesthetic section of the store.
Purchase these sweat pants: https://marketplace.secondlife.com/p/mJ-010-Full-Perm-Sweat-Pants/7082041
Both repro items are non-Bento content.
Both repro items are fitted mesh and use the same rigging and the pants should fit the Aesthetic body perfectly for all shape variations.
Steps to Reproduce
Unpack the "(NIRAMYTH) - AESTHETIC - Advanced Mesh Body - SMITH DEMO" and replace outfit with this folder.
Take off the HUDs and boxer shors and wear any mod shape (the demo shape is no mod).
Attach the sweat pants.
Edit shape and increase the Butt Size
Observed Behaviour
When Butt Size is over 50, the Aesthetic mesh body butt pokes through the sweat pants.
See Fig 1 attached.
Problem does not reproduce on non-Bento viewers.
Fig 2 attached shows Butt Size at 100 on a pre-Bento viewer.
Expected Behaviour
Fitted mesh should still fit on Bento viewers.
Attachments
Links
Related
Original Jira Fields
The text was updated successfully, but these errors were encountered: