ousnius / BodySlide-and-Outfit-Studio

BodySlide and Outfit Studio, a tool to convert, create, and customize outfits and bodies for Bethesda games.
GNU General Public License v3.0
290 stars 64 forks source link

"Apply Pose To Mesh" doesn't update slider diffs #406

Closed sts1skj closed 2 years ago

sts1skj commented 2 years ago

If you select a pose with at least one bone rotated and then click the "Apply To Mesh" button in the Pose frame, the model's vertex's positions are updated, but the slider diffs for those vertices are not. So the slider diffs now offset the vertices in the wrong direction.

For example:

  1. Load "CBBE Body".
  2. Turn on posing, select the bone "NPC R Thigh", and pick an X rotation of 1.67 (about 90 degrees), so the body kicks its right leg out horizontally.
  3. Click "Apply To Mesh".
  4. Set the "Chubby Legs" slider to 200%.

The vertical left leg is appropriately thickened, but the vertices of the horizontal right leg are moved along the leg, so it doesn't get significantly thicker or thinner. image

sts1skj commented 2 years ago

This bug is not important to me; I don't care if it's fixed (for now). But I thought I ought to report it for completeness's sake.

I could probably fix this bug if you want me to.

ousnius commented 2 years ago

@sts1skj The same thing applies to performing rotations using the transform tool (wxGLPanel::EndTransform()).

But it could be argued that if you only rotate a small part of a mesh, the slider data shouldn't be updated alongside the transform but stay as is.

In general though, in my opinion you shouldn't be using "apply pose to mesh" without doing new slider data or re-conforming afterwards (whatever the use-case is), as when you need to re-pose a mesh for whatever reason, you usually need new matching slider data as well.

So I'm not sure if it's worth fixing/adding this to be honest.