私は2つの異なる骨格フォーマットの間で変換しようとしています。私には階層的なスケルトンがあります。3Dスケルトンシステム間の変換
今一つのフォーマットで、与えられたノードの行列は(DirectXの)により算出される(matScale/matRotate/matTranslationFromParentがどこrecurively、底ノードから は、先頭に、その特定のノードSRT):
appliedMatrices = appliedMatrices * matScale * matRotate * matTranslationFromParent;
しかし、translationInが(ParentPos - EndPartPos)のベクトル減算であり、変換が(EndPartPos - ParentPos)であり、andmatScale/matRotate/matTranslationFromParentがそうであるところで、(再帰的に、下位ノードから上へ、translInを使用するフォーマットに変換する必要があります。特定のノードSRT):
appliedMatrices = appliedMatrices * matScale * matTranslationOut * matRotate * matTranslationIn * matTranslationFromParent;
第1のフォーマットから第2のスケルトンフォーマット(およびその逆)に変換するにはどうすればよいですか?
翻訳の翻訳を制御できますか?これらは互いに逆です(減算が示すように)?これらの翻訳をIDに設定すると、フォーマット1からフォーマット2に変換できます。 –
これらは逆ですが、残念ながら私はスケルトンを制御できません。だから私はそれらを取り除くことはできません(骨格ノードを動かすだけです)。 –