Jump to content

Open Source Ruth Avatar File Location


Paulsian
 Share

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

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

Recommended Posts

56 minutes ago, Quarrel Kukulcan said:

I have no idea what's causing these distortions. I can eliminate the worst ones if I manually rotate the armature and mesh to face +X and apply rotations, but the head is still stretched and there are bad fittings at the waist and elbows.

I get that with the -x global orientation forward axis. getting closer it's lined up just little stretchy. wicked looking. I tried resetting skeleton and adding a toggling default shapes hoping it would snap into place. 

-x global orientation forward axis.jpg

Edited by Paulsian
Link to comment
Share on other sites

17 hours ago, Paulsian said:

Eureka works! sorta, I have the normal nothing is ever easy challenge again but I could probably figure out why the body is little stretch but the parts move just fine they are just slightly elongated. this is new roth over original roth. I clicked the roth file in inventory picked wear and he attached to left hand. 

new roth over original roth 1.jpg

new roth over original roth 2.jpg

new roth over original roth 3.jpg

This behaviour is likely caused by the exported file having the wrong axis settings.

For reference, SL expects the exported file to have the following axis settings:

Y Forward

Z Up

See below.

If your exported file uses any other axis settings, then the armature will become distorted. Note that SL is sensitive to transforms applied within the file, so make sure that the armature has the correct rotations and joint positions within the file.

Quote

I get that with the -x global orientation forward axis. getting closer it's lined up just little stretchy. wicked looking. I tried resetting skeleton and adding a toggling default shapes hoping it would snap into place. 

That's likely caused by the exported mesh being in the wrong scale. SL is also sensitive to the scale of the file, so you *need* to make sure that the scale is correct, and that the units used are based on inches, not meters (Blender default). See some of my posts here:

EDIT:
So, playing around, I can see there's more weirdness at play than just the above. Will keep tinkering.

Edited by Jenna Huntsman
  • Like 1
Link to comment
Share on other sites

On 5/26/2022 at 12:12 PM, Aquila Kytori said:

You will find a copy of Ruth in Avalab's (previously Machinimatrix)  Avatar Workbench blender file :

https://www.avalab.org/avatar-workbench/

-min.thumb.png.5b65fd9c38bf5fc63dfca164f2623559.png

 

 

Avalab is cool thank you for this information. I used the dae female avatar file and uploaded to viewer as I tried with the other exactly and it worked on the first time. I'm going to get the blend file for her and compare the rig setup for both of them. This is the greatest way to learn for me having a working one and non working one. Eventually I'd like to rig my own. I can create skeletons but naming them and associating them with the mesh and all that is slowly happening in my brain. 

 

avalab avi works.jpg

avalab.jpg

Link to comment
Share on other sites

2 hours ago, Jenna Huntsman said:

This behaviour is likely caused by the exported file having the wrong axis settings.

For reference, SL expects the exported file to have the following axis settings:

Y Forward

Z Up

That's the animation setup for bvh export, along with the linear usits set to inches. (and negative Y forward)

For rigging, the orientation should be

Z up

Positive X forward

And the joints positions vectors from the viewer's skeleton definition set to use your preferred linear unit. If the numbers match, the unit you use doesn't matter.

  • Thanks 1
Link to comment
Share on other sites

So, having had a play for a bit, it's all very weird in ways which I wouldn't have thought:

(feel free to correct me on these observations if you have more knowledge than me!)

  • While the model has the expected axis of +X forward, Z up, all bones origins must be positioned at the middle of the bone, with the tail of the bone rotated to +Y (except when it's not, although this (more logical) behaviour seems to be limited to the bento skeleton)

(todo: add more things here later, ran out of time for now)

Edited by Jenna Huntsman
Link to comment
Share on other sites

I noticed with the avalab rig the bones were more complete included the wings, tail, hind legs. I was able to select all in blender including the camera and export to dae as above and worked. 

I've included a photo of the blend file exported to dae and upload to viewer, the reaction when previewing the skin texture brings the avatars arms down to its side.

As far as the orientation, model in blender is facing +x when I load the sl operation preset the default for forward is +Y and up is +Z. I did not change or apply so unsure by not check boxing & applying if the export even applied that area's default or used the model's +X orientation for forward? 

 

avalab orentation.jpg

image_2022-05-30_09-55-07.png

successful avalab blend export to dae and upload to viewer.jpg

export from blender to dae test.jpg

avalab rig.jpg

Edited by Paulsian
Link to comment
Share on other sites

I checked the bones on the roth to see if any of them were hidden like the wings and hind legs and none I could find were hidden. Same with Ruth. Unsure if these are complete models. Or maybe they are used for animesh only? No idea. 

Ruth2v4Dev Bones.jpg

Link to comment
Share on other sites

1 hour ago, Paulsian said:

I checked the bones on the roth to see if any of them were hidden like the wings and hind legs and none I could find were hidden. Same with Ruth. Unsure if these are complete models. Or maybe they are used for animesh only? No idea. 

Ruth2v4Dev Bones.jpg

It notes on the GitHub page that while it uses the bento skeleton, the bones which are unused for weighting have been deleted - so, in other words, it's an incomplete skeleton.

My theory is that the uploader has 2 different behaviours depending on the skeleton used - if using the Bento skeleton, then it seems to use a much more standard and logical bone representation wherein the head and tails of the bones are located at each end of the bone. On the other hand, the pre-Bento skeleton places the head of the bone at the midpoint along the bone, with the tail facing +Y. See below screenshot, which is the .dae provided from the Github.

Ruth2weirdSkeleton.thumb.png.92af7b6ec974ceb2152c0b8b9c972636.png

My question is, how does the uploader decide when to use the newer behaviour over the old? Does it require the complete Bento hierarchy, or does it look for specific bones to be present?

Link to comment
Share on other sites

4 hours ago, Jenna Huntsman said:

It notes on the GitHub page that while it uses the bento skeleton, the bones which are unused for weighting have been deleted - so, in other words, it's an incomplete skeleton.

That should be fine as long as bones aren't deleted from the middle of a chain. A mesh object cannot be weighted to more than 110 bones anyway, and the complete SL skeleton has more than that. (Even the fullest mesh body in the Ruth/Roth repository has...I think I counted 105 weightings, so that's fine.)

 

Quote

On the other hand, the pre-Bento skeleton places the head of the bone at the midpoint along the bone, with the tail facing +Y. See below screenshot, which is the .dae provided from the Github.

You will get that behavior when you import any .dae file unless you check "Find Bone Chains" and "Auto Connect" (and even then, it only works if the bones form a continuous parent-to-child chain. Ruth/Roth use mostly Fitted Mesh bones, which don't connect directly to each other). .dae files don't store tail data. Just heads. Mathematically that's all that's necessary. Some 3D software, like Maya (which I believe was heavily used in creating SL), doesn't even use two-ended bones when modeling. They use single-point "bones" called joints instead.

ADDENDUM: The heads moving to the midpoint has something to do with bones being able to have custom pivot points in some software, I think. That's beyond my current understanding of 3D data formats. I do see it isn't the same change for every bone.

Edited by Quarrel Kukulcan
Link to comment
Share on other sites

50 minutes ago, Quarrel Kukulcan said:

You will get that behavior when you import any .dae file unless you check "Find Bone Chains" and "Auto Connect". .dae files don't store tail data. Just heads. Mathematically that's all that's necessary. Some 3D software, like Maya (which I believe was heavily used in creating SL), doesn't even use two-ended bones when modeling. They use single-point "bones" called joints instead.

Interesting - I don't always see that behaviour, just on the pre-bento .dae files I have, the post-bento will import with the skeleton's head and tails in the correct place. Odd.

Edit:

Testing the import with Find Bone Chains and Auto Connect works for the other pre-Bento DAEs that I have, but interestingly not the Ruth2 dae from the Git - seems like the heirarchy is broken on that one, however it seems that the uploader handles it just fine.

50 minutes ago, Quarrel Kukulcan said:

That should be fine as long as bones aren't deleted from the middle of a chain. A mesh object cannot be weighted to more than 110 bones anyway, and the complete SL skeleton has more than that. (Even the fullest mesh body in the Ruth/Roth repository has...I think I counted 105 weightings, so that's fine.)

Having looked at the Ruth2 body, it's missing all of the mSpine bones for a start - guessing that could cause an issue?

Ideally I'd try retargeting the Ruth2 I've got onto a complete bento skeleton (with the correct orientation) and then try uploading it, see if it works, but I don't even know where to start with that (Blender is very confusing to me at times)

Edited by Jenna Huntsman
Link to comment
Share on other sites

On 5/30/2022 at 5:42 PM, Jenna Huntsman said:

My theory is that the uploader has 2 different behaviours depending on the skeleton used - if using the Bento skeleton, then it seems to use a much more standard and logical bone representation wherein the head and tails of the bones are located at each end of the bone. On the other hand, the pre-Bento skeleton places the head of the bone at the midpoint along the bone, with the tail facing +Y. See below screenshot, which is the .dae provided from the Github.

The "standard and logical representation" is a joint, not a bone. The head and tail concept are proprietary to Blender only.

So, to explain the difference between the representations between

On 5/30/2022 at 5:42 PM, Jenna Huntsman said:

Ruth2weirdSkeleton.thumb.png.92af7b6ec974ceb2152c0b8b9c972636.png

And this

On 5/30/2022 at 4:20 PM, Paulsian said:

Ruth2v4Dev Bones.jpg

Is that the latter has been readjusted by Blender.

The first image represents the joint orientation, that for SL needs to be x axis forward. If you enable bone roll axis display, you can see that. On the other hand, though, Blender bone rapresentation is fixed and the joint orient is established to always be Y axis along the bone length, and therefore the other 2 axis get adjusted by the so called bone roll.

The issue is that Blender does not have an internal representation for custom joint orientations as well as for a bind pose, and most of the work that avastar does (as well as other add-ons that address export or import for SL) is translation work to comply with the expected standards.

Link to comment
Share on other sites

22 hours ago, Quarrel Kukulcan said:

I've sent some DMs to one of the Ruth & Roth project members and heard that the latest development versions don't work right for Blender 3.0 yet but earlier mesh versions do work for earlier Blender versions. I'm trying to get more details.

The super-short story is that that repository is still very much a work in progress. Some is experimental, some is for OpenSim, some is deciphering SL's inner workings, some are .dae files that are good for uploading but not necessarily good for re-importing and working on, some was made with and/or intended for Avastar and won't necessarily work right with vanilla Blender...

I've been told that the .dae files in the Roth2/Mesh/DAE and Ruth2/Mesh/DAE subfolders should work, and I've confirmed that a few of the Roth ones give a correct, undistorted mesh if I import into Blender 3.0.1 and re-export, making sure I use the Keep Bind Info option during both steps. But there's a downside: every bone that has no children has that default "half a meter long pointing toward +Y" position. That includes every fingertip, face and fitted mesh bone. Manually adjusting all of them back into something resembling SL's original positions probably isn't worth it, so if there is a usable version of the Ruth/Roth mesh in one of the Machinimatrix workbench files, it's probably easier to use that.

One thing that was pointed out is that these meshes mostly use the Fitted Mesh bones (the ones named in ALL_CAPS) so more avatar shape sliders work. That's the big complication. Fitted Mesh bones don't work with vanilla Blender unless they have extra bind pose info in their custom properties. If they don't have that info, you either have to add it yourself or use Avastar or Bento Buddy, which know how to add it for you.

Edited by Quarrel Kukulcan
  • Like 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 695 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...