KhronosGroup / KhronosGroup/COLLADA2GLTF

Does one need to normalize the rotation computed by TransformTRS?

Open
#155 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
573
Forks
154
PR merge metrics
No merged PRs in 30d

Description

When using the glTF library, and decomposing the matrix ```{1,0,0,0,0,0.5,0,0,0,0,1,0,0,2,0,1}``` into TRS, I get a non-unit quaternion with length `0.875`. Is this intented behavior?

As a side-note, would it be interesting to use SVD to also allow shearing, by decomposing any 3x3 matrix into rotation * scale * rotation? This would mean introducing extra dummy nodes. For example [this implemention](http://pages.cs.wisc.edu/~sifakis/project_pages/svd.html) seems to be both accurate and fast.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at the TransformTRS implementation and reproduce the reported decomposition using the matrix in the issue. Determine whether the non-unit quaternion is expected, then define the needed behavior for normalization or correction; the SVD/shearing proposal is a separate design question.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.