#include <nnsys/g3d/util.h>
BOOL
NNS_G3dGetResultMtx(
const NNSG3dRenderObj* pRenderObj,
MtxFx43* pos,
MtxFx33* nrm,
u32 nodeID
);
| pRenderObj | RenderObj構造体へのポインタ |
| pos | クリップ座標行列が代入される行列へのポインタ |
| nrm | 方向ベクトル行列が代入される行列へのポインタ |
| nodeID | ノードID |
行列が取り出せた場合にはTRUEを返します。
NNS_G3dDraw関数の実行後に、nodeIDに対応する行列が行列スタックに残っている場合は、 その行列を行列スタックから取り出します。 行列が取り出せた場合にはTRUE, 取り出せなかった場合にはFALSEが返ります。 戻り値がTRUEの場合、行列モードはPosition/Vector行列モードに変更されています。 pos, nrmはNULLでない場合にセットされます。
なお、得られる行列にはpos_scaleはかかっていないことにご注意ください。 (.imd中間ファイルの<model_info>で指定される属性で、 頂点座標をスケーリングしています。NNSG3dResMdlInfo::posScaleにfx32型で格納されています。)
使用法と注意:
g3cvtrで-sオプションをつけてコンバートした場合、ジョイント行列は全て行列スタックにストアされています。
また、NNSG3dRenderObj::flagのNNS_G3D_RENDEROBJ_FLAG_SKIP_SBC_DRAWを設定してNNS_G3dDraw関数をコールした場合、
描画をスキップすることができ、
NNS_G3D_RENDEROBJ_FLAG_SKIP_SBC_MTXCALCを設定してNNS_G3dDraw関数をコールした場合、行列計算をスキップすることができます。
この機能を利用すると、下記のようなプログラミングが可能になります。
・最初に行列を行列スタックにセットしておく
・行列スタックにセットされた行列を加工
・加工された行列を用いて描画
NNS_G3dSetResultMtx
NNS_G3dGetCurrentMtx
2004/08/02 初版