ソルバ

ソルバを使用して、さまざまな種類の IK リグのセットアップを作成します。

IK リグでは、幅広いボーン階層に影響を与えるさまざまな IK ソルバがサポートされています。それらは、チェーン内のボーンを回転および位置設定するインバース キネマティクス ソリューションを作成するために使用されます。複数のソルバを同時に使用して IK エフェクトをさらにカスタマイズすることもできます。

このページでは、IK リグ エディタ内で追加できる各種ソルバとそのプロパティの概要について説明します。

前提条件

  • IK リグ アセットを作成済みで、それを開いている。これを行う方法については、「IK リグ エディタ」ページを参照してください。

  • IK 目標 の作成方法を理解している。

ソルバを作成する

ソルバを作成する主な方法は、[Solver Stack (ソルバ スタック)] パネルにある [Add New Solver (新規ソルバを追加)] をクリックして、ソルバ を選択することです。

add new solver

IK リグにソルバがまだ存在しない状態で IK 目標 を作成すると、ソルバを作成するように求められ、作成したソルバがその目標に自動的にバインドされます。[Solver Type (ソルバ タイプ)] ドロップダウン メニューをクリックしてソルバを選択します。

add default solver

ソルバの使用方法

すべての IK ソルバには、ルート ボーンIK 目標 のいずれかまたは両方が指定されている必要があります。開始と終了の 2 つのボーンによって、そのソルバの IK チェーンが完成します。

root bone goal bone

  1. 階層チェーンの開始点にあるルート ボーン。

  2. 階層チェーンの終了点にある目標またはエフェクター ボーン。これは IK 目標 によって決まります。

ボーンおよび目標につなげる

ソルバのルート ボーンを設定するには、[Hierarchy (階層)] パネルで ボーン を選択し、[Solver Stack]ソルバ を選択した状態で、ボーン を右クリックして [Set Root Bone on Selected Solver (選択されているソルバにルート ボーンを設定)] を選択します。

set root bone on selected solver

ソルバに IK 目標が必要であれば、[Hierarchy] から 目標 を選択し、[Solver Stack] から ソルバ を選択した状態で、目標 を右クリックして [Connect Goal to Selected Solver (選択されているソルバに目標をつなぐ)] を選択すると、目標がソルバにつながれます。

connect goal to selected solver

ボーンと目標がソルバにつないだ後にそのソルバを選択すると、[Hierarchy] およびビューポートにあるそれらのオブジェクトが強調表示されます。

bone highlight

複数のソルバ

複数のソルバをソルバ スタックに追加して、IK リグに追加の機能を提供できます。複数のソルバがある場合は、その順序で評価されるので、ソルバの順序は重要であり、ソルバの横にある番号で順序が示されます。

multiple solvers

例えば、ほとんどの脚の IK セットアップでは、手足 IK の脚のチェーンより前に、まず臀部にある Set Transform Solver が評価されるように設定します。そうすることで、臀部の動きに対して脚が適切に事前補正されるようになります。

solver order of execution

[Solver Stack] 内でソルバ上または下にドラッグすることで、ソルバを並べ替えることができます。

rearrange solvers

ボーンを除外する

IK チェーン内のボーンを階層から除外することができ、そうすると、すべてのソルバでそのボーンが無視されるようになります。これは、適切ではないポーズを修正する場合や、複雑なチェーンを単純化する場合に便利です。

ボーンを除外するには、除外するすべての ボーン を選択した状態でそれらを右クリックして [Exclude Selected Bone From Solve (選択ボーンをソルバから除外)] を選択します。除外されているボーンは別のアイコンで示されます。

exclude selected bone from solve

除外したボーンを含め直すには、それらを右クリックして [Include Selected Bone In Solve (選択ボーンをソルバに含める)] を選択します。

ソルバのタイプ

IK リグで使用できるさまざまなソルバの一覧を以下に示します。

ボディ ムーバー

ボディ ムーバー ソルバ は、ルート ボーンにつながれている他の IK 目標 (通常は足) に基づいて、ルート ボーンを回転および平行移動します。ボディ ムーバーを使用すると、より自然な最終ポーズになるようなボディの大きく粗い動きを IK リグが生成できるようになります。

セットアップ

ボディ ムーバーには 1 つのルート ボーンと 2 つ以上の IK 目標がつながれている必要があります。ただし、キャラクターが四足または多足のクリーチャーであれば、もっと多くの目標をサポートできます。

使用方法

ボディ ムーバーは、主に地面に沿って動くことを目的としており、他のソルバ (手足 IKフルボディ IK など) と組み合わせる最初にソルバとして使用します。

たとえば、ボディ ムーバー単独では IK ソルバとしての正しい見ばえを生成しません。

body mover solver

ただし、その後に他のソルバが評価されるようにセットアップされていて、適切な設定が適用されていれば、ボディ ムーバーはより自然に機能します。

body mover solver

設定

ボディ ムーバーを選択すると、[Details] パネルに以下の追加設定が表示されます。

body mover settings

以下の設定は、位置と回転の両方の軸に及ぼす動きの度合い (チャンネルなど) を制御するために使用されます。場合によっては、より自然な見ばえのポーズになるように以下のプロパティを調整する必要があります。

たとえば、ヒューマノイド キャラクターでは、Rotation Alpha0 に設定すると、キャラクターがオフセット目標の方に不自然に傾きます。

body mover fix rotation

ただし、四足または多足のクリーチャーでは、このルートの回転を維持し、他の設定を変更しない方がより自然になることがあります。

body mover spider

目標設定

ボディ ムーバー ソルバに割り当てられている目標の下にある [Goal Setting (目標設定)] を選択すると、[Details] パネルに追加のプロパティが表示されるようになります。

body mover goal settings

この目標がボディ ムーバー ソルバに及ぼす影響の調整には Influence Multiplier (影響乗数) が使用されます。これは、目標に他のものよりも多くの影響を与えたい場合に便利です。

手足 IK

手足 IK は低いコストで単一チェーンの IK ソルバを提供します。通常は、個々の手足 (腕や脚) にこのソルバを使用します。

セットアップ

手足 IK が機能するためには 1 つのルート ボーンと 1 つの IK 目標が必要です。これは、開始ボーン (ルート) と終了ボーン (目標) を指定した一般的な IK ルールに従います。このソルバが正しく機能するためには、チェーンに 3 つ以上のボーンが必要です。

ほとんどの場合、 または をルートとして指定し、 を目標として指定します。脚の場合は、上腿 または 大腿部 をルートとして指定し、 を目標として指定します。

limb ik

設定

[Solver Stack] パネルで Limb IK を選択すると、[Details] パネルに追加のプロパティが表示されます。これらのプロパティは、Limb IK チェーンが 3 つ以上のボーンで構成されている場合のみに有効になります。このため、通常のヒューマノイドの 大腿部 > 脚 > 足 ソルブで Limb IK を使用する場合、これらのプロパティはその動作に影響しません。

limb ik settings

名称

説明

Root Bone

この Limb IK ソルバに割り当てられているルート ボーン。

Reach Precision

目標の位置に到達しつつあるエフェクタの精度しきい値を制御する値。数値が低いと精度が上がり、数値が高いと精度が下がります。

Hinge Rotation Axis

ソルバ チェーンの法線平面。

Max Iterations

この値を大きくすると、ジョイント チェーンが目標位置により収束されるようになりますが、Limb IK チェーンの CPU コストが増大します。

Enable Limit

ルートとエフェクタとの間のジョイント チェーンで回転の制限を有効にします。

Min Rotation Angle

[Enable Limit] が有効な場合は、親と子ボーンの間に少なくともこの入力角度が強制的に適用されます。

Average Pull

ジョイント チェーンに沿って平均的なプル配布を有効にします。

Pull Distribution

[Average Pull] が無効な場合に、チェーンに沿ったプル配布の重みを手動で制御します。数値が小さいとエフェクタが優先され、数値が大きいとルートが優先されます。

Reach Step Alpha

終了エフェクタをターゲットに向けて移動し、変位を制限します。

Enable Twist Correction

チェーンに沿ったボーンの向きを比較して、ソルバ チェーンに沿って捩じり修正を有効にします。

End Bone Forward Axis

[Enable Twist Correction] が有効な場合に優先する軸を指定します。

フルボディ IK

フルボディ IK (FBIK) は、ボーン制限、剛性、望ましい角度をサポートする、フル機能で複数目標の IK ソルバです。このソルバは、複数の目標があり、それぞれの目標がボディ全体に自然な影響を与える大規模な IK システムを作成する場合に便利です。

セットアップ

フルボディ IK が機能するためには、1 つのルート ボーンと 1 つ以上の IK 目標がつながれている必要があります。ただし、手足 IK とは異なり、複数の目標を追加して、スケルトンが複数の位置に同時に到達するようにできます。

full body ik multiple goals

使用方法

FBIK は、ソルバによって影響を受けるボーンに対して設定を作成できるという点で、他のソルバと異なります。そうすることで、FBIK チェーン内の特定のボーンの動きをさらに調整することができます。

ボーン設定を作成するには、フルボディ IK ソルバ を選択してから、設定を作成する ボーン を選択して [Add Settings to Selected Bone (選択ボーンに設定を追加)] を選択します。

full body ik bone settings

[階層] でボーン設定を選択すると、[Details] パネルに以下の追加設定が表示されます。

full body ik bone settings

ボーン設定

説明

Stiffness

Rotation Stiffness および Position Stiffness プロパティを使用して、IK チェーン内のボーンが目標およびエフェクターの影響をどの程度受けることができるかを制御します。これらのプロパティを使用して、骨盤ボーンがコントロールの動きの影響を受ける度合いを変更します。値を「0」に設定すると完全に自由に動くことができ、「1」に設定するとボーンの動きが完全にロックされます。

このヒューマノイドの例では、骨盤ボーンが FBIK チェーンのルート ボーンとして指定されていますが、そのベース状態では回転が激し過ぎます。Stiffness プロパティの値を大きくすると、その問題が解消されます。

fbik stiffness

Limits

Limits は、IK チェーンに沿ったボーン軸の回転の範囲を制限するため、または完全にロックするために使用できます。各軸を次のように設定できます。

  • Free (自由) - ボーンを自由に動かすことができます。

  • Limited (限定的) - 指定された範囲内のみで動かすことができます。これが選択した場合は、最小値と最大値 の各プロパティを使用して動きの範囲を指定します。

  • Locked (ロック) - その軸に沿った動きを無効にします。

Limits を使用すると、関節の不自然な動きを補正できます。次の制限を使用して、足首の不自然な回転の問題を補正できます。[Min Z (最小 Z)] を「-50」に、[Max Z (最大 Z)] を「40」に、Z 軸を [Limited] に設定します。

fbik limits

Preferred Angles

Preferred Angles を使用して、特定の軸に沿ったジョイント回転を優先順位付けしてエフェクタに到達するようにできます。場合によっては、これらを使用してジョイント回転での剛体の問題を解決できます。[Use Preferred Angles (望ましい角度を使用)] を有効にすると、回転で Preferred Angles が参照されるようになります。

Preferred Angle プロパティに指定する値は、キャラクターのタイプとそのジョイント構造に応じて異なります。この例では、マネキンの膝は Z 軸 に沿って大きく曲がる必要があるので、Z プロパティの値を増やします。

preferred angles

設定

フルボディ IK ソルバを選択すると、[Details] パネルに以下のプロパティが表示されます。

fbik settings

名称

説明

Iterations

この値を大きくすると、エフェクタがそれぞれの目標位置に収束されるようになりますが、FBIK チェーンの CPU コストが増大します。剛性回転制限 を追加することや、質量乗数 を増加することで収束率に影響が及ぶため、この値をさらに調整しなければならない場合があります。

Mass Multiplier

これは、ボーンが回転と平行移動にどれだけ抵抗するかに影響を与えるグローバルな値です。一般的な値は 0.010.0 の範囲です。0.0 では抵抗がまったくなく、10.0 では抵抗がきわめて大きくなります。この値を増やすには、収束を実現するために イテレーション も増やす必要があります。

質量乗数を増やすと、FBIK内の深刻な収束の問題を解決できます。これは、より大きな文字で最も一般的に発生します。

mass multiplier twitching fix

Min Mass Multiplier

ソルバの結果が安定していれば、この値はできる限り小さくしておきます。この値を小さくすると、チェーンの収束が向上します。

Allow Stretch

これを有効にすると、IK チェーンに沿ったボーンがエフェクタに到達するように平行移動します。Position Stiffness の値はこの結果に影響を及ぼし、値が大きいほど伸縮は少なくなります。

Root Behavior

ルート ボーンの平行移動動作を制御します。以下の選択肢から選択できます。

  • Pre Pull (事前プル) - 目標の動きの平均によってルートの平行移動を制限します。これは、より適切な収束を達成してすべての目標に到達するのに役立ちます。

  • Pin to Input (入力に固定) - ルートの平行移動および回転をロックします。これを選択すると、ルート ボーンに適用されているすべてのボーン設定が取り消されます。

  • Free (自由) - ボーンを自由に動けるようにするか、ボーン設定に従って動くようにします。この設定では、Pre Pull の場合と比べて、収束を達成するためにより多くのイテレーションを設定する必要があります。

Start Solve from Input Pose

有効であれば、現在の入力ポーズから開始されるように、ティックごとにソルバがリセットされます。無効であれば、アニメートされたポーズは無視され、ソルバは前回のソルブの結果から開始します。

目標設定

フルボディ IK ソルバに割り当てられている目標の下にある [Goal Setting (目標設定)] を選択すると、[Details] パネルにその目標向けの追加のプロパティが表示されるようになります。

fbik goal settings

名称

説明

Strength Alpha

このプロパティは、IK チェーンに対するこのエフェクタの影響度に影響を及ぼします。この値が小さいと、この IK 目標へのチェーンのプルが強くなくなり、結果として他の目標に優先度が移ります。

Pull Chain Alpha

この値を 0.0 より大きく設定して有効にすると、FBIK ソルバによってスケルトンが、エフェクタから最も近接したスケルトン階層発散に伸びる複数の「チェーン」に分割されます。これを使用すると、まばらなボーン チェーンの結果を改善できますが、より複雑な拘束されたボーン チェーンの結果は望ましくありません。

Pin Rotation

エフェクタ トランスフォームの回転 (1.0) と入力ボーンの回転 (0.0) の間にエフェクタ ボーンの回転をブレンドします。

ポール ソルバ

ポール ソルバは、中央のジョイントを IK 目標 (肘や膝など) の方に向けるために使用される ポール ベクター コントロールを、単一のボーン チェーンに対して提供します。このソルバは通常、他のソルバ (手足 IK など) と組み合わせて使用します。

セットアップ

ポール ソルバは、ルート ボーンと終了ボーンの両方を指定する必要があるという点で、他のソルバと異なります。そうするには、ルート ボーンと終了ボーンをそれぞれ右クリックして、[Set Root Bone on Selected Solver (選択されているソルバにルート ボーンを設定)]、[Set End Bone on Selected Solver (選択されているソルバに終了ボーンを設定)] を選択します。この例では、上腕がルート ボーンとして設定され、手が終了ボーンとして設定されています。

pole solver

IK 目標も指定されている必要があり、それがポール ベクターとして機能します。ほとんどの場合、ルート ボーンの最初の子ボーンに対して IK 目標を作成します。

たとえば、ボーン 3 つの単純なチェーンでは、IK 目標はルート ボーンの最初の子ボーンに作成します。そうすると、それが中央のジョイントに配置されます。

pole solver three bones

もっと長いチェーンでは、最初の子ボーンが中央のジョイントではないので、ルート ボーンにより近い子ボーンに IK 目標を配置します。

pole solver five bones

ルート ボーン、終了ボーン、目標を指定したら、IK 目標を操作してポール ソルバをプレビューすることができます。

pole solver

使用方法

ほとんどの場合、ポール ソルバを別のソルバと組み合わせて、ポール ソルバを最後に実行します。この例では、手足 IK ソルバと組み合わされています。

pole solver with other solver

Set Transform

Set Transform は、目標に一致するようにボーンを平行移動および回転させます。このソルバは単一のボーンとそのすべての子を平行移動および回転させるだけなので、IK システムは関与していません。ほとんどの場合、このソルバはもっと複雑な IK エフェクトを達成するために、他のソルバと組み合わされます。

セットアップ

このソルバには、1 つの IK 目標につながれている必要があり、それがトランスフォーム ポイントとして使用されます。

set transform solver

使用方法

通常は、このソルバを他のソルバと組み合わせて、Set Transform を最初に実行します。この例では、臀部の Set Transform が足の 手足 IK と組み合わされています。

set transform solver multiple

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル