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