WebGL
モデル読まないと面白く無いよね:サンプルプログラム
この章で説明したJSON化したモデルデータを読み込むんでcanvasに描画するHTMLプログラムです。下記にあるファイルをDLしてHTMLを実行するとシルエットな立方体が描画されます:
DLアーカイブ: IKDADV_WGLSMP_LoadModelzip
● 使い方
○ とにかく確認したい方
アーカイブを展開すると「bin」「resource」「src」という3つのフォルダが作成されます。手っ取り早くWebGLでの描画を確認してみたい方はbin/loadmodel.htmlをChrome等のWebGLをサポートしているブラウザで開いてみて下さい。この時何も出ない時はクロスドメインの問題に引っかかっている可能性があります。その場合は最初にブラウザを開いてから上のHTMLをドロップしてみて下さい。
○ Xファイル → JSONモデルコンバータを試してみたい方
binフォルダ内にはconverter/MeshConverter.exeという今回説明した範囲のXファイル→JSONモデルを行ってくれるコンバータが入っています。このコンバータはコンソールで実行する事を想定しています。
コンソールウィンドウを開いて、bin/converterフォルダまでパスを移動させた後に、
MeshConverter.exe [入力Xファイルへのパス] [出力ファイルパス]
というコマンドを打ち込むとコンバートしてくれます。例えば、
MeshConverter.exe .../../resource/Cube2.x cube2.json
とすると今回のサンプルで使用しているcube2.jsonモデルがカレントフォルダに出力されます。テキストファイルなので適当なテキストエディタで開いて確認できます。
○ コンバータをビルドしたい方
srcフォルダにはコンバータのソースが入っています。今回はVisualStudio2008で実装しましたが、他のVS環境でもビルド出来ると思います。ビルド手順は以下の通りです:
1. VSを立ち上げる
2. 新規プロジェクト作成
3. 空のコンソールアプリケーションを作成
4. srcフォルダ下にあるすべてのコードをプロジェクトに追加
5. ビルド
これで.exeが出来あがりますので、あとは上で説明している手順でコンバートが回ると思います。ただし、Xファイルのバリエーションによってはうまくいかない場合もありますのでご注意ください。
○ クラスについて
ソースコードにあるOX::spクラスはスマートポインタクラスです。メモリの自動解放を行ってくれる便利なクラスです(^-^)。
OX::Hashクラスはハッシュテーブルを作成してくれるクラスです。整数(int)、浮動小数点(float)、文字列(std::string)、それらの配列(std::vector<***>)、そしてHashそのものを格納できます。保持している物はHashがスコープから外れた時に自動的に解放されます。他人がHashを持っている場合は参照カウンタが減るだけで解放はされません(このためにスマートポインタが使われています)。Hashの循環保持をした場合はメモリがリークするので厳禁です!
OX::JsonクラスはHashテーブルをJSON文字列化してくれるヘルパークラスです。JSONに完全に準拠はしていませんが、今回のサンプルの範囲であればJavaScriptで読み込み可能なJSON文字列を作ってくれます。文字列を格納する時にシングルクォーテーションが入ると多分JavaScript側のパーサーで失敗しますのでご注意下さい。