もっと3Dらしく・・・・立方体+テクスチャ
前回は、下の図1のように、立方体をワイヤーフレームで表示しました。
 |
図1 ワイヤーフレームCG
ワイヤーフレームの表示は、ちょっと昔のSF映画っぽくてかっちょ良いのですが、
やっぱりテクスチャーを貼ってみたいところ。
それに思い出してみると、前々回すでに、
ポリゴン+テクスチャを作ってもらっています。
という訳で、
前回の立方体に前々回のポリゴンを貼りつければなんの事は無い。
3DCGらしき物 ができちゃうはず。
カンタンですな。
そんな訳で・・・、 ともかくやってみよう。
とりあえず、テクスチャーはこんなので。
 |
図2 使用テキスチャ
たぶん、割とサンプルっぽい仕上がりになるはずですね。
(僕にエゴコロが無いだけです・・・・。)
さて、ダウンロードしたら、上記プログラムを一度実行してみよう。
すると、ばっちりサイコロっぽいモノが表示されたはずである。
ところが
・・・・あれれ、スゴイ事になるじゃぁ無いですか。
 |
図3 サンプル1実行画面
実行画面はこんな風(図3)。
なんでこうなってしまうのか?
これは、ポリゴンを描画する時に、三次元空間上での
ポリゴン同士の位置関係を無視して、2Dのディスプレイに描画
してしまっているからなんです。
これを解決するにはどうしたら良いか?
というと、良く知られている方法に、Zソート法というのがあります。
Z軸の座標を基準として、降順でソートしてから、表示する。
言葉で説明するとややこしいですが、
つまり描き順を調整して、奥のポリゴンを描いて、その後手前のポリゴン
を重ねる様に描いて・・・・、
てな具合にやります。
ポリゴン一枚一枚をセル画に描いて、後で順番をそろえて、重ねるといった印象ですな。
こういう風に3DCGを2Dで表示する際に、前後関係を調整するなどして、
本来隠れるはずの面が表示されない様にする処理を、
「陰面消去」 と言います。
それを行ったのが、以下のサンプルです。
なお、今回は、説明もせず、パースペクティブコレクトを入れてあります。
(あまりにも見苦しかったので。)
ただこのへんは普通、 Direct3D や、OpenGL などにおまかせで処理するので、
ここで説明しなくても良いかなぁと。
それからもう一つ白状すると、ポリゴンの裏面を描画しないという方法で、
若干処理を高速化しています。
ただし、普通はソフトで組まずに、ハードウェアの機能を使って高速化します。
それはまた今度解説する事にしまして・・・・・、
次回は座標系間の変換に進みます。