OpenGLによる3Dグラフィックスライブラリの作成

 

外内友佳子     

 

OpenGLは3次元(3D)グラフィックスのアプリケーション・プログラミング・インターフェイス(API)として注目されている.何故ならOpenGLは,図形描画やシェーディング,透視変換,陰面消去などの,コンピュータグラフィックス(CG)における3次元処理を行うアプリケーションの作成に必要な機能の多くを含んでいて,その上ハードウェアに依存しない3次元表示ライブラリの標準規格として,広く普及しているからである.

一般にプログラマは,3Dオブジェクトを作成する場合に点,線,ポリゴンなどの幾何学的プリミティブの組合せを考え,その幾何学的プリミティブそれぞれについて頂点座標を求める必要がある.OpenGLに関連ライブラリとして用意されているグラフィックス・プリミティブを描画させる関数が少ないために,一般的な図形を既存のライブラリだけで表現することは難しい.グラフィックスのプログラミング初心者にとっては,それらを考えてプログラミング作業を行うことは必ずしも容易でない.また,グラフィックスのプログラミング経験者であっても図形の頂点座標をひとつひとつ与えていくという作業は,かなり煩雑で手間のかかる作業である.そこで,関数を呼び出すだけで3Dオブジェクトを描画できて,引数により多様な図形にも対応できるような関数群を提供することで,プログラマの負担の軽減が図れるのではないかと考えた.

そこで本研究では,OpenGLに関連ライブラリとして用意されている球や錐,柱,円盤等のグラフィックス・プリミティブ以外の,3Dオブジェクトの関数ライブラリの作成を目的とした.今回ライブラリとして用意した関数は,引数により多様な図形に対応できる3Dオブジェクト描画関数7種類と,オブジェクトに処理を施す関数2種類である.これらの関数を使用することにより,より一般的な図形を表現することが出来るようになったと考えられる.しかし今回作成した関数だけでは,身の回りにある3D物体を全て表現することは出来ない.そのため,今後の課題としては,ライブラリ関数の数をもっと増やすことが挙げられる.また,オブジェクトに処理を施す関数も,オブジェクト描画位置を変更できる関数であるとか,サブウィンドウやボタンなどを簡単に作れる関数などがあると良いと思われる.