Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Normalized bones don't sync all transforms to raw bones #1585

Open
mattrossman opened this issue Feb 27, 2025 · 0 comments
Open

Normalized bones don't sync all transforms to raw bones #1585

mattrossman opened this issue Feb 27, 2025 · 0 comments

Comments

@mattrossman
Copy link
Contributor

Background

From the 1.0 migration guide:

Normalized human bones are proxy objects of raw human bones. Operations applied to normalized human bones are automatically synced to raw human bones upon VRM.update or VRMHumanoid.update. If you don’t need this behavior, set VRMHumanoid.autoUpdateHumanBones to false.

From the description of VRMHumanoid.update:

If autoUpdateHumanBones is true, it transfers the pose of normalized human bones to raw human bones.

This reads as though any transforms applied to normalized human bones are synced to raw human bones.

From the Forbidden Transforms section of VRMC_vrm humanoid spec:

For transforms of humanoid bones, scale components MUST have positive values (zero is not permitted).

While the spec requires that scale be nonzero, it doesn't otherwise restrict bones from having scale or translation transforms applied.

Current behavior

Currently the following transforms are synced:

  • Rotation
  • Position (for "hips")

However, the following transforms are not synced:

  • Scale
  • Position (for all bones other than "hips")

Note that these transforms work when applied directly to the raw bones.

Expected Behavior

I expect that position, rotation, and scale of all normalized bones be synced to raw bones.

Example:

Slider scales "head" normalized human bone with autoUpdateHumanBones: true → Head doesn't change scale
https://jsfiddle.net/mattrossman/3by9rtfx/0/

Slider scales "head" raw human bone with autoUpdateHumanBones: true → Head changes scale
https://jsfiddle.net/mattrossman/3by9rtfx/1/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant