ここでは、3次元コンピューターグラフィックスに関する基本知識について解説します。
コンピューターグラフィックス、いわゆるCGとは、 コンピューター上の計算処理によって画像や映像を作成する技術の事です。
CGには、平面的な表現を扱う2次元コンピューターグラフィックス ― 2DCGと、 立体的な表現を扱う3次元コンピューターグラフィックス ― 3DCGが存在します。 かつてはPCなどでの描画処理は2DCGが主流でしたが、 近年のコンピューター性能や3D関連技術の目覚しい進歩により、 現在では3DCGも一般的なものとなりました。
3DCGを使用した形態のプログラムは、一般に、実行される環境への依存性が強い傾向があります。
例えば通常、3DCGプログラムの開発時には、オペレーティングシステムや3DグラフィックスAPI(ラッパーライブラリ含む)、および3D処理ハードウェアの種類や世代など、 「プログラミング言語だけの範囲で閉じていない、色々な要素」を考慮する必要があります。 そして実行時にも、それらの想定条件を満たしていなければなりません。
しかしVCSSLでは、3DCG機能を正式な言語仕様の一部「 VCSSL Graphics3D 」としてサポートしています。 これにより、プログラマはVCSSLよりも下層の差異、 つまりオペレーティングシステムや搭載ハードウェアの違いなどによる環境依存性を気にする必要が無く、 どこでも動作する3DCGプログラムを開発する事が可能となっています。
VCSSLは、設計方針として簡易用途での扱いやすさを重視しているため、 非常に簡単でシンプルなプログラム開発が可能となっています。 これはVCSSL Graphics3Dも例外ではありません。
一般的な3DCGプログラムの開発シーンでは、 プログラマには3DCGの原理やハードウェアの機能、 及び数学的な内容などに関する、様々な専門知識などが要求されがちです。
これに対してVCSSL Graphics3Dでは、 プログラマがそういった専門的な内容を極力意識する事無く、 直感的に3DCGプログラムの開発を進めていけるように設計されています。
一方で、環境依存性の低さや簡単さを優先する代償として、VCSSL Graphics3D では、処理速度や描画品質はあまり高くありません。
例えば処理速度面では、概ね数十万ポリゴン/秒程度の水準が上限となります。この処理速度は、「初めて3DCGをサポートし始めた時代の家庭用ゲーム機」くらいがちょうどイメージに合う水準です。
また、描画品質についても、面に画像を貼り付ける「テクスチャ―マッピング」などは未対応で、陰影処理もフラットシェーディング(ベタ塗りのカクカクな、最初期のポリゴンCGのような絵)のみの対応となっています。
なぜ今の時代にこんなに低速・低機能なのかというと、3DCG処理の大半にGPU(3D処理が得意なチップ)の機能を使わず、CPUによって行っているからです。その代わり、どのようなPC上でも手軽にそのまま動く(USBメモリーなどでの持ち運びも可)というポータブル性を実現しています。
将来的には、ポータブル性を犠牲にしてでも処理速度を引き上げたい場合のために、オプションで「性能優先のモード/拡張パック」のようなものを用意する計画もあります。が、現時点では未提供です。
従って、VCSSL Graphics3D を使って、近年の3Dゲームのような美麗なグラフィックスを実現しようと思っても、性能的にも機能的にもまず無理です。この点は、あらかじめご留意ください。
一方で、ちょっとした学習教材や図示、データ可視化などの目的においては、最初期の家庭用3Dゲーム機くらいの性能と機能でも、意外と普通にこなせてしまうものも多いです。 VCSSL Graphics3D は、そういった層と用途を主に想定しています。
VCSSLプログラムで3DCGを扱うには、VCSSL標準ライブラリの中から、 Graphics ライブラリとGraphics3Dライブラリをインポートする必要があります。 また、描画結果はウィンドウ上に表示する事が多いので、 同時にGUIライブラリをインポートしておく事を推奨します (画像をファイルに保存するだけの場合など、ウィンドウなどを利用しない場合は不要)。
これらのライブラリをインポートするには、プログラムの先頭行に以下のように記述します。
これで、プログラム中から3DCGを扱うための関数が利用可能になります。