編集:私がやろうとしていることをさらに明確にする必要があると思います:
ツイストを制御するワイヤ デフォーマを使用して、Maya で前腕のリグをセットアップしました。ワイヤ デフォーマは skinCluster の上にあります。手首のジョイントには、「ツイスト」と呼ばれる追加の角度アトリビュートがあり、手首と同じ位置にあるが肘のジョイントの方向を維持する親ジョイントにリンクされています。ツイスト アトリビュートは、ワイヤの dropoffLocatorTwist[1] アトリビュートにも接続されています。ドロップオフが 100 の場合、ワイヤは前腕を無限にひねりますが、関節は依然として手首と手の「ポーズ」を表しています。skinCluster からのオーバーローテーションを補正するために、重複した手首と手の階層を追加し、ツイストをその回転 x に接続しました。
今、私はそれをさらに推し進めたいと思っています。アニメータの負担を軽減するために、余分なツイスト アトリビュートを削除し、ジョイント自体の 3 つのオイラー回転値すべてを補間して、ツイスト値を生成します。アニメーターがチャンネル ボックスに直接値を設定するか、手首を相対的に回転させるだけで値を設定すると仮定すると、これらの値は簡単に 1000pi (度単位) を超える可能性があります。ポリゴン メッシュが十分に密集している場合、ワイヤ デフォーマはアーティファクトなしでその大きさまでカーブに沿ってツイストを簡単に実行できます。問題は、オイラー回転を補間して、ポーズとねじれの両方を正確に表す単一の角度値を取得する方法です。各オイラー値に、行列内の行ベクトルに付随するオイラー回転の接線の内積を掛けて、曲線の接線と手首の行列を補間しようとしました。
twist=rx*(マトリックスの接点行 1)+ry*(マトリックスの接点行 2)+rz*(マトリックスの接点行 3)
特に、Y 軸周りの回転が苦手です。その理由と、ツイストを -pi <-> pi に制限することなく、オイラー回転をツイスト角度に適切に分解する方法を教えてもらえますか?
以前の質問:
Maya ワイヤ (カーブ) デフォーマを使用しており、ジョイントのオイラー回転に基づいて、ワイヤの接線に沿ってツイスト値を見つけたいと考えています。Maya のジョイントは実際にはトランスフォーム マトリックスですが、ユーザーがオイラー回転コンポーネントの度数として可能な最大 float 値を入力できるように構成されています。これらのオイラー値 (xyz) を取得し、それらを組み合わせて、軸が親行列の最初の行 (またはワイヤの接線) である軸角度回転と、角度は、その軸の周りのバインドされていないツイスト値であり、メッシュの無制限のフリップレスツイストを可能にします。問題は、x、y、および z の値を補間して、結果の角度がねじれのみを表すようにする方法が見つからないことです。もっと簡単に言えば、「x」を見つけたい x 軸が回転したオイラー回転の回転値で、'y'、'z'、または 3 つのコンポーネントすべての間の何かで表されます。x の値をより少ないが同等の値 (ex 270 == 90、しかし 270 が必要) に失うことなくこれを行う方法はありますか?