2016年8月19日金曜日

れんだりんぐえんじん(Xファイルを読む)

「れんだりんぐえんじん」って、「えれくとりっく・えんじぇぅ」っぽい語感ですよね。カタカナをひらがなで書いただけですけど。

さて、表題の通り、Xファイルを読み込むようにしてみました。

ゲームプログラマーを目指すひと Xファイルを解析してみる
Xファイルの読み込みは↑のブログを参考にしました。分かりやすかったです。

今回は頂点とマテリアル、法線だけしか使わないので、てきとーにやっつけ読み込みです。まぁメタセコイアから出てくるXファイルってほぼ頂点、マテリアル、法線だけですけども。

今回サンプルデータを作るに当たり久しぶりにメタセコイアを使いました。と言っても新しくなった方ではなく、古い方(Ver3)ですが。
Ver3は昔触ったことがあった事、Ver4でXファイルを出力するにはライセンスを購入する必要が有ること、等が理由です。



とりあえずキューブを表示してみました。
Xファイルでは面に色を指定できるので、ソレで色をつけています。なんか途中で間違ってる気もしますが、とりあえずそれっぽい色になってるのでいいかなと思います。

それと法線を使用して、手前を向いているポリゴン以外は表示しないようにしました。これにより奥側の面は非表示になりますから、深度を使った判定は必要なくなります。もっとも、こちらを向いているポリゴンが2枚以上重なった場合の動作はよろしくないですが、単純なキューブやスフィアなら問題ないと思うのでこの方式で行こうと思います。


単純ではないモデル、例えばキューブが2個並んでいるような形状の場合は以下のようになります。





上の画像は正しい状態ですが、下の画像は反対から見た図で、本来は奥にあるモデルが後に描画され、手前側に表示されてしまっています。
2個別々のモデルでなくても、単純なキューブにちょっとした突起を作っただけでも同様の問題が発生します。ポリゴン同士の組み合わせで「谷折り」となる部分があると、その辺りで問題が発生します。


モデルの色については、現在のところ1面辺り1色としていますが、Graphicsのグラデーションをうまく使えば頂点カラーのような機能も作れるかもしれません。そうすればもうちょっと表現力が上がるかも。どっちにしろ箱や球しか表示できないわけですが。
それでもポリゴンを適切に割って色をつければ文字等も表示できますから、IMUの動作確認に箱を1個表示し、軸がわかりやすいように文字を表示する、くらいはできるかもしれません。
もうちょっと発展の余地有りという感じです。

0 件のコメント:

コメントを投稿