webaverse / app

Web metaverse client
https://app.webaverse.com
MIT License
344 stars 207 forks source link

Art: Avatar review #1299

Closed avaer closed 2 years ago

avaer commented 3 years ago

This issue is for review/glitch tracking of new avatars.

avaer commented 3 years ago

unknown

This isn't a big deal but the eye bones seem to be pointing not forward by default.

avaer commented 3 years ago

image

The eye lashes do not conform to the avatar morphs.

avaer commented 3 years ago

unknown (1)

Something is busted on the finger UVs.

avaer commented 3 years ago

I can't pose any emotions on this one until the morphs are fixed, since the skin above eyes cannot actually raise/lower the forehead, which nullifies most emotions to neutral eyes.

image

avaer commented 3 years ago

Mouth internals do not conform to face morphs. This is with I + E = 1.

image

avaer commented 3 years ago

Similar eye morph problems on gear: image

avaer commented 3 years ago

Face.M_F00_000_00_Fcl_ALL_Surprised + Face.M_F00_000_00_Fcl_EYE_Surprised + Face.M_F00_000_00_Fcl_MTH_Down = 1

image

avaer commented 3 years ago

unknown

This is a good direction for increasing the expressivity of the Citrine based one, but the eyes are kind of too low and far apart. It's hard to experiment further since the morphs clip into the face due to the above issues.

Vianvolaeus commented 3 years ago

The morph issues are because the avatars in their current state are seperated into meshes defined by the material they are using. If you look at the mesh for the brows, lashes, etc, they will also have shapekeys for the expressions. Activating these on each mesh should result in a visually correct morph.

The meshes can also be selected and merged into a single object - we can split them again later if needed. (select all relevant meshes, ctrl+J) This means you would only need to control one shapekey for expressions, rather than values on several objects.

I believe Citrine is merged, so the problems with morphs wouldn't be apparent there.

Vianvolaeus commented 3 years ago

eye bones seem to be pointing not forward by default.

Yes - VRoid's heads have this bone orientation by default. Using free rotation and Individual Origins pivot-point should work fine, so long as X-mirror is disabled.

The bones have this orientation since they are the 'paper' 2D eyes, they effectively need to rotate on a radius larger than the head itself, so the bones are offset to achieve this.

Commonly the rotation of the bone's head/origin is used and the tail is ignored.

If it is preferable to have the eye bone tails facing forward, I can still do that.

Vianvolaeus commented 3 years ago

This is with I + E = 1

Multiple viseme shapekey values shouldn't be stacked like this. In some cases it may visually look okay, but more often than not, going past 1 on multiple shapekeys will result in something that looks bad or glitchy, since vertices will be moving far past their intended final position.

It's hard to experiment further since the morphs clip into the face due to the above issues

Some of the shapekeys the VRoid outputs are extreme! Luckily, we can actually limit the maximum value of any shapekey within Blender, and any exported model from Blender will also respect that value! I believe Studio also has some more shapekey editing tools as well - we can go back there and limit / change certain things now.

The brows are usually the main offender - here's an example of the value limit, off vs on: image image

Vianvolaeus commented 3 years ago

Something is busted on the finger UVs.

This one is a bizarre one. Will take a look, since this isn't a problem in Substance Painter, but for whatever reason is present in Blender. Will check the texture mapping in Blender, potential exporting issues, etc.

avaer commented 3 years ago

The bones have this orientation since they are the 'paper' 2D eyes, they effectively need to rotate on a radius larger than the head itself, so the bones are offset to achieve this.

Ok thanks that clarifies it.

If it is preferable to have the eye bone tails facing forward, I can still do that.

Nah, I can do the prerotation. It just seemed weird to me.

avaer commented 3 years ago

Multiple viseme shapekey values shouldn't be stacked like this. In some cases it may visually look okay, but more often than not, going past 1 on multiple shapekeys will result in something that looks bad or glitchy, since vertices will be moving far past their intended final position.

I realize that, I just like to cheat to get the effect I'm looking for. Range is probably the better tool though; thanks for showing where that is in Blender.

avaer commented 3 years ago

The meshes can also be selected and merged into a single object - we can split them again later if needed. (select all relevant meshes, ctrl+J) This means you would only need to control one shapekey for expressions, rather than values on several objects.

Got it, thanks. I don't think I've ever worked with such a split file with same morphs on many meshes so I was confused.

Vianvolaeus commented 3 years ago

Got it, thanks. I don't think I've ever worked with such a split file with same morphs on many meshes so I was confused.

Side effect from how VRoid models are constructed, and the texture baking process for SP. (since there's floating geometry, it projects onto other parts of the mesh and bakes incorrectly) Also handy to have parts seperated while we're still live concepting. Final models won't need to be separated like this at all, can be merged no problem 👍

Vianvolaeus commented 3 years ago

Citrine and Kanji now have updated versions with better rigging and merged meshes so they can be posed (with expressions) better than before. They've also been optimized a little and cleaned up in their .blend files.

I will update the rest in the same manner as I continue the fixes in #994 , where the the finalizing is currently being tracked.

avaer commented 3 years ago

One quick thing I noticed when posing: can we reduce the chest on Gear to make it more boylike/ambiguous in a silhouette? It's too obvious right now, but the rest of the design is great.

Gear is probably the only avatar where this applies.

Vianvolaeus commented 3 years ago

image Some minor reductions in proportions, as per previous suggestions, and also some editing towards ambiguity

Vianvolaeus commented 3 years ago

Additional cleanup and fixing has been carried out across all avatars. Files in drive updated.

@plankatron is going to save poses to a Blender Pose Library which we will be able to instantiate across all avatars via file appending - meaning that any pose made or tested with can be saved to this pose library, and then brought in to the avatar .blend file for usage.

This works since all avatars share identical naming convention and hierarchy. (the VRoid base armature)

As per request, I've prepared a workflow for exporting a static armature pose alongside a fixed shapekey facial expression. This includes your preferred method of combining different shapekeys to create a facial pose, @avaer, as well as using the preset facial expressions.

I will attach it in the following comment since it's a bit lengthy.

Vianvolaeus commented 3 years ago

Skinned gltf to static w/ shapekey expression workflow:

(CATS Plugin used. Very useful here for applying poses and shapekey editing etc.)

Pose Character w/ armature in Blender.

Apply as Rest Pose in CATS n-panel. Character will now be fixed in the pose that they were posed in.

Use existing expression, or, if making a custom one from a mix of existing, create a New Shape From Mix in the dropdown menu on the right of the Shape Key window.

Select this new Shape Key (Key [#]) Make sure it's value is set to whatever you wish it to apply as, and check the second box (view shapekey value in viewport)

Select all required objects in the viewport (can select all in viewport with A)

Export as gltf / glb with the following settings:

Include > Limit to Selected Objects

Animation > Shape Keys > Uncheck Shapekey Normals / Tangents [Keep Shape Keys checked!] // this is so surface normals don't look terrible for shapekeys

image