RBF は「放射基底関数 (Radial Basis Function)」のことです。 ポーズ エディタでは、ジョイントの平行移動、回転、スケーリングを、別のジョイントの回転に基づいて制御することができます。
各 RBF ソルバには、ドライバー ジョイントの回転値に基づいて、その影響を受ける各ジョイントの位置を定義する一連のポーズが含まれています。 アニメーション中にドライバー ジョイントが回転するのに伴い、RBF ソルバはソルバに設定されているパラメータに基づいて補間する各ポーズの比率を取得し、影響を受ける各ジョイントにそれを適用します。
ソルバを作成する
ソルバは短時間で作成できます。 作業時間の大半は、画面に表示される結果を整えるための編集にかかるものです。
新しいソルバを作成するには、ポーズ エディタの RBF タブで、左下隅にある [Create (作成)] ボタンをクリックします。 この時点で選択しているジョイントがある場合は、右側にある [RBF Driver Joints (RBF ドライバー ジョイント)] のリストに自動的に追加されます。
新しいソルバが作成されると、自動的に編集モードになります。 編集モードにできるのは、一度に 1 つのソルバのみです。 現在編集中のソルバは、名前の左側に鉛筆アイコンが表示されます。
ソルバを編集する
ソルバを編集するには、RBF タブの左下にある [Edit Selected (選択したものを編集)] ボタンを押します。 ソルバがすでに編集モードの場合は、代わりに [Finish Editing (編集を終了)] ボタンが表示されます。
編集モードでは、まずソルバに正しい RBF ドライバーと影響を受けるジョイントが設定されていることを確認してください。これは、複数のポーズがある場合に編集が難しくなるためです。
ドライバー ジョイントとその影響を受けるジョイントを追加するには、Maya のビューポートでジョイントを選択しながら [Add Driver/Driven (ドライバー/ドリブンを追加)] ボタンをクリックしていきます。 削除する場合も同様に、リストからジョイントを選択しながら [Remove Driver/Driven (ドライバー/ドリブンを削除)] をクリックします。
正しい入力を設定できたら、ポーズの編集を開始します。 作業の大半はここで行われます。 ポーズのアクションにアクセスするには、ポーズのタブを切り替えます。
リスト内のいずれかの要素をダブルクリックすると、Maya のシーン内にある別の要素を選択できます。
| 項目 | アクション |
|---|---|
ソルバ名 | UERBFSolver ノードを選択します。 |
ポーズ名 | ソルバのすべてのドライバー ジョイントとその影響を受けるジョイントを、そのポーズに移動させます。 |
ドライバー ジョイント | ドライバー ジョイントを選択します。 |
影響を受けるジョイント | 影響を受けるジョイントを選択します。 |
一般的なワークフローは次のとおりです。
ドライバー ジョイントを新しいポーズの位置まで回転させます。
補正するために影響を受けるジョイントを平行移動、回転、スケーリングします。
ポーズの作成や更新を行います。
ポーズに違和感がある場合は、ジョイントを動かしてみてからポーズを更新してください。
編集内容は [Update (更新)] ボタンをクリックしないと保存されないため、保存せずに編集モードを無効にすると、編集した内容が失われます。
RBF パラメータ
半径
半径は、ドライバーのトランスフォームがターゲット ポーズにどれくらい近づくと、そのポーズが有効になるかを示します。
自動半径
自動半径を有効にすると、デフォルトのポーズと各ターゲット ポーズとの平均距離が計算されます。
最小半径値と最大半径値は、ソルバが自動半径値の計算に使用している情報を示すデバッグ値です。 自動半径値も結果を示すデバッグ属性です。
最小半径は、デフォルトのポーズと最も近いポーズとの絶対距離から計算されます。 最大半径は、最も近いポーズと最も遠いポーズとの絶対距離の合計です。
正規化方法
影響を受けるトランスフォームを回転させると、ソルバはウェイトを計算し、ポーズの有効度を表示します。 このウェイト値の範囲は 0 ~ 1 です。 すべてのポーズのウェイトの合計が 1 を超える場合や 1 に満たない場合があります。 そのような場合に正規化が役立ちます。
正規化が選択されていない場合も、実際には 1 を超えるように正規化されます。 このため、常に正規化を有効にしておくことをお勧めします。 DNA は正規化を無効にした設定をサポートしていないため、その状態でソルバをエクスポートするとエラーが発生します。
ウェイトしきい値
ポーズを有効にするために必要な正規化された最小距離
Distance Method
| 名前 | 説明 |
|---|---|
Euclidean | 標準の N 次元距離測定。 |
クォータニオン | 入力をクォータニオンとして扱います。 |
SwingAngle | 入力をクォータニオンとして扱い、回転した TwistAxis 方向間の距離を見つけます。 ツイスト軸として設定されていない y 軸と z 軸の回転値のみを使用します。 |
TwistAngle | 入力をクォータニオンとして扱い、TwistAxis 方向の周りの回転間の距離を見つけます。 ツイスト軸で定義された軸の回転のみを使用します。 |
関数のタイプ
異なるポーズ間の補間に使用されるカーブ タイプです。
ツイスト軸
SwingAngle や TwistAngle 距離メソッドの計算中に使用される軸です。
入力モード
DNA では、「Rotation (回転)」のみがサポートされています。 「Translation (平行移動)」に設定すると、エクスポート時にエラーが発生します。
ミラーリング
ソルバやポーズのミラーリングは、単純な検索と置換による方法か、名前付きグループを使った正規表現のいずれかで行うことができます。
次の表では、正規表現を使ってソルバ、ポーズ、ジョイント名を MetaHuman のスケルトンに正確にミラーリングした例を示しています。
| 名前 | 検索 | 置換 |
|---|---|---|
ソルバ | (?P<prefix>.+)?(?P<side>_l_)(?P<suffix>.+)? | {prefix}_r_{suffix} |
ジョイント | (?P<prefix>.+)?(?P<side>_l) | {prefix}_r |
ポーズ | (?P<prefix>.+)?(?P<side>_l_)(?P<suffix>.+)? | {prefix}_r_{suffix} |