NNS_G3dGetResultMtx

構文

#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, nrmNULLでない場合にセットされます。

なお、得られる行列には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 初版