Jump to content

Project Bento Feedback Thread


Linden Lab
 Share

You are about to reply to a thread that has been inactive for 2283 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

We've been working on our heads a bit and we're now seeing some strangeness in how the bones are positioned in the in-world skeleton vs. what is defined in the avatar_skeleton.xml file and the 7/18 .dae export.



This is using the default shape, no animations, no custom joint positions.

The left and right center eyebrow bone is clearly positioned higher than it should be. I went and verified that the avatar_skeleton.xml values match the values we have in Maya. I don't know what's causing that one bone to be out of place, or whether it's just that one bone that's out of place (other bones may be less noticeable in their position error).

I was going to put this into Teager's JIRA, but I was not able to edit the JIRA.

Edit: JadenArt was doing some further testing and discovered some more details

She built a shape that was based on the SL Restpose shape indicated in Avastar, then exported her avatar .xml and compared the values to the ones in the avatar_skeleton.xml. 

avatar_skeleton.xml (edited for relevant values)name="mFaceEyebrowCenterLeft" pos="0.070 0.043 0.056" scale="1.00 1.00 1.00"name="mFaceEyebrowInnerLeft" pos="0.075 0.022 0.051" scale="1.00 1.00 1.00"

vs.

jadenart.xmlname="mFaceEyebrowCenterLeft" position="0.070000 0.042869 0.063257" scale="1.002000 1.002000 1.257000" name="mFaceEyebrowInnerLeft" position="0.075000 0.021325 0.049980" scale="1.002000 1.002000 1.257000"

Obviously the export values are suspiciously off, and I'm not sure why the Z value for scale is 1.25, but the main thing to notice is that the Z value for position is 0.007 high on the CenterLeft bone, but 0.001 low on the InnerLeft bone, while being approximately correct for the X and Y values.

  • Like 1
Link to comment
Share on other sites


Mel Vanbeeck wrote:

The left and right center eyebrow bone is clearly positioned higher than it should be. I went and verified that the avatar_skeleton.xml values match the values we have in Maya. I don't know what's causing that one bone to be out of place, or whether it's just that one bone that's out of place (other bones may be less noticeable in their position error).


It is indeed a bit unexpected but it is on purpose. Now before you complain please first read ahead :matte-motes-confused:

What happens is that Bento now has added 5 new sliders for editing the eyebrows. These sliders are located in the Hair style editor. And the values for the default Hair style do not match to the SL rest pose skeleton. The bad guy here is the "Eyebrow Points" slider which moves the center eye brows up and the inner eyebrows down as you have shown in your example.

The good news is: You can fix that by editing the Hair object that you wear (in the Eyebrows section):



The orange lines in the image indicate the slider range for the inner and center eyebrows. You get what you expect when you set the Eyebrow Points slider to a value of "0".

The bad news is: You must edit the worn hair wig (nowadays the bald cap in most cases) and set the slider value to 0. This might be a bit shady and confusing because we have 2 places where to customize the face appearance: Shape and Hair. However this was so since the beginning of Second Life, so it should be a well known customization feature.

Now you may complain or not :matte-motes-sunglasses-1:

Note For Avastar users:

Avastar currently does not support the new Eyebrow sliders. However i believe that we add this feature after all other issues have been solved.

Link to comment
Share on other sites


Leviathan Flux wrote:

...in Maya, I noticed this version of the skeleton has "Segment Scale Compensate" turned off on all the joints.  For Maya, this means that when you scale a joint, it affects all the parented joints, so if you adjust the scale to widen the shoulder, the lower arm and hand will also go wider.

Can you post one dae file where "Segment Scale Compensate" is turned on and one where it is turned off ? Has something fundamental changed in our demo collada files between recent versions? This was surely not intended.

About the Fitted Mesh bones: You are right they should have been added too. I see that we now have too many export options which makes it easy to forget parts :(

I will add an export option to our exporter that allows to export "the essential Rig" (or whatever we will name it at the end) that includes all mBones and all volume bones.

Link to comment
Share on other sites

I'm not entirely sure how the deformation of the face bones work - which parts of the body to deform together (I've separated this by head, tail, wings, body), or why it looks like a mess on import. I couldn't find the answer I was looking for here in this forum (though I did not look through each and every page), are there specific export settings in the most recent Avastar that I need to deform the face bones properly?



They look really odd but everything else looks ok. The forepaws are only goofy looking because 1. I repurposed the Bento wing bones as fingers and 2. nothing is animated. :matte-motes-bashful:

I also do not know how to make a basic deform animation, or what priority it should be. Guess that's not Bento related though. :matte-motes-crying:

I used to use the mSkull bone for the head's root rotation, then I used mFaceRoot instead, and made it not assigned to the entire head.

 

The eyelid bones are set up in a way so that the mesh will use only partial animation in that area, the rest will just be alpha switches.



So I guess my questions are not only the ones above but, how should I tackle these issues? Should I upload all of the meshes without anything but skin weights, then set up a deformer (like a cube with the bones per part, then link them together in-world), or just have skin weights and a deform animation..? These new bones will be so helpful but only if I know what to do with them.

I'll also mention that the green bones have been edited and re-parented, not sure if those maybe aren't ok to change child status on or not. I could also wait until Bento is at RC status.

 

 



Edit: added another picture of one of my problems, didn't mean to reply directly to Teager



Another edit: Seems like I sort of am on the right track to figuring this out.. A deform animation that has the joints offset correctly then? I had a useless animation from a week or two ago and it seemed to pop the head into existence at least better than it was before. Will tinker with this while waiting for a reply.

Link to comment
Share on other sites

I don't think you're doing anything particularly wrong, but there are others experiencing issues with facial mesh deform right now, as seen here: https://jira.secondlife.com/browse/BUG-37546?

 

Feel free to add to the jira, and/or come to the meeting this thursday to share your experiences with us :)

 

As for how to make a deform animation, you just need to export an animation of all bones in their default rest position, using the "apply armature scale" and "use translations" options. I find priority 1 or 0 is fine for a deform animation.

  • Like 1
Link to comment
Share on other sites

Okay.. Some success now, literally everything started to go as planned.



And then suddenly I zoomed out and the left leg is messed up, starting with the hip link bone. (left shoulder) What would cause this? It's not animated, none of the bones in the entire rig are animated, clear pose and everything else doesn't resolve this. It looks fine in edit mode, the skinning layer clears ok, but everything reverts back to this awkward leg pose. Hopefully I won't have to redo my rig.. pasting the pose of the right leg x-mirroed doesn't work correctly now either.

Maybe I accidentally toggled something in Avastar?

Link to comment
Share on other sites

There appears to be a problem concerning the neutral position for the eye and alt eye bones. When the eye size slider is set at 50, the eye bones are scaled to approximately 93%, but the eyelid bones are all scaled to about 100%. If the eye size slider is set to 64, the eye bones are scaled to 100%, but the eyelids are scaled to <"1.002000 1.086000 1.198000">. This lack of a neutral position for all involved bones results in a discrepancy between what you see in modeling tools and what you see after importing. Perhaps I could scale the eye bones to ~93% in Maya to match what's in-world?

The problem seems to be derived from these two definitions in the avatar_lad, which have asymmetrical min/max values in one, while the other has a symmetrical pair of values.

    <param     id="30689"     group="1"     name="EyeBone_Big_Eyes"     value_min="-1"     value_max="0.56">
    <param     id="689"     group="1"     wearable="shape"     name="EyeBone_Big_Eyes"     edit_group="shape_eyes"     label_min="Eyes Back"     label_max="Eyes Forward"     value_min="-1"     value_max="1">

What is the thought process behind the min/max values in the first code snippet? Is this just a place where 93% seemed close enough to the middle and the emphasis was set on matching the blend shape size at the 0 and 100 ends of the slider, or am I misunderstanding something here?

Link to comment
Share on other sites

The scaling of the system eyes is controlled by morphs and the slider definition uses multiple overlapping ranges which result in a not exactly linear dependency.

For the Alt Eyes we decided to use the slider setting for 0 and 100 as reference markers and then make a linear interpolation. This results in some deviation between system eyes and alt eyes in the slider mid range. The differing scale value

value_max="0.56"

was necessary to map the eye scaling of the alt eyes to the scaling of the system eyes.

We could use the slider midpoint (50) as third reference marker and split the lad definition into 2 overlapping ranges. This probably gives more precise matches. In whihc cases is this relevant?


Mel Vanbeeck wrote:

This lack of a neutral position for all involved bones results in a discrepancy between what you see in modeling tools and what you see after importing.

Our tool are prepared to display bones for arbitrary slider settings (also for the alt eyes) exactly in the same way as they are displayed in Second Life.

Link to comment
Share on other sites

After tinkering with the new avastar for a bit, I have seen definite improvement but I'm still experiencing issues with my lips collapsing. My nostrils also appear somewhat deformed from front view. So it's possible the issue I was having before wasn't wholly contained in avastar. If anyone else is able to upload meshes with custom facial joint offsets with no issues, let me know - I'd like to compare files. It's entirely possible that with all of these new avastar settings, and so many features reportedly not working, I'm just using the wrong set of options.

 





 

 

EDIT:

Previously, I had no weight on my teeth bones, which I had simply weighted to face root. With that setup, I was exporting without the "export only weighted bones" option. For safety's sake, I tried adding weight to the teeth and exporting again, to allow me to try "export only weighted bones", to see if perhaps that was the option causing problems. I expected to see my mesh either exactly the same or improved... but the opposite happened. The deform got worse.

 

After I added weight on the teeth, both with and without the "export only weighted bones" option which appears to make no real difference, all of my exports with weights on the teeth appear more deformed than my exports without weights on the teeth.

 

Could this

Link to comment
Share on other sites


Matrice Laville wrote:

The scaling of the system eyes is controlled by morphs and the slider definition uses multiple overlapping ranges which result in a not exactly linear dependency.

For the Alt Eyes we decided to use the slider setting for 0 and 100 as reference markers and then make a linear interpolation. This results in some deviation between system eyes and alt eyes in the slider mid range. The differing scale value
value_max="0.56"

was necessary to map the eye scaling of the alt eyes to the scaling of the system eyes.

We could use the slider midpoint (50) as third reference marker and split the lad definition into 2 overlapping ranges. This probably gives more precise matches. In whihc cases is this relevant?

Mel Vanbeeck wrote:

This lack of a neutral position for all involved bones results in a discrepancy between what you see in modeling tools and what you see after importing.

Our tool are prepared to display bones for arbitrary slider settings (also for the alt eyes) exactly in the same way as they are displayed in Second Life.

I'd say this is relevant in any case where one is attempting to use the new scaling feature of the eye and alt eye bones, since they're responsible for scaling something next the very thin eyelids which have very low tolerances for error. Right now, without any correction from a slider-sensitive tool in your 3d program, mesh eyes wind up ~7% smaller than they're supposed to be, which can easily cause the eyelids to wind up 2-3x as "thick" as they're intended to be when using rigged mesh eyes. This could just be documented in a wiki somewhere, but that sounds sub-optimal, and I am not sure it's needed yet.

I did some testing with some eyes that I scaled up by 7.7% before binding them, and it appears that the linear scaling from 0 to 100 defined in the avatar_lad currently matches the default eyes closely enough that I can't detect any difference with my naked eye. I'm a bit confused by this, though. I guess this means that the blend shape actually scales the bone up by 25.6% from 50 to 100, and down by 25.6% from 50 to 0? Couldn't the avatar_lad be set up like this, then?

<param     id="30689"     group="1"     name="EyeBone_Big_Eyes"     value_min="-1"     value_max="1">      <param_skeleton>        <bone         name="mEyeLeft"         scale="0.2494 0.256 0.256"         offset="0 0 0" />        <bone         name="mEyeRight"         scale="0.2494 0.256 0.256"         offset="0 0 0" />        <bone         name="mFaceEyeAltLeft"         scale="0.2494 0.256 0.256"		 offset="0 0 0" />        <bone         name="mFaceEyeAltRight"         scale="0.2494 0.256 0.256"         offset="0 0 0" />      </param_skeleton>    </param>

That would be nice, since we could leave the wiki model with normal 1,1,1 scaled eye bones if this worked, but either the default eyes are not actually scaling on the blend shapes in the Bento viewer, or the blend shape exactly matches linear scaling from 0 to 100. If that's the case, though, how did you arrive at the numbers you chose for your eye sliders with the center point at 64? I was assuming you were going by the actual blend shape models (which I haven't looked at). If you were looking at the blend shape models, that would mean you discovered that the smaller blend shape was 67.2% of the base, and the larger was 118.4% of the base shape. This would mean that with the bone being scaled to 93% when the slider is set to 50, its size increases by +27.5% when it's increased to 100, and -27.5% when reduced to 0 (weird that I'm getting slightly different numbers than the previous calculation (1.56/2*0.328)).

edit: I noticed afterwards that 25.6% is about 93% of 27.5%, so I forgot to divide this out somewhere

Apologies if I'm misunderstanding something here. I've been punching numbers into a calculator for quite a while now and I've had a number of contradictory results while working from different directions, so I can't say my level of certainty is all that high.

If the eyes are in fact still being manipulated by the blend shapes and not the bones (and I suspect they are), then changing the avatar_lad to anything other than linear scaling would result in the eyes not scaling at the same rate as the blend shapes, so I guess setting additional targets in the lad wouldn't be the correct answer. If you were leaving the lad alone, the wiki skeleton eye bones would need to be set to 92.784%, which is the true scale at the 50 point in the slider right now, but since the scaling appears to be linear, I think the numbers could just be changed so that 50 is scaled at <1,1,1>.

Link to comment
Share on other sites

To get the teeth working correct you must weight the upper teeth to the mFaceTeethUpper bone and the lower teeth to the mFaceTeethLower Bone.

Take care that each vertex of the teeth mesh is weighted only to its correcponding tooth bone. As soon as you add weight for other bones to the teeth mesh, the result becomes unpredictable.

Link to comment
Share on other sites

I initially calculated the eye scale to <0.25, 0.25, 0.25> Those numbers made most sense to me first and they worked reasonably well in Avastar. At that time i found a small deviation of the Scale in the X axis in Avastar. But when i moved the lad definition to the Bento viewer the scales (when all sliders are applied) went completely out of control at the extreme slider settings (0 and 100).

I ended up with a day of experimenting and testing directly in Aditi. The resulting numbers are now in the lad definition.

But i recall we had some other oddities with the Head Shape slider and Head Length slider. Those oddities disappeared suddenly after i reduced the complexity of those sliders for the Bento bones. This happened after i worked on the eyes. Maybe the changes in the head sliders also affected the eye size sliders and the oddities there disappeared also?

I tested your settings in Avastar and it appears to work well there. Have you tested this lad definition in the Bento viewer?

Link to comment
Share on other sites

  • Lindens

We'll be having a user group meeting today at 1:30 PM SLT, which is half an hour later than the usual time.

I'm back at work, still getting caught up with the forums. Looks like we've had a lot of recent discussion related to the last skeleton/slider changes, so we'll pull as much of that into the agenda today as possible. Thanks for all the testing and feedback!

Link to comment
Share on other sites


Matrice Laville wrote:

To get the teeth working correct you must weight the upper teeth to the mFaceTeethUpper bone and the lower teeth to the mFaceTeethLower Bone.

Take care that each vertex of the teeth mesh is weighted only to its correcponding tooth bone. As soon as you add weight for other bones to the teeth mesh, the result becomes unpredictable.

This would not solve my overall problem of my lips being crumpled inside my teeth. When I play an animation to put my facial bones in their correct starting positions, I can clearly see the lips moving outward to pass up the teeth, which were already in the correct place.

 

Here is a gif of my mesh (with the teeth weighted only to the teeth bones, and no other weights, as you suggest) shown first with only the joint positions as they appear after the mesh is worn, then with an animation played to put all bones in their correct starting locations.

 

Clearly there is a problem here. This is not an issue of shape - no combination of shape sliders fixes this issue. This may or may not be an issue with avastar exports - no one can yet say for sure. But it is clear that there is still a problem, and I, Mahadma, and Medhue - the only people in the bento group currently working on rigged faces with custom joint offsets - have all experienced it and reported it. 

 


Matrice Laville wrote:

For the Collad export options:

If you disable "Only weighted Bones" AND "Only Deform Bones" then all 368 Bones of the Rig get exported. You better enable at least one of the 2 options when you intend to import to Second Life.

For testing purposes, this is absolutely not an issue. In fact, in light of the problems I am having and still trying to understand, this is ideal.

Link to comment
Share on other sites

I have not done any testing other than uploading a pair of eyes (on unscaled bones) with one of the eye meshes scaled up by 7.777%. I was expecting to see the scale of the eyes change at a different rate compared to the default eyes, but throughout the slider range the small eye stayed small, and the big eye always matched the default mesh as far as scale, though it seemed to be set back about 1mm or so. I used the mesh eyes that are part of the MayaStar kit; I don't know where this slight difference in position is coming from.

https://i.gyazo.com/cd961628ec43d0ede68511ed14aca41d.gif

All I could really determine was that the scale in the blend shapes appears to be linear like your lad definition. I doubt my calculations are accurate to the third decimal place considering I was mainly just working off of your numbers which probably had some rounding too. It sounds much more plausible that the person making blend shapes would have used .25 as the scale value.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 2283 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...