NNS_G3D_SBC_NODEDESC

命令のフォーマット

オフセット(バイト単位) 説明(NNS_G3D_SBCFLG_000の場合)
0 NNS_G3D_SBC_NODEDESC | NNS_G3D_SBCFLAG_000
1 計算対象ノードのノードID
2 計算対象ノードの親ノードのノードID
3 フラグ(NNSG3dSbcNodeDescFlag)
オフセット(バイト単位) 説明(NNS_G3D_SBCFLG_001の場合)
0 NNS_G3D_SBC_NODEDESC | NNS_G3D_SBCFLAG_001
1 計算対象ノードのノードID
2 計算対象ノードの親ノードのノードID
3 フラグ(NNSG3dSbcNodeDescFlag)
4 計算結果がストアされる行列スタックID
オフセット(バイト単位) 説明(NNS_G3D_SBCFLG_010の場合)
0 NNS_G3D_SBC_NODEDESC | NNS_G3D_SBCFLAG_010
1 計算対象ノードのノードID
2 計算対象ノードの親ノードのノードID
3 フラグ(NNSG3dSbcNodeDescFlag)
4 計算前にリストアされる行列スタックID
オフセット(バイト単位) 説明(NNS_G3D_SBCFLG_011の場合)
0 NNS_G3D_SBC_NODEDESC | NNS_G3D_SBCFLAG_011
1 計算対象ノードのノードID
2 計算対象ノードの親ノードのノードID
3 フラグ(NNSG3dSbcNodeDescFlag)
4 計算結果がストアされる行列スタックID
5 計算前にリストアされる行列スタックID

説明

NNS_G3D_SBC_NODEDESC命令は、ノード間の親子関係を定義するための命令です。この命令は、デフォルトではsbc.cのNNSi_G3dFuncSbc_NODEDESC関数をコールします。関数の内部では以下のような処理が行われています。

  1. 命令のバリエーションによっては、Position/Vector行列を行列スタックからカレント行列にリストアします。
  2. NNS_G3dRS構造体のpJntAnmResultメンバにNNSG3dJntAnmResultのポインタをセットする。
  3. タイミングAのコールバックをチェックします。この位置のコールバックは、ジョイントの計算をコールバック関数に代行させたい場合に便利です。なお、コールバック関数内でNNS_G3dRSのNNS_G3D_RSFLAG_SKIPフラグをセットしておくと、次のコールバックまでの処理をスキップします。
  4. ジョイントの情報が静止画/アニメーションの場合に応じて、*pJntAnmResultにセットされます。
  5. タイミングBのコールバックをチェックします。この位置のコールバックはジョイントの計算結果をコールバック関数に加工させたい場合に便利です。
  6. ジョイント行列がジオメトリエンジンに送信されます。
  7. タイミングCのコールバックをチェックします。この位置のコールバックは、この命令の終了後に何らかの動作をさせたい場合に利用します。
  8. 命令のバリエーションによっては、Position/Vector行列をカレント行列から行列スタックにストアします。


コールバック関数の呼び出しタイミング 用途
NNS_G3D_SBC_CALLBACK_TIMING_A NNSG3dJntAnmResult構造体の計算をユーザープログラムに代行させたい場合。
NNS_G3D_SBC_CALLBACK_TIMING_B NNSG3dJntAnmResult構造体の計算結果をユーザープログラムで加工したい場合。
NNS_G3D_SBC_CALLBACK_TIMING_C この命令の終了後に何らかの処理を入れたい場合。


オプションフラグ 動作
NNS_G3D_SBCFLG_000 カレント行列に対して計算を行う。計算結果は行列スタックにストアしない。
NNS_G3D_SBCFLG_001 カレント行列に対して計算を行なう。その後計算結果を行列スタックにストアする。
NNS_G3D_SBCFLG_010 行列スタックからリストアしてから計算を行う。計算結果は行列スタックにストアしない。
NNS_G3D_SBCFLG_011 行列スタックからリストアしてから計算を行う。その後計算結果を行列スタックにストアする。

参照

履歴

2004/10/14 記述の追加
2004/08/02 初版