# NNSG3dMatAnmResult

## 構造体の定義

    #include <nnsys/g3d/anm.h>

    typedef enum
    {
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE  = 0x00000001,
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO   = 0x00000002,
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO = 0x00000004,

        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET       = 0x00000008,
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT      = 0x00000010,
        NNS_G3D_MATANM_RESULTFLAG_WIREFRAME        = 0x00000020
    }
    NNSG3dMatAnmResultFlag;

    typedef struct NNSG3dMatAnmResult_
    {
        NNSG3dMatAnmResultFlag flag;
        u32                    prmMatColor0;
        u32                    prmMatColor1;
        u32                    prmPolygonAttr;
        u32                    prmTexImage;
        u32                    prmTexPltt;

        fx32                   scaleS, scaleT;
        fx16                   sinR, cosR;
        fx32                   transS, transT;

        u16                    origWidth, origHeight;
        fx32                   magW, magH;
    }
    NNSG3dMatAnmResult;

## 構造体の解説

`NNSG3dMatAnmResult`構造体は、マテリアル情報を保持しています。G3Dはこの構造体に格納された情報を使用してジオメトリエンジンにコマンドを送信をします。この構造体は、`NNSi_G3dFuncSbc_MAT`関数(SBCのMATコマンド処理時に呼び出される)の実行時に作成され、使用されます。
マテリアルアニメーションは、この構造体に格納されているデータを`NNSi_G3dFuncSbc_MAT`関数内部においてアニメーションデータに従い設定することにより実装されています。
また、`NNS_G3D_SBC_MAT`にコールバックを設定することによって、マテリアルの設定をユーザープログラムからコントロールすることができます。

NNSG3dMatAnmResult構造体のメンバ | 説明
--- | ---
flag | NNSG3dMatAnmResultFlag型をもつフラグです。
prmMatColor0 | diffuseとambientが格納されています。MaterialColor0ジオメトリコマンドのパラメタと一致します。
prmMatColor1 | specularとemissionが格納されています。MaterialColor1ジオメトリコマンドのパラメタと一致します。
prmPolygonAttr | ポリゴン関連属性値が格納されています。PolygonAttrジオメトリコマンドのパラメタと一致します。
prmTexImage | テクスチャパラメータが格納されています。TexImageParamジオメトリコマンドのパラメタと一致します。
prmTexPltt | テクスチャパレットのベースアドレスが格納されています。TexPlttBaseジオメトリコマンドのパラメタと一致します。
scaleS | テクスチャのS方向のスケール値です。
scaleT | テクスチャのT方向のスケール値です。
sinR | テクスチャの回転角の正弦値です。
cosR | テクスチャの回転角の余弦値です。
transS | テクスチャのS方向の平行移動成分です。
transT | テクスチャのT方向の平行移動成分です。
origWidth | g3dcvtr出力時にマテリアルに対応していたテクスチャの幅です。
origHeight | g3dcvtr出力時にマテリアルに対応していたテクスチャの高さです。
magW | モデルとテクスチャのバインド時に決定される倍率です。通常はFX32_ONEです。
magH | モデルとテクスチャのバインド時に決定される倍率です。通常はFX32_ONEです。

NNSG3dMatAnmResultFlagの値 | 説明
--- | ---
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE` | このフラグがセットされている場合、scaleS及びscaleTに格納されている値は無効です。両方ともFX32_ONEが入っているものとして扱われます。
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO` | このフラグがセットされている場合、sinR及びcosRに格納されている値は無効です。sinRには0が、cosRにはFX32_ONEが入っているものとして扱われます。
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO` | このフラグがセットされている場合、transS及びtransTに格納されている値は無効です。両方とも0が入っているものとして扱われます。
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET` | このフラグがセットされている場合、この構造体の設定に対応するテクスチャ行列がカレントテクスチャ行列に設定されます。
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT` | このフラグがセットされている場合、この構造体の設定に対応するテクスチャ行列がカレントテクスチャ行列に乗算されます。
`NNS_G3D_MATANM_RESULTFLAG_WIREFRAME` | このフラグがセットされている場合、マテリアルに属するポリゴンはワイヤーフレームで描画されます。

## 参照

カーネル 描画エンジン

## 履歴

2004/10/13 初版