# NNSG3dJntAnmResult

## 構造体の定義

    #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 初版