OpenGLは 1980年代に U.S. の SGI (Silicon Graphic Inc.) が開発した IRIS GL (Graphics Library) の後継であり、 1992年にリリースされました。 OpenGL は、 いろいろなプログラミング言語から利用でき、さまざまなプラットフォームの上で動作することから、 コンピュータ・グラフィックスのAPI (Application Programming Interface)の業界標準となっています。 2006年からは非営利団体の Khronos Group が管理をしています。
https://www.opengl.org/OpenGL ES (OpenGL for Embedded Systems) は、組込み機器の上で 2D/3D CG 描画を行うために 2003, 2004年ごろにOpenGLから派生した仕様です。 OpenGL ES 2.0 は、OpenGL 2.0 をベースとして新しい機能を追加し、冗長な機能や古い機能を削除したもので、 非常にシンプルですが、3D CG を実現するのに十分なライブラリです。 スマートフォンやゲーム機などで利用されています。
Webの世界で3Dグラフィックスを高速に処理する技術が WebGL で、HTML5 で標準技術として採用されました。
WebGL は 2009年にワーキンググループが作られ、2011年にversion 1.0 が公開されました。 WebGLは OpenGL 2.0 で導入された「シェーダ機能」に対応しており、 3D CG の表示部分を C言語に似た「シェーダ記述言語 GLSL ES 1.0 で記述できます。
OpenGL は、 OpenGL ES 2.0 をベースとして、ブラウザ上で使用できるようにしたものです。 javascript を用いてプログラミングします。 ただし、WebGL は OpenGL のサブセットであり行列計算ライブラリが標準では含まれていないので、 自分で用意する必要があります。
本授業 (「コンピュータ・グラフィックスa(第4ターム、 9回)」 および「コンピュータ・グラフィックスb (第1ターム、9回)」) では、コンピュータ・グラフィックスの理論とWeb GL の基本技術を学びます。
3D CG の理論や技術をきちんと理解した上で、 javascript のプログラムから WebGL のAPI を直接呼び出して ブラウザ内で高速に動作する 3D CG を作成できるようになることが目標です。 WebGL の API に関する知識は、 スマートフォンなどの組み込み機械上でOpenGL ES のプログラムを記述するときにも役立ちます。
WebGLの記述力は非常に強力ですが、低レベルなAPIを直接プログラミングするのは 若干難易度が高いという理由で、 javascriptの高レベルなAPIを持つライブラリがいくつか開発されています。 それらのライブラリの中でデファクトスタンダードになったのが Three.js です。
Three.js を利用すると、非常に簡単にブラウザ内で動作する 3D CG が実現できます。 ただし Three.js のライブラリで用意されている範囲でプログラミングするにはよいのですが、 拡張しようとしたりすると Web GL そのものの知識が必要となります。
Three.jsを学ぶには、第1タームの「コンピュータ・グラフィックスb」の授業を履修することを勧めます。 Webブラウザ内で動作する 3D アニメーションや 3Dゲームを 簡単に開発できるようになることを目標とした授業です。