フル ボディ IK

モジュール説明

このセクションでは、フル ボディ IK ソルバの実行に使用する関数について説明します。

キャラクタにフル ボディ IK を使用するには、キャラクタを定義する HIKCharacter オブジェクトを作成しておく必要があります。キャラクタに HIKCharacterState を作成し、ゲーム内のキャラクタの現在のポーズに一致する HIKCharacterState の各ノードの変換行列を設定します。キャラクタのボディの IK ゴール ポイント、IK ソルバが IK ゴール ポイントのバランスをどのように取るかを制御するコンストレイントの値(Reach Translation、Reach Rotation、Pull、および Resist)、および IK ソルバが実行するソルバ ステップを定義する HIKEffectorSetState を作成する必要があります。最後に、ソルバにオプションの設定パラメータ セットを定義する HIKPropertySetState を作成する必要があります。次に、これらのオブジェクトのすべてを HIKSolveForEffectorSet() 関数に渡して、計算を実行する必要があります。 ソルバは、渡した先の同じ HIKCharacterState にその結果を保存します。

モジュール

 Low-LoD Full-Body IK
 このページでは、LOD の低いキャラクタへのフル ボディ IK ソルバの実行に使用する関数の詳細について説明します。
 

関数

void HIKSolveForEffectorSet (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacterHIKEffectorSetState pEffectorSetState および最初の HIKCharacterState pCharacterState を使用して計算し、結果を pCharacterState に保存します。表示...
 
void HIKSolveForEffectorSetArmsAndLegs (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter の腕、脚、および肩の IK ソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetBegin (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter の IK ソルバを初期化します。表示...
 
void HIKSolveForEffectorSetBodyPull (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter の引き寄せソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetFingersAndToes (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter の指および足指の IK ソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetFloorContact (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter のフロア ソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetFloorContactApprox (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter のフロア コンタクト近似ソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetHeadAndNeck (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter の頭と首の IK ソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetHipsTranslation (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter の特殊なヒップのトランスレーションソルバを呼び出します。表示...
 
void HIKSolveForEffectorSetModifiers (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter に Mirror モディファイヤおよび Lock モディファイヤを呼び出します。表示...
 
void HIKSolveForEffectorSetRollExtraction (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 キャラクタ pCharacter のロール抽出ソルバを呼び出します。表示...
 

関数のドキュメント

void HIKSolveForEffectorSet ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacterHIKEffectorSetState pEffectorSetState および最初の HIKCharacterState pCharacterState を使用して計算し、結果を pCharacterState に保存します。

HIKSolveForEffectorSet() 関数は次の関数を順番に呼び出します。

HIKSetIKSolvingStep() 関数を呼び出し、ソルバのさまざまな部分を有効化または無効化して、HIKEffectorSetState pEffectorSetState でソルビング ステップを設定できます。

同じ HIKEffectorSetState をこの関数への複数の呼び出しで再使用し、変更が必要なエフェクタのみの位置、回転、および IK コンストレイントを変更できます。

0 より大きい値の Reach Translation または Reach Rotation の値を持つエフェクタのみが考慮されます。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
例:
datadescriptionscattersqt.h および datadescriptiontqs.h
void HIKSolveForEffectorSetArmsAndLegs ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter の腕、脚、および肩の IK ソルバを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetBegin ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter の IK ソルバを初期化します。

グローバル HIKSolveForEffectorSet() 関数を使用する場合、各 IK ソルバを HIKSolveForEffectorSetBegin() への呼び出しで開始する必要があります。 この後で、次のリストから 1 つ以上の関数を呼び出すことができます。

パラメータ:
pCharacter準備対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetBodyPull ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter の引き寄せソルバを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetFingersAndToes ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter の指および足指の IK ソルバを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetFloorContact ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter のフロア ソルバを呼び出します。

このソルバは、手首、足首、指、および足指を床の位置より上に移動します。フロア コンタクトはプロパティの状態 pPropertyState で有効にする必要があります。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetFloorContactApprox ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter のフロア コンタクト近似ソルバを呼び出します。

このソルバは、フロア コンタクトが HIKPropertySetState pPropertyState で有効にされている場合、手首および足首を床の位置より上の近似位置に移動します。

足と手が床より下に引き寄せされないように、この関数は引き寄せソルバより前に呼び出す必要があります。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetHeadAndNeck ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter の頭と首の IK ソルバを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetHipsTranslation ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter の特殊なヒップのトランスレーションソルバを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetModifiers ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter に Mirror モディファイヤおよび Lock モディファイヤを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。
void HIKSolveForEffectorSetRollExtraction ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState,
HIKEffectorSetState pEffectorSetState,
const HIKPropertySetState pPropertyState 
)

キャラクタ pCharacter のロール抽出ソルバを呼び出します。

パラメータ:
pCharacter計算対象のキャラクタ
pEffectorSetStateHIKEffectorSetState: IK ゴール ポイントと IK コンストレイント値を含みます。
[in,out]pCharacterStateHIKCharacterState: キャラクタの最初の FK ポーズを含み、これは IK ソリューションに影響を与える場合があります。
pPropertyStateHIKPropertySetState: キャラクタのすべてのキャラクタ プロパティを含みます。