前回前々回前々々回と、やたらC++のコードばかりで退屈してしまったかと思いますので、今回はGlut_BCCの本来の開発趣旨(注)に沿って、BatchGoodでコンパイルしたGlut_BCCを実際に動かしてみましょう。

柱:私はなんでも実験、実証したがる人間なので、OpenGLの座学では飽き足らず「実際にどう見えるのか」を併行して行わないと気が済まない、というのがこのプログラムの開発趣旨でした。

 

まず起動時はこんな感じです。

 

この段階ではGLUTウィンドウはまだ作られていないので、ウィンドウコントロールは皆「無効」になっています。

 

最初に選択されているドロップダウンリストでワイアー、ソリッド各9つづつの基本図形(プリミティブ)を選択します。(既定値は有名な「ワイアーティーポット」です。)また、表示色も「色」ボタンを押して、ダイアログで選択できます。(既定値は赤色です。)選択が済んだならば「GL Window作成」ボタンを押してください。以下のような"GL Window"が現れます。

 

最初は「常時回転」にチェックが入っており(既定値)、Y軸を中心にクルクル回っています。この段階でプリミティブや色を変更してみてください。

緑色の「ドーナッツ」(円環)を選択してみましたが、矢張りティーポットに戻します。

 

先ず実験するのは「視点」です。投影面の座標はいじらないで(注)視点(eyex、eyey、eyez-初期値は0.0, 0.0, 2.0)の値を変えてみてください。因みに"2.0, 2.0, 3.0"を設定すると、こんな感じになります。(斜め右上から見下ろす感じですね。)

柱:プリミティブの中心を原点(0.0, 0.0, 0.0)に置いているので。

 

この状態で「投影」の投影方法を既定値の「透視投影(glPerspective)」から「平行投影(glOrtho)」(「並行」と誤字になっていますが...汗)に変えてみるとXYZ軸共に-1.0~1.0までの立方体を単純に投射した映像に変わります。

 

これは余り面白くないので、今度は同じ投影方法でも別の関数を使う「透視投影(glFrustum)」にし、よく見えるように視点も

"1.0, 1.0, 2.0"にしてみます。

今度は「常時回転」のチェックボタンをはずし、回転軸を変えてスライダー(トラックバー コントロール)を動かしてみてください。異なる軸で一回転するのが確認できます。(静止画では分からないので画像は省略します。)

 

再度「常時回転」にチェックを入れて、今度は「照光効果」(ライティングイフェクト)にもチェックを入れます。

今度はワイアーティーポットが金色に変わりましたね?また、よく見るとライトの当たり具合で陰影が出ていることが判ります。よりよく見るためにプリミティブをソリッドティーポットにしてみます。

 

先ずは「環境光」で。

次は「拡散光」。

最後が「鏡面光」。

 

段々と暗くなるイメージですが、実際のCGでは光もこれら3つのの光をブレンドし、更にプリミティブの表面の反射具合も「質感」をglMaterial関数を使って変化させデザインするようです。(絵心のない私には神業の様に見えますが...)

 

ということで、最初は「光と質感のブレンドも」と考えていたプログラムですが、「無理っ!」ということで(webから拝借してきた)「金色一本」とし、素人でも分かり易い「ライトの位置」の設定だけにしてみました。↓は「環境光」で既定のライト位置("50.0, 50.0, 50.0")から"-50.0, 10.0, 10.0"にしてみたものです。光の反射、陰影を楽しめます。

 

いかがだったでしょうか?

 

GLUTを使ってウィンドウベースでOpenGLの入り口に立って、「『3DCGとはどんなものかな?』と正しい疑問を持つことが出来るデモンストレーションソフトとしてはまずまずの出来ではないか?」と思ったのですが。

 

さて、

 

長々と続いてきたC++、GLUTを使ったOpenGLの学習編はここでひとまず「初級」終了ということにして、導入したまま手つかずになっていたC#、OpenTKによるOpenGLに舞い戻り、20世紀のソフトと21世紀のソフトの差を味わってみようかと思います。

 

乞御期待!