HumanIK がキャラクタの肩、肘、腰や膝にロール回転を適用すると、回転の割合を抽出して、これを代わりにジョイント チェーンの次のノードに適用できます。キャラクタのスキン処理のセットアップ方法によって、この方法を使用した複数ジョイントにまたがるロール回転のスムージングにより HumanIK ソルビング後のキャラクタのメッシュのリアリティを向上できます。 このタイプのロール抽出は通常、IK ソリューションでの四肢の最終的な位置には影響しません。その代わり、腕や脚に沿ってロール回転のスムージングや補間をコントロールするオプションの方法です。
たとえば、次の図では、キャラクタの左手首のエフェクタが 90 度前方にロールしており、Reach Rotation 値が 1 に設定されています。 この手首のノードのリーチを、目的の回転にするため、HumanIK はロール回転を肘のノードに適用します。緑色のラインが、肩、肘、手首のノードのローカル Y 軸の大体の方向を示しています。
下記の図は、ロール抽出を使わなかった結果を示しています。すべてのロール回転が肘で局所化されているため、この領域のスキン処理が著しく変形しています。
ただし、肘から 60 パーセント抽出し、チェーンの下方にある次のジョイント(この場合手首)に代わりに適用すると、よりスムーズでリアルなメッシュを得られます。
上記の図は両方とも、グローバル スペースでの手首の最終的な回転は同じになることに注意してください。ただしローカル スペースでは、肘と手首の回転が親に対して変化します。
オプションのロール ノードをキャラクタの腕や脚にキャラクタライズすると、ロール抽出エンジンが回転を、回転したノードの子ロール ノードに適用します。たとえば、LeftShoulderNodeId が回転すると、任意の抽出されたロール回転が、LeftShoulderRollNodeId がキャラクタライズされている場合にはこれに適用されます。キャラクタライズされていない場合は LeftElbowNodeId に適用されます。同様に、LeftElbowNodeId が回転すると、任意の抽出されたロール回転が、LeftElbowRollNodeId がキャラクタライズされている場合にはこれに適用されます。キャラクタライズされていない場合は LeftWristNodeId に適用されます。
HumanIK でサポートしているロール ノードや、スケルトン階層での配置の概要については「HumanIK ノードおよびエフェクタにジョイントをマッピングする」も参照してください。
子ノードが Degrees of Freedom を使用してキャラクタライズされている場合、非ロール子ノードではロール回転を抽出したり適用することはできません。
たとえば、LeftElbowRollNodeId がキャラクタライズされていない場合、LeftElbowNodeId に適用されているロール回転が抽出され LeftWristNodeId に適用されます。この場合、LeftWristNodeId に Degrees of Freedom がキャラクタライズされているとロール回転は親から抽出されません。
LeftElbowRollNodeId がキャラクタライズされている場合、ロール回転は常に LeftElbowNodeId から抽出されて適用されます。LeftWristNodeId に割り当てられている Degrees of Freedom は関係ありません。
ロール抽出をロール ノードと併用する場合、ロール抽出エンジンで適用されている回転の割合も抽出し、抽出された回転をもう 1 度、ジョイント チェーンの下方の次のノードに適用できます。これにより、回転がよりスムーズに補間されます。
たとえば、下記の図では、肘に適用されたロール回転の 60 パーセントが抽出され、対応するノードにロール抽出エンジンにより適用されています。この肘の結果のメッシュは、上記の最初に説明した、ロール抽出を行っていない図よりも大幅に改善されていますが、この場合の結果にはまだ、ロール ノード周囲のスキン処理に著しい偏りが発生しています。
しかし、下記の図では、ロール ノードに適用されたロール回転の 50 パーセントが再度抽出され、手首に適用されています。全体で、肘に適用される元の回転の 60 パーセントが最初に抽出され、ロール ノードに適用されます。次に、回転の 50 パーセントがロール ノードから抽出され、手首に適用されます。回転は前腕全体でより均一に広がり、メッシュ上の最終効果がよりリアルになっています。