制限(Degrees of Freedom)

モジュール説明

このセクションでは、キャラクタの制限(Degrees of Freedom)を設定する関数について説明します。

参照:
Degrees of Freedom

列挙

enum  HIKLimitActiveMask {
  HIKActiveMinX = 1 << 0, HIKActiveMinY = 1 << 1, HIKActiveMinZ = 1 << 2, HIKActiveMaxX = 1 << 3,
  HIKActiveMaxY = 1 << 4, HIKActiveMaxZ = 1 << 5
}
 ノードで有効にできる制限のタイプを一覧表示します。HIKSetMinXYZRotationfv()HIKSetMaxXYZRotationfv()、および HIKSetLimitsfv() を参照してください。表示...
 
enum  HIKRotationOrder {
  HIKOrderEulerXYZ = 0, HIKOrderEulerXYX, HIKOrderEulerXZY, HIKOrderEulerXZX,
  HIKOrderEulerYZX, HIKOrderEulerYZY, HIKOrderEulerYXZ, HIKOrderEulerYXY,
  HIKOrderEulerZXY, HIKOrderEulerZXZ, HIKOrderEulerZYX, HIKOrderEulerZYZ,
  HIKOrderSphericXYZ
}
 HIKSetRotationOrder() 関数で設定した値について可能な回転順序を一覧表示します。表示...
 

関数

void HIKGetLimitsdv (const HIKCharacter *pCharacter, int pNodeId, double pMin[3], double pMax[3], double pPreQ[4], double pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
 ノード pNodeId について設定した制限を取得します。表示...
 
void HIKGetLimitsfv (const HIKCharacter *pCharacter, int pNodeId, float pMin[3], float pMax[3], float pPreQ[4], float pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
 ノード pNodeId について設定した制限を取得します。表示...
 
void HIKSetLimitsdv (HIKCharacter *pCharacter, int pNodeId, const double pMin[3], const double pMax[3], const double pPreQ[4], const double pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
 ノード pNodeId に制限を設定します。表示...
 
void HIKSetLimitsfv (HIKCharacter *pCharacter, int pNodeId, const float pMin[3], const float pMax[3], const float pPreQ[4], const float pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
 ノード pNodeId に制限を設定します。表示...
 
void HIKSetMaxXYZRotationdv (HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask)
 ノード pNodeId に最大回転を設定します。表示...
 
void HIKSetMaxXYZRotationfv (HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask)
 ノード pNodeId に最大回転を設定します。表示...
 
void HIKSetMinXYZRotationdv (HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask)
 ノード pNodeId の最小回転を設定します。表示...
 
void HIKSetMinXYZRotationfv (HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask)
 ノード pNodeId の最小回転を設定します。表示...
 
void HIKSetPostQdv (HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4])
 pPostQ ノード pNodeId に Post Rotation を適用します。表示...
 
void HIKSetPostQfv (HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4])
 pPostQ ノード pNodeId に Post Rotation を適用します。表示...
 
void HIKSetPreQdv (HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4])
 Pre Rotation pPreQ をノード pNodeId に適用します。表示...
 
void HIKSetPreQfv (HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4])
 Pre Rotation pPreQ をノード pNodeId に適用します。表示...
 
void HIKSetRotationOrder (HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder)
 ノード pNodeId に設定した制限で指定した軸の順序を設定します。表示...
 
void HIKSetTranslationLimitsd (HIKCharacter *pCharacter, int pNodeId, double pMin, double pMax, bool pActive)
 ノード pNodeId のトランスレーション制限を設定します。表示...
 
void HIKSetTranslationLimitsf (HIKCharacter *pCharacter, int pNodeId, float pMin, float pMax, bool pActive)
 ノード pNodeId のトランスレーション制限を設定します。表示...
 

列挙型のドキュメント

ノードで有効にできる制限のタイプを一覧表示します。HIKSetMinXYZRotationfv()HIKSetMaxXYZRotationfv()、および HIKSetLimitsfv() を参照してください。

Enumerator
HIKActiveMinX 

X 軸で最小制限値を有効にします。

HIKActiveMinY 

Y 軸で最小制限値を有効にします。

HIKActiveMinZ 

Z 軸で最小制限値を有効にします。

HIKActiveMaxX 

X 軸で最大制限値を有効にします。

HIKActiveMaxY 

Y 軸で最大制限値を有効にします。

HIKActiveMaxZ 

Z 軸で最大制限値を有効にします。

HIKSetRotationOrder() 関数で設定する値について可能な回転順序を一覧表示します。

Enumerator
HIKOrderEulerXYZ 

オイラー x、y、z

HIKOrderEulerXYX 

オイラー x、y、x

HIKOrderEulerXZY 

オイラー x、z、y

HIKOrderEulerXZX 

オイラー x、z、x

HIKOrderEulerYZX 

オイラー y、z、x

HIKOrderEulerYZY 

オイラー y、z、y

HIKOrderEulerYXZ 

オイラー y、x、z

HIKOrderEulerYXY 

オイラー y、x、y

HIKOrderEulerZXY 

オイラー z、x、y

HIKOrderEulerZXZ 

オイラー z、x、z

HIKOrderEulerZYX 

オイラー z、y、x

HIKOrderEulerZYZ 

オイラー z、y、z

HIKOrderSphericXYZ 

球面 x、y、z

関数のドキュメント

void HIKGetLimitsdv ( const HIKCharacter pCharacter,
int  pNodeId,
double  pMin[3],
double  pMax[3],
double  pPreQ[4],
double  pPostQ[4],
int &  pActiveMask,
eHIKRotationOrder pRotationOrder 
)

ノード pNodeId について設定した制限を取得します。

パラメータ:
pCharacter取得するキャラクタ
pNodeId取得するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMinジョイントによって各軸の周りに設定可能なラジアンで示した最小回転。この配列に保存される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pMaxジョイントによって各軸の周りに設定可能なラジアンで示した最大回転。この配列に保存される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pPreQPre Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかのテスト前に、HumanIK がこのノードの回転に適用するクォータニオン。
pPostQPost Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかをテストした後に、HumanIK がこのノードの回転に適用するクォータニオン。
pActiveMask有効化される軸を決定するビット マスク。 参照先: HIKLimitActiveMask 列挙を参照してください。
pRotationOrderHIKRotationOrder 列挙の要素で、pMin および pMax パラメータ内でリスト化されている X、Y および Z 軸の順序を示します。
void HIKGetLimitsfv ( const HIKCharacter pCharacter,
int  pNodeId,
float  pMin[3],
float  pMax[3],
float  pPreQ[4],
float  pPostQ[4],
int &  pActiveMask,
eHIKRotationOrder pRotationOrder 
)

ノード pNodeId について設定した制限を取得します。

パラメータ:
pCharacter取得するキャラクタ
pNodeId取得するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMinジョイントによって各軸の周りに設定可能なラジアンで示した最小回転。この配列に保存される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pMaxジョイントによって各軸の周りに設定可能なラジアンで示した最大回転。この配列に保存される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pPreQPre Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかのテスト前に、HumanIK がこのノードの回転に適用するクォータニオン。
pPostQPost Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかをテストした後に、HumanIK がこのノードの回転に適用するクォータニオン。
pActiveMask有効化される軸を決定するビット マスク。 参照先: HIKLimitActiveMask 列挙を参照してください。
pRotationOrderHIKRotationOrder 列挙の要素で、pMin および pMax パラメータ内でリスト化されている X、Y および Z 軸の順序を示します。
void HIKSetLimitsdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pMin[3],
const double  pMax[3],
const double  pPreQ[4],
const double  pPostQ[4],
int  pActiveMask,
eHIKRotationOrder  pRotationOrder 
)

ノード pNodeId に制限を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMinジョイントによって各軸の周りに設定可能な最小回転をラジアンで指定します。この配列で表される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pMaxジョイントによって各軸の周りに設定可能な最大回転をラジアンで指定します。この配列で表される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pPreQPre Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかのテスト前に、HumanIK がこのノードの回転に適用するクォータニオン。
pPostQPost Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかをテストした後に、HumanIK がこのノードの回転に適用するクォータニオン。
pActiveMask有効化される軸を決定するビット マスク。このマスクには、HIKLimitActiveMask 列挙の 1 つ以上の要素が含まれる可能性があります。| 演算子(bitwise OR)を使用して複数の値を結合できます。
pRotationOrderHIKRotationOrder 列挙の要素で、pMin および pMax パラメータ内でリスト化されている X、Y および Z 軸の順序を示します。この回転順序によって、HumanIK がオイラー回転を計算する順序も決定します。 この順序を変更すると、ジンバル ロックの問題を回避または軽減できます。

HumanIK は常にこの回転順序の最初の軸をノードのロール軸として解釈します。この軸は、ジョイントにアタッチされたボーンと揃っている必要があり、中心に沿ってボーンを回転したりツイストする方法を制御します。
void HIKSetLimitsfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pMin[3],
const float  pMax[3],
const float  pPreQ[4],
const float  pPostQ[4],
int  pActiveMask,
eHIKRotationOrder  pRotationOrder 
)

ノード pNodeId に制限を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMinジョイントによって各軸の周りに設定可能な最小回転をラジアンで指定します。この配列で表される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pMaxジョイントによって各軸の周りに設定可能な最大回転をラジアンで指定します。この配列で表される X、Y、および Z 軸の順序は pRotationOrder パラメータに設定された値によって異なります。
pPreQPre Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかのテスト前に、HumanIK がこのノードの回転に適用するクォータニオン。
pPostQPost Rotation オフセットを定義し、ノードの方向が最小または最大制限値内かどうかをテストした後に、HumanIK がこのノードの回転に適用するクォータニオン。
pActiveMask有効化される軸を決定するビット マスク。このマスクには、HIKLimitActiveMask 列挙の 1 つ以上の要素が含まれる可能性があります。| 演算子(bitwise OR)を使用して複数の値を結合できます。
pRotationOrderHIKRotationOrder 列挙の要素で、pMin および pMax パラメータ内でリスト化されている X、Y および Z 軸の順序を示します。この回転順序によって、HumanIK がオイラー回転を計算する順序も決定します。 この順序を変更すると、ジンバル ロックの問題を回避または軽減できます。

HumanIK は常にこの回転順序の最初の軸をノードのロール軸として解釈します。この軸は、ジョイントにアタッチされたボーンと揃っている必要があり、中心に沿ってボーンを回転したりツイストする方法を制御します。
void HIKSetMaxXYZRotationdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pMax[3],
int  pMaxActiveMask 
)

ノード pNodeId に最大回転を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId最大回転を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMaxこのノードで可能な最大回転。これはラジアンで示されたベクトルです。
pMaxActiveMask有効化される軸を決定するビット マスク。参照先: HIKLimitActiveMask 列挙を参照してください。bitwise "OR" 演算子を使用して複数の値を結合できます。
void HIKSetMaxXYZRotationfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pMax[3],
int  pMaxActiveMask 
)

ノード pNodeId に最大回転を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId最大回転を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMaxこのノードで可能な最大回転。これはラジアンで示されたベクトルです。
pMaxActiveMask有効化される軸を決定するビット マスク。参照先: HIKLimitActiveMask 列挙を参照してください。bitwise "OR" 演算子を使用して複数の値を結合できます。
void HIKSetMinXYZRotationdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pMin[3],
int  pMinActiveMask 
)

ノード pNodeId の最小回転を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId最小回転を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMinこのノードで可能な最小回転。これはラジアンで示されたベクトルです。
pMinActiveMask有効化される軸を決定するビット マスク。参照先: HIKLimitActiveMask 列挙を参照してください。bitwise "OR" 演算子を使用して複数の値を結合できます。
void HIKSetMinXYZRotationfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pMin[3],
int  pMinActiveMask 
)

ノード pNodeId の最小回転を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId最小回転を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pMinこのノードで可能な最小回転。これはラジアンで示されたベクトルです。
pMinActiveMask有効化される軸を決定するビット マスク。参照先: HIKLimitActiveMask 列挙を参照してください。bitwise "OR" 演算子を使用して複数の値を結合できます。
void HIKSetPostQdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pPostQ[4] 
)

pPostQ ノード pNodeId に Post Rotation を適用します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeIdPost Rotation を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pPostQ適用する Post Rotation。これは正規化が必要なクォータニオンです。
void HIKSetPostQfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pPostQ[4] 
)

pPostQ ノード pNodeId に Post Rotation を適用します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeIdPost Rotation を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pPostQ適用する Post Rotation。これは正規化が必要なクォータニオンです。
void HIKSetPreQdv ( HIKCharacter pCharacter,
int  pNodeId,
const double  pPreQ[4] 
)

Pre Rotation pPreQ をノード pNodeId に適用します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeIdPre Rotation を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pPreQ適用する Pre Rotation。これは正規化が必要なクォータニオンです。
void HIKSetPreQfv ( HIKCharacter pCharacter,
int  pNodeId,
const float  pPreQ[4] 
)

Pre Rotation pPreQ をノード pNodeId に適用します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeIdPre Rotation を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pPreQ適用する Pre Rotation。これは正規化が必要なクォータニオンです。
void HIKSetRotationOrder ( HIKCharacter pCharacter,
int  pNodeId,
eHIKRotationOrder  pRotationOrder 
)

ノード pNodeId に設定した制限で指定した軸の順序を設定します。

パラメータ:
pCharacter設定するキャラクタ。
pNodeId回転順序を設定するノードの固有の ID。可能な値については、HIKNodeId 列挙を参照してください。
pRotationOrder設定する回転順序。可能な値については、HIKRotationOrder 列挙を参照してください。
void HIKSetTranslationLimitsd ( HIKCharacter pCharacter,
int  pNodeId,
double  pMin,
double  pMax,
bool  pActive 
)

ノード pNodeId のトランスレーション制限を設定します。

パラメータ:
pCharacterトランスレーション制限を設定するキャラクタです。
pNodeId設定するノードの固有の ID です。可能な値については、HIKNodeId 列挙を参照してください。
pMinジョイントを押し潰すことができる最小長です。
pMaxジョイントをストレッチすることができる最大長です。
pActiveトランスレーション制限がこのジョイントで有効になっているかどうかを示します。
void HIKSetTranslationLimitsf ( HIKCharacter pCharacter,
int  pNodeId,
float  pMin,
float  pMax,
bool  pActive 
)

ノード pNodeId のトランスレーション制限を設定します。

パラメータ:
pCharacterトランスレーション制限を設定するキャラクタです。
pNodeId設定するノードの固有の ID です。可能な値については、HIKNodeId 列挙を参照してください。
pMinジョイントを押し潰すことができる最小長です。
pMaxジョイントをストレッチすることができる最大長です。
pActiveトランスレーション制限がこのジョイントで有効になっているかどうかを示します。