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