Choose your operating system:
Windows
macOS
Linux
CCDIK (Cyclic Coordinate Descent Inverse Kinematics) スケルタル コントロール ノードは軽量の IK ソルバ (FABRIK と同様) で一般にボーンのチェーンを動かすために使用されます。 しかし FABRIK と異なり CCDIK では角設定コンストレイントを定義する機能があり、ソルブ中にボーンの回転に制限を加える場合に便利です。
CCDIK ノードは次に示すようにプロシージャル アニメーションを動かすために使用できます。
前のビデオでは、CCDIK ノードのプロパティの [Solver (ソルバ)] セクションを使用して、キャラクタの [Root Bone (ルート ボーン)] を左肩に設定します。 次に [Tip Bone (チップ ボーン)] をキャラクタの人さし指の先端に設定します。 Effector Location (エフェクタ位置) を調整するとき、定義した Rotation Limit Per Joints 値を IK ソルバが受け取り、チェーンの各ボーンが従います。 これらの角度制限によりボーンがありえない回転をしないようになります。(ボーン単位での) 値の調整は期待する結果を達成するために必要になります。
入力ピンと出力ピン
次に CCDIK ノードで利用可能な 入力 ピンと 出力 ピンを示します。
ピン タイプ |
説明 |
|
---|---|---|
入力ピン |
||
Effector Location (エフェクタ位置) |
割り当てられたチップ ボーンのターゲット位置の座標 (Effector Location Space が ボーン に設定されている場合)。 ターゲット位置として使用するターゲット ボーンからのオフセットです。 |
|
Component Pose (コンポーネント ポーズ) |
トランスフォームさせる入力ポーズです。 |
|
Alpha (アルファ) |
スケルタル制御で適用されるトランスフォームの重み付けを決定するためのアルファ値として使用する 0.0 ~ 1.0 の浮動小数点値です。 値 0.0 は入力ポーズに最大限の重み付けをし、値 1.0 は制御の計算をしたトランスフォームに対し最大限の重み付けをします。 |
|
出力ピン |
||
Component Pose (コンポーネント ポーズ) |
トランスフォーム適用後の最終ポーズです。 |
ノード プロパティ
CCDIK ノードを使用するときに [Details (詳細)] パネルで利用できるプロパティを次に示します。
オプション |
説明 |
|
---|---|---|
Effector Location (エフェクタ位置) |
||
(As pin) Effector Location |
ノードでこのプロパティをピンとして表示するかどうかを指定します。 |
|
Effector Location Space (エフェクタ位置空間) |
ボーンの位置を設定するための空間座標系 (World Space (ワールド空間)、Component Space (コンポーネント空間)、Parent Bone Space (親ボーン空間)、Bone Space (ボーン空間)) です。 |
|
Effector Target (エフェクタ ターゲット) |
Effector Transform Space がボーンの場合、使用するターゲット ボーンです。 |
|
Solver (ソルバ) |
||
Tip Bone (チップ ボーン) |
チェーンでチップ ボーン (最終ボーン) に指定されているボーンです。 |
|
Root Bone (ルート ボーン) |
チェーンでルート ボーン (初期ボーン) に指定されているボーンです。 |
|
Precision (精度) |
EffectorLocation からの最終先端位置デルタの許容値です。 |
|
Max Iterations (最大イテレーション) |
許容されるイテレーションの最大回数 (パフォーマンスを制御するために使用) です。 |
|
Start from Tail (テールから開始) |
ジョイントの回転をデバッグするための軸を描画するかどうかを指定します。 |
|
Enable Rotation Limit (回転の制限の有効化) |
EffectorLocation からの最終先端位置デルタの許容値です。 |
|
Rotation Limit Per Joints (ジョイントごとの回転の制限) |
ボーン単位の対称的な回転制限です。 インデックス 0 は ルート ボーン に一致し、最大インデックスは **チップ ボーン**に一致します。 |
|
Preformance (パフォーマンス) |
||
LOD Threshold (LOD しきい値) |
このノードで実行が許容される最大詳細度 (LOD) です。 |
|
Alpha (アルファ) |
||
Alpha Input Type (アルファ入力タイプ) |
アルファ入力タイプ (Float Value (浮動小数値)、Boolean Value、Anim Curve Value) を定義します。 |
|
(As pin) |
有効の場合、ノードで Alpha (アルファ) プロパティをピンとして表示します。 無効の場合、ピンとしての表示がなくなります。 |
例: ボタンの押下
次のビデオでは、CCDIK ノードとブループリントを使用してキャラクタが壁にあるボタンを押します。
次に示すアニメーション ブループリントの AnimGraph で、レベルにあるボタンの位置から駆動されるようにエフェクタ位置が設定された CCDIK ノードを使用します。 プレイヤーがボタンの影響範囲に入り、対応するキーを押すと、CCDIK ノードを使用するポーズとブレンドします。これによりキャラクタがエフェクタ位置に手を伸ばします (ボタンを押します)。
クリックして拡大
次に示すとおり、ボーン チェーンで clavicle_l (左肩) を [Root Bone (ルート ボーン)]、index_03_l (左手の人さし指の先端) を [Tip Bone (チップ ボーン)] に割り当てます。 さらに [Rotation Limit Per Joints (ジョイントごとの回転の制限)] セクションを使用して、各ボーンに適用する回転の制限を定義します。