#include <nnsys/g3d/anm.h>
typedef enum
{
NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE = 0x00000001,
NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO = 0x00000002,
NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO = 0x00000004,
NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE = 0x00000008,
NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE = 0x00000010,
NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC = 0x00000020
}
NNSG3dJntAnmResultFlag;
typedef struct NNSG3dJntAnmResult_
{
NNSG3dJntAnmResultFlag flag;
VecFx32 scale;
VecFx32 scaleEx0;
VecFx32 scaleEx1;
MtxFx33 rot;
VecFx32 trans;
}
NNSG3dJntAnmResult;
NNSG3dJntAnmResult構造体は、ジョイントの位置や向きやスケールの情報を保持しています。G3Dはこの構造体に格納された情報を使用してジオメトリエンジンにコマンドを送信をします。この構造体は、NNSi_G3dFuncSbc_NODEDESC関数(SBCのNODEDESCコマンド処理時に呼び出される)の実行時に作成され、使用されます。
ジョイントアニメーションは、この構造体に格納されているデータをNNSi_G3dFuncSbc_NODEDESC関数内部においてアニメーションデータに従い設定することにより実装されています。
また、NNS_G3D_SBC_NODEDESCにコールバックを設定することによって、NNSG3dRS構造体を通じてNNSG3dJntAnmResult構造体にアクセスすることにより、ジョイントの位置や向きやスケールをユーザープログラムからコントロールすることができます。
| NNSG3dJntAnmResult構造体のメンバ | 説明 |
|---|---|
| flag | NNSG3dJntAnmResultFlag型をもつフラグ |
| scale | ジョイントにかかるスケール |
| scaleEx0 | 補助スケール値。使用しているCGツールによって値の意味は異なります。通常この値を加工することはありません。 |
| scaleEx1 | 補助スケール値。使用しているCGツールによって値の意味は異なります。通常この値を加工することはありません。 |
| rot | ジョイントの3x3回転行列 |
| trans | ジョイントの平行移動成分 |
NNSG3dJntAnmResultFlagの値 |
説明 |
|---|---|
NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE |
このフラグがセットされている場合、scaleに格納されている値は無効です。スケール成分は全てFX32_ONEとして扱われます。 |
NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO |
このフラグがセットされている場合、rotに格納されている値は無効です。回転行列は単位行列として扱われます。 |
NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO |
このフラグがセットされている場合、transに格納されている値は無効です。平行移動成分は全て0として扱われます. |
NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE |
このフラグがセットされている場合、scaleEx0に格納されている値は無効です。成分は全てFX32_ONEとして扱われます。 |
NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE |
このフラグがセットされている場合、scaleEx1に格納されている値は無効です。成分は全てFX32_ONEとして扱われます。 |
NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC |
このフラグがセットされている場合、このジョイントにはMayaのSegment Scale Compensateがかかっています。 |
2004/10/13 初版