キャラクタ セットアップ

モジュール説明

このセクションでは、HIKCharacter を設定するのに使用する関数について説明します。

モジュール

 Limits (Degrees of Freedom)
 このセクションでは、キャラクタの制限(Degrees of Freedom)を設定する関数について説明します。
 
 Quadrupeds
 このセクションでは、Quadruped のキャラクタで使用するユーティリティ関数について説明します。
 
 Floor Contact
 このセクションでは、キャラクタのフロア コンタクトの設定に使用する関数について説明します。
 
 Character Properties
 このセクションでは、HIKPropertySetState 内のキャラクタ プロパティのモードと値の設定および取得用に提供されている関数について説明します。
 

列挙

enum  HIKMiddleJoint { HIKLeftKnee = 0, HIKRightKnee, HIKLeftElbow, HIKRightElbow }
 HIKInverseJoint() 関数を使用して反転できる関節を一覧表示します。表示...
 

関数

bool HIKCharacterizeGeometry (HIKCharacter *pCharacter)
 ソルビング用のキャラクタ pCharacter を設定および初期化します。表示...
 
void HIKGetCharacterizeNodeStatefv (const HIKCharacter *pCharacter, int pNodeId, float pXForm[16])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId の変換行列を取得します。表示...
 
void HIKGetCharacterizeNodeStateTQSdv (const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを取得します。表示...
 
void HIKGetCharacterizeNodeStateTQSfv (const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを取得します。表示...
 
void HIKGetDefaultState (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
 キャラクタ pCharacter のデフォルトの T スタンスを取得し、HIKCharacterState pCharacterState に保存します。 この関数は常に指定したキャラクタの同じスタンスを返します。計算の実行前後でデフォルトのスタンスに違いはありません。表示...
 
int HIKGetNodeUse (const HIKCharacter *pCharacter, int pNodeId)
 ノード pNodeIdHIKCharacterpCharacter でのキャラクタライゼーション フラグ セットを取得します。表示...
 
void HIKGetParentOffsetdv (const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4])
 ノード pNodeId のペアレント オフセット セットを取得します。表示...
 
void HIKGetParentOffsetfv (const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4])
 ノード pNodeId のペアレント オフセット セットを取得します。表示...
 
void HIKGetRelaxPose (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
 キャラクタ pCharacter の基本的な着座ポーズを計算し、HIKCharacterState pCharacterState に保存します。表示...
 
void HIKInverseJoint (HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse)
 膝や肘など、中間の関節が曲がる方向を反転します。表示...
 
int HIKIsJointInverted (const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint)
 中間の関節が反転されているかどうかを示します。表示...
 
void HIKSetCharacterizeNodeStatedv (HIKCharacter *pCharacter, int pNodeId, const double pXForm[16])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId の変換行列を設定します。表示...
 
void HIKSetCharacterizeNodeStatefv (HIKCharacter *pCharacter, int pNodeId, const float pXForm[16])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId の変換行列を設定します。表示...
 
void HIKSetCharacterizeNodeStateTQSdv (HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを設定します。表示...
 
void HIKSetCharacterizeNodeStateTQSfv (HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
 キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを設定します。表示...
 
void HIKSetParentOffsetdv (HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4])
 ノード pNodeId のペアレント オフセットを設定します。表示...
 
void HIKSetParentOffsetfv (HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4])
 ノード pNodeId のペアレント オフセットを設定します。表示...
 

列挙型のドキュメント

HIKInverseJoint() 関数を使用して反転できる関節を一覧表示します。

Enumerator
HIKLeftKnee 

左膝を表します(HIKNodeId::LeftKneeNodeId)。

HIKRightKnee 

右膝を表します(HIKNodeId::RightKneeNodeId)。

HIKLeftElbow 

左肘を表します(HIKNodeId::LeftElbowNodeId)。

HIKRightElbow 

右肘を表します(HIKNodeId::RightElbowNodeId)。

関数のドキュメント

bool HIKCharacterizeGeometry ( HIKCharacter pCharacter)

ソルビング用のキャラクタ pCharacter を設定および初期化します。

すべてのキャラクタのノードに対して HIKSetCharacterizeNodeStatefv() を呼び出した後にこの関数を呼び出します。 この関数は、デフォルトのスタンスを確定し、エンジンを調整します。

パラメータ:
pCharacter設定および初期化するキャラクタ。
備考:
キャラクタは T スタンスで立ち、Z 軸の正の方向を向き、左手は X 軸の正の方向に沿ったポイント、右手は X 軸の負の方向に沿ったポイントを指している必要があります。イメージについては概要を参照してください。キャラクタの制御に HumanIK ソルバを使用するには、キャラクタをこのポーズでキャラクタライズする必要があります。
戻り値:
false 指定された T スタンスにエラーがある場合は false
void HIKGetCharacterizeNodeStatefv ( const HIKCharacter pCharacter,
int  pNodeId,
float  pXForm[16] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId の変換行列を取得します。

パラメータ:
pCharacter取得するキャラクタ
pNodeId取得するノード可能な値については、HIKNodeId 列挙を参照してください。
pXFormグローバル スペースのデフォルトの T スタンスでのこのジョイントの変換行列
void HIKGetCharacterizeNodeStateTQSdv ( const HIKCharacter pCharacter,
int  pNodeId,
double  pT[4],
double  pQ[4],
double  pS[4] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを取得します。

パラメータ:
pCharacter取得するキャラクタ
pNodeId取得するノード可能な値については、HIKNodeId 列挙を参照してください。
pTグローバル スペースでのこのジョイントのデフォルトのスタンストランスレーション
pQクォータニオンとして表現された、グローバル スペースでのこのジョイントのデフォルトのスタンスの方向
pSグローバル スペースでのこのジョイントのデフォルトのスタンス スケール
void HIKGetCharacterizeNodeStateTQSfv ( const HIKCharacter pCharacter,
int  pNodeId,
float  pT[4],
float  pQ[4],
float  pS[4] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを取得します。

パラメータ:
pCharacter取得するキャラクタ
pNodeId取得するノード可能な値については、HIKNodeId 列挙を参照してください。
pTグローバル スペースでのこのジョイントのデフォルトのスタンストランスレーション
pQクォータニオンとして表現された、グローバル スペースでのこのジョイントのデフォルトのスタンスの方向
pSグローバル スペースでのこのジョイントのデフォルトのスタンス スケール
void HIKGetDefaultState ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState 
)

キャラクタ pCharacter のデフォルトの T スタンスを取得し、HIKCharacterState pCharacterState に保存します。 この関数は常に指定したキャラクタの同じスタンスを返します。計算の実行前後でデフォルトのスタンスに違いはありません。

パラメータ:
pCharacterデフォルトのスタンスを取得するキャラクタ
[out]pCharacterStateHIKCharacterState: デフォルトのスタンスを含みます。
int HIKGetNodeUse ( const HIKCharacter pCharacter,
int  pNodeId 
)

ノード pNodeIdHIKCharacterpCharacter でのキャラクタライゼーション フラグ セットを取得します。

パラメータ:
pCharacterキャラクタ
pNodeIdフラグを取得するノード ID。可能な値については、HIKNodeId 列挙を参照してください。
戻り値:
ノード pNodeIdHIKCharacterpCharacter 内でのステータスを示すビット マスク。 このビット マスクは、HIKNodeFlags 列挙のフラグで構成されます。
  • ノードがキャラクタによって使用される場合、HIKNodeUsed フラグは true になります。
  • ノードがペアレント オフセットの使用をサポートする場合、HIKNodeParentOffset フラグも true になります。
  • ノードが制限(Degrees of Freedom)をサポートする場合、HIKNodeLimits フラグも true になります。
  • ノードが使用されていない場合は、すべてのフラグが false になります。
void HIKGetParentOffsetdv ( const HIKCharacter pCharacter,
int  pNodeId,
double  pParentTOffset[4],
double  pParentQOffset[4],
double  pParentSOffset[4] 
)

ノード pNodeId のペアレント オフセット セットを取得します。

この関数は親ジョイントが HumanIK にとって未知で、ローカル スペースの変換または制限(DoF)を使用している場合のみ必要です。

パラメータ:
pCharacter取得するキャラクタ
pNodeIdペアレント オフセットを取得するノード。可能な値については、HIKNodeId 列挙を参照してください。
pParentTOffset親ノードのトランスレーションオフセット
pParentQOffsetクォータニオンとして表現された親ノードの回転オフセット
pParentSOffset親ノードのスケール オフセット
void HIKGetParentOffsetfv ( const HIKCharacter pCharacter,
int  pNodeId,
float  pParentTOffset[4],
float  pParentQOffset[4],
float  pParentSOffset[4] 
)

ノード pNodeId のペアレント オフセット セットを取得します。

この関数は親ジョイントが HumanIK にとって未知で、ローカル スペースの変換または制限(DoF)を使用している場合のみ必要です。

パラメータ:
pCharacter取得するキャラクタ
pNodeIdペアレント オフセットを取得するノード。可能な値については、HIKNodeId 列挙を参照してください。
pParentTOffset親ノードのトランスレーションオフセット
pParentQOffsetクォータニオンとして表現された親ノードの回転オフセット
pParentSOffset親ノードのスケール オフセット
void HIKGetRelaxPose ( const HIKCharacter pCharacter,
HIKCharacterState pCharacterState 
)

キャラクタ pCharacter の基本的な着座ポーズを計算し、HIKCharacterState pCharacterState に保存します。

パラメータ:
pCharacter着座ポーズを取得するキャラクタ
[out]pCharacterStateHIKCharacterState: デフォルトのスタンスを含みます。
void HIKInverseJoint ( HIKCharacter pCharacter,
eHIKMiddleJoint  pJoint,
int  pInverse 
)

膝や肘など、中間の関節が曲がる方向を反転します。

キャラクタのキャラクタライズをプログラムで処理する場合、この関数は HIKCharacterizeGeometry() への呼び出しでキャラクタのジオメトリが確定してからのみ呼び出せます。

パラメータ:
pCharacter設定するキャラクタ。
pJoint反転するジョイント。可能な値については、HIKMiddleJoint 列挙を参照してください。
pInverseジョイントの回転方向を指定します。0 = 正転、その他の任意の値 = 逆回転
int HIKIsJointInverted ( const HIKCharacter pCharacter,
eHIKMiddleJoint  pJoint 
)

中間の関節が反転されているかどうかを示します。

キャラクタのキャラクタライズをプログラムで処理する場合、この関数は HIKCharacterizeGeometry() への呼び出しでキャラクタのジオメトリが確定してからのみ呼び出せます。

パラメータ:
pCharacterジョイントの反転を取得するキャラクタ
pJoint反転状態を取得するジョイント。可能な値については、HIKMiddleJoint 列挙を参照してください。
戻り値:
0 = 正転、その他の任意の値 = 逆回転
void HIKSetCharacterizeNodeStatedv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pXForm[16] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId の変換行列を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pXFormグローバル スペースでのこのノード向けのデフォルトのスタンス行列(4x4 column major matrix)
void HIKSetCharacterizeNodeStatefv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pXForm[16] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId の変換行列を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pXFormグローバル スペースでのこのノード向けのデフォルトのスタンス行列(4x4 column major matrix)
void HIKSetCharacterizeNodeStateTQSdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pT[4],
const double  pQ[4],
const double  pS[4] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pTグローバル スペースでのこのジョイントのデフォルトのスタンストランスレーション
pQクォータニオンとして表現された、グローバル スペースでのこのジョイントのデフォルトのスタンスの方向
pSグローバル スペースでのこのジョイントのデフォルトのスタンス スケール
void HIKSetCharacterizeNodeStateTQSfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pT[4],
const float  pQ[4],
const float  pS[4] 
)

キャラクタがデフォルトの T スタンスで立っているときに、ノード pNodeId のトランスレーション、方向、およびスケールを設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pTグローバル スペースでのこのジョイントのデフォルトのスタンストランスレーション
pQクォータニオンとして表現された、グローバル スペースでのこのジョイントのデフォルトのスタンスの方向
pSグローバル スペースでのこのジョイントのデフォルトのスタンス スケール
void HIKSetParentOffsetdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pParentTOffset[4],
const double  pParentQOffset[4],
const double  pParentSOffset[4] 
)

ノード pNodeId のペアレント オフセットを設定します。

この関数は親ジョイントが HumanIK にとって未知で、ローカル スペースの変換または制限(DoF)を使用している場合のみ必要です。

パラメータ:
pCharacter設定するキャラクタ。
pNodeIdペアレント オフセットを設定するノード。可能な値については、HIKNodeId 列挙を参照してください。
pParentTOffsetジョイント チェーンで親のすぐ上の HumanIK ノードに相対する親ノードのトランスレーションオフセット
pParentQOffsetジョイント チェーンで親のすぐ上の HumanIK ノードに相対する、クォータニオンとして表現された親ノードの回転オフセットこの値は正規化する必要があります。このオフセットは次のように計算できます。
pParentQOffset = inverse(HIKParentGQ) * RealParentGQ
ここで、
  • HIKParentGQ は、スケルトン階層で未知の親ジョイントのすぐ上の HumanIK ジョイントの回転を含むクォータニオンで、グローバル スペースで表現されます。
  • RealParentGQ は、未知の親ジョイントの回転を含むクォータニオンで、グローバル スペースで表現されます。
pParentSOffsetジョイント チェーンで親のすぐ上の HumanIK ノードに相対する親ノードのスケール オフセット
void HIKSetParentOffsetfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pParentTOffset[4],
const float  pParentQOffset[4],
const float  pParentSOffset[4] 
)

ノード pNodeId のペアレント オフセットを設定します。

この関数は親ジョイントが HumanIK にとって未知で、ローカル スペースの変換または制限(DoF)を使用している場合のみ必要です。

パラメータ:
pCharacter設定するキャラクタ。
pNodeIdペアレント オフセットを設定するノード。可能な値については、HIKNodeId 列挙を参照してください。
pParentTOffsetジョイント チェーンで親のすぐ上の HumanIK ノードに相対する親ノードのトランスレーションオフセット
pParentQOffsetジョイント チェーンで親のすぐ上の HumanIK ノードに相対する、クォータニオンとして表現された親ノードの回転オフセットこの値は正規化する必要があります。このオフセットは次のように計算できます。
pParentQOffset = inverse(HIKParentGQ) * RealParentGQ
ここで、
  • HIKParentGQ は、スケルトン階層で未知の親ジョイントのすぐ上の HumanIK ジョイントの回転を含むクォータニオンで、グローバル スペースで表現されます。
  • RealParentGQ は、未知の親ジョイントの回転を含むクォータニオンで、グローバル スペースで表現されます。
pParentSOffsetジョイント チェーンで親のすぐ上の HumanIK ノードに相対する親ノードのスケール オフセット