CCDIK (Cyclic Coordinate Descent Inverse Kinematics) アニメーション ブループリント ノードは、一連のボーンを エフェクタ位置 (Effector Location) に駆動する軽量の IK ソルバです。FABRIK ノードと似ているものの、CCDIK には角度コンストレイントを定義する機能があり、影響を受けるボーンの回転に制限を加える場合に便利です。

次の画像では、AnimGraph で CCDIK ノードが選択されており、その エフェクタ位置 (Effector Location) はビューポート ウィンドウのデバッグ ムーブメント ツールによって操作されています。

Effector Location が変更されると、選択したボーン チェーン (赤色 のデバッグ ラインでハイライト表示) は、チップ ボーン を エフェクタの位置 に一致させるよう移動します。Effector Location に動的ベクター変数を使用して、回転コンストレイントを適用することで、このノードを使って スケルタル メッシュ に動的な調整を加え、ゲーム ワールド内でのキャラクターとオブジェクトのインタラクションの基礎を構築できます。
Alpha (アルファ) 値またはそのピンを使用すると、生成された出力ポーズにおける解決されたモーションの程度を制御できます。値が 1 の場合は生成された出力ポーズが完全に使用され、値が 0 の場合はソース ポーズが出力されます。
設定
このサンプル ワークフローでは、CCDIK ノードを使用してキャラクターの指を動的に調整し、ゲーム ワールド内で指でボタンを押すようにします。
CCDIK ノードは コンポーネント空間 内で機能するため、このノードをキャラクターのアニメーション ブループリント内に実装するには、空間の変換 を行う必要があります。
CCDIK ノードを アニメーション ブループリント に追加したら、AnimGraph でそのノードを選択してその [Details (詳細)] パネルを開きます。
[Details] パネルで、チェーンの末端のボーンとなる チップ ボーン と、ローカル ルート ボーンへの調整の基礎となる ルート ボーン を選択します。この例では、[Tip Bone] が人差し指 (index_03_l
) に、Root Bone が鎖骨 (clavical_l
) に設定されています。

Effector Location ベクター変数をレベル内で計算するために、Effector Location Space を World Space に設定します。

回転制限を有効にするには、Enable Rotation Limit プロパティをオンにして、Rotation Limit Per Joints プロパティ セクションを調整します。Index には、ローカル ルート ボーン から チップ ボーン の間の スケルトン に含まれるそれぞれのジョイントごとにデータが入力されます。これらの回転を調整して、不要なジオメトリのオーバーラップや、キャラクターのジョイントの過度な伸縮を回避できます。

CCDIK ノードにより、Effector Location の位置と一致するよう、チップ ボーン が ルート ボーン と回転のコンストレイントに従って調整され、これによってキャラクターはあらゆる角度や高さからボタンと動的にやり取りできるようになります。

プロパティのリファレンス

CCDIK ノードのプロパティについては以下で参照できます。
プロパティ | 説明 |
---|---|
Effector Location | このプロパティは、デフォルトで AnimGraph 内のノードにピンとして表示されます。このプロパティの値は、解決時に、選択した チップ ボーン を調整する先となるターゲット ポイントです。 |
Effector Location Space | Effector Location によって使用される参照の空間フレームです。 |
Effector Target | Effector Location Space が Bone に設定されている場合に、ターゲットとするボーンをこのプロパティで定義できます。 |
Tip Bone | Effector Location に合わせるために調整するボーンを スケルタル メッシュ から選択します。 |
Root Bone | チェーンを完結して、チェーンのモーションをローカル ルート ポイントに固定するためのボーンを スケルタル メッシュ から選択します。 |
Precision | Effector Location に一致させるための Tip Bone の調整に対する許容レベルを設定できます。デフォルトは 1 の値で、ほとんどのプロジェクトで最適に機能しますが、この値を増減して精度を調整することができます。 |
Max Iterations | このプロパティでは、ノードで実行可能な解決イテレーションの最大数を設定できます。値を高く設定するとパフォーマンスが下がりますが、より精度の高い値で計算が行われます。値を低く設定するとプロジェクトのパフォーマンスが上がりますが、精度はそれほど高くなりません。デフォルト値の 10 はほとんどのプロジェクトに適した値です。 |
Start from Tail | 有効にすると、チェーンのデバッグ描画が チップ ボーン から始まり、ルート ボーン で終了します。 |
Enable Rotation Limit | 有効にすると、Rotation Limit Per Joints プロパティの [Index] の値に基づいて、それぞれのジョイントの回転がノードによって制限されます。 |
Rotation Limit Per Joints | ここでは、チェーンの チップ ボーン と ルート ボーン との間にある各ジョイントの回転制限を定義できます。開始点の インデックス が チップ ボーン に直接接続されているジョイントに適用され、そこからチェーンに沿って、ルート ボーン に隣接するジョイントに到達するまでそれぞれのインデックスが適用されます。 |
ボタン ブループリントのリファレンス
次は、ボタン デモの作成に使用したボタン ブループリント、キャラクター ブループリント、キャラクターのアニメーション ブループリントのリファレンスです。



ボタン アクタ ブループリント | キャラクター ブループリント | キャラクター アニメーション ブループリント