G3D Demos

# G3Dサンプルデモ

## 場所

`$TwlSystem/build/demos/g3d/`

## コンパイル方法

`$TwlSystem/build/demos/g3d/` ディレクトリに移り、

> `% make`

と入力します。コンパイルが始まり、実行ファイルである `.srl` ファイルやバイナリ情報を記述した `.nef` または `.tef` ファイルが、

> `$TwlSystem/build/demos/g3d/samples/(サンプル名)/bin/(プラットフォーム)/(ターゲット)/`

の下に生成されます。例えば、

> `$TwlSystem/build/demos/g3d/samples/simple/bin/ARM9-TS.HYB/Release/`

には `simple` デモのNITRO/TWLハイブリッド用リリース版の実行ファイルが生成されます。

## 実行方法

`$TwlSystem/build/demos/g3d/samples/(サンプル名)/bin/(プラットフォーム)/(ターゲット)/` ディレクトリに移ります。 ビルドしたROMの種類によって、下記のいずれかの方法で実行します。

### NITRO ROM の場合

Ensata エミュレータを用いる場合

- ensata で `*.nef`, `*.srl` を実行する。

IS-NITRO-DEBUGGER を用いる場合

- IS-NITRO-DEBUGGER で `*.nlf` ファイルを読みこんで実行する。
- IS-NITRO-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.exe` で IS-NITRO-DEBUGGER で `*.srl` を実行する。

IS-TWL-DEBUGGER を用いる場合

- IS-TWL-DEBUGGER で `*.nlf` ファイルを読みこんで実行する。
- IS-TWL-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.TWL.exe` で IS-TWL-DEBUGGER で `*.srl` を実行する。

### TWL/NITRO HYBRID ROM の場合

IS-NITRO-DEBUGGER を用いる場合

- IS-NITRO-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.exe` で IS-NITRO-DEBUGGER で `*.srl` を実行する。

IS-TWL-DEBUGGER を用いる場合

- IS-TWL-DEBUGGER で `*.tlf` ファイルを読みこんで実行する。
- IS-TWL-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.TWL.exe` で IS-TWL-DEBUGGER で `*.srl` を実行する。

### TWL LIMITED ROM の場合

IS-TWL-DEBUGGER を用いる場合

- IS-TWL-DEBUGGER で `*.tlf` ファイルを読みこんで実行する。
- IS-TWL-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.TWL.exe` で IS-TWL-DEBUGGER で `*.srl` を実行する。

## 説明

#### サンプル

`simple` | テクスチャつきのモデル描画をおこなう単純なサンプルです。
`1mat1shp` | 非常に単純なモデルを高速に表示するサンプルです。
`callback1` | コールバック関数登録を利用して、レンダリング処理のカスタマイズを行うサンプル(1)です。部分的にビジビリティやマテリアルなどの計算結果を変更してモデルを表示します。
`callback2` | コールバック関数登録を利用して、レンダリング処理のカスタマイズを行うサンプル(2)です。モデル内の特定のノードに別のモデルをくっつけて表示します。
`callback3` | コールバック関数登録を利用して、レンダリング処理のカスタマイズを行うサンプル(3)です。ディスプレイリストの送信中に、描画とは無関係な計算を行います。
`callback4` | コールバック関数登録を利用して、レンダリング処理のカスタマイズを行うサンプル(4)です。ジョイントアニメーション適用後のカレント行列を加工して再設定します。
`callback5` | コールバック関数登録を利用して、レンダリング処理のカスタマイズを行うサンプル(5)です。コールバック関数を複数設定します。
`CameraMtx` | ビルボードを表示するサンプルです。Projection行列の設定方法を切り替えて描画効率を比較するサンプルにもなっています。
`CustomizeSbcOp` | SBCコマンドの処理関数をユーザーがカスタマイズしたものに変更するサンプルです。
`DisposeTex` | モデルテクスチャをVRam転送後にテクスチャ領域をゼロクリアしても問題なく動作することを示すサンプルです。
`Envelope` | ウェイテッドエンベロープつきモデルを表示するサンプルです。
`GeComBuffering` | ジオメトリコマンドバッファリング機能を利用するサンプルです。
`JointAnm` | モデルジョイントアニメーションを再生するサンプルです。
`PartialAnm1` | モデルジョイントアニメーションを部分的に再生するサンプルです。
`PartialAnm2` | モデルジョイントアニメーションを部分的に再生し、組み合わせるサンプルです。
`SlowMotion` | モデルジョイントアニメーションをスロー再生するサンプルです。
`SharedMotion` | 体型の違うモデルで同一のジョイントアニメーションを再生するサンプルです。
`ManualSetup` | NNS_G3dResDefaultSetup関数を使用せずにモデルリソースをセットアップするサンプルです。
`MatColAnm` | マテリアルカラーアニメーションを再生するサンプルです。
`ModifyNsbmd` | モデルのマテリアル色やライト設定を変更するサンプルです。
`MotionLOD` | 遠くにあるキャラクターアニメーションのフレームレートを落として、CPU処理を軽減するサンプルです。
`MultiModel` | コンバータで複数モデルをマージし、その結果を描画するサンプルです。
`RecordJoint` | ジョイントの計算結果を前計算しておくサンプルです。
`RecordMaterial` | マテリアルの計算結果を前計算しておくサンプルです。
`RecordMtx` | callback2サンプルと同様の動作をコールバックを使用せずに実現するサンプルです。
`SeparateTex` | コンバータでモデルバイナリとテクスチャバイナリを分割出力し、それらを適切に関連付けて表示するサンプルです。
`ShadowVolume` | G3Dを使用してシャドウボリュームを描画するサンプルです。
`TexPatternAnm` | テクスチャパターンアニメーション再生サンプルです。
`TexSRTAnm` | テクスチャSRTアニメーション再生サンプルです。
`UnbindTex` | モデル内のテクスチャの部分的な取り外し、張替えを行うサンプルです。
`VisibilityAnm` | ビジビリティアニメーションの再生を行うサンプルです。
`ScreenUtil` | G3Dの座標変換ユーティリティAPIを使ったサンプルです。
`Translucent` | 半透明ポリゴンが重なっているオブジェクトを描画するサンプルです。
`EnvMap` | 環境マップされたオブジェクトを表示するサンプルです。
`ProjMap` | 投影マップされたオブジェクトを表示するサンプルです。

## 動作環境

すべてのサンプルについて、IS-TWL-DEBUGGER, IS-NITRO-EMULATOR、ensata での正常動作を確認しています。

## 参照

`G3D関数一覧`

## 履歴

2008/06/20 コンパイル方法および実行方法をTWLに対応
2008/02/26 callbackサンプルの説明を加筆
2005/01/24 実行方法において IS-NITRO-EMULATOR の記述を削除、動作環境において TEG の記述を削除し、TS を IS-NITRO-EMULATOR に変更。
2005/01/21 EnvMap, ProjMapの２つのサンプルを追加
2004/11/26 Translucentサンプルを追加
2004/11/10 PartialAnm1, PartialAnm2, SlowMotion, SharedMotion, ScreenUtilの５つのサンプルを追加
2004/10/12 callback5, Envelope, ManualSetup, RecordMtx, ShadowVolumeの５つのサンプルを追加
2004/09/16 callback4, MotionLODの２つのサンプルを追加
2004/09/01 1mat1shp, callback3, GeComBufferingの３つのサンプルを追加
2004/08/10 幾つかのサンプルを追加
2004/08/02 初版