Skip to content

[Bug Report]: HE1 skeletons have inverted secondary axis after bone matrix remapping #14

Description

@AdelQue

Report Review

  • I have reviewed existing issues on this repository and my issue is not currently reported.
  • I have ensured I am on the latest version of the current build of the addon I am using.

Which version of the HEIO are you using?

Release

Which game(s) did you try to work with?

No response

Please provide details regarding the bug you have encountered

As is known, HE1 skeletons' bone orientations are typically using +X axis primary, +Y axis secondary, whereas HE2 skeletons are typically using +X axis primary, +Z axis secondary, where primary is the length of the bone, secondary is the axis that limbs will bend along (knees, elbows, etc). When importing an example of each skeleton in their native axis, rotating along their respective secondary axis in the negative direction will show them rotate in the same direction.

Image

However, Blender's expected system will be +Y primary, and can use either X or Z as a secondary axis depending on the circumstances. X is preferred over Z because one remapping formula can be used on all bones and still maintain mirror support, unlike Z which would require that one half of the skeleton gets a separate inverted formula.

From here, now is a question of +X or -X. Currently, when selecting the appropriate target game, HE1 skeletons must rotate along the secondary axis in the positive direction in order to achieve the same rotation, unlike HE2 which rotates correctly in the negative X direction for the same effect. This means that the secondary axis is being inverted, or effectively reading the original axis as +X primary, -Y secondary.

Image

This will become an issue for converting content between two games. Firstly would be hard-coded transforms like inverse kinematics, where skeletons transferred between games would have knees bending in the opposite direction when standing on a hill. Secondly would be for future support for animations. An animation imported from one game would not be compatible on a skeleton imported from another game.

Please provide the version of Blender that you are currently using when getting this bug.

All supported versions

Please select your Operating System.

Windows

Operation System Information

Windows 10 Pro 22H2

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions