SIGGRAPH 2003に見るJavaの進化:安藤幸央のランダウン(21)
「Java FAQ(What's New)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集局)
コンピュータグラフィックスの祭典「SIGGRAPH 2003」
7月27日から31日にかけて、米国カリフォルニア州サンディエゴにて、コンピュータグラフィックスに関する世界最大の学会・展示会である「SIGGRAPH 2003」 が開催されました。
今年のトレンドはGPU(Graphics Processing Unit)やVPU(Visual Processing Unit)といったグラフィックス専用のチップを駆使した表現力豊かな3次元CGの実現です。世界中の技術力を駆使したCGアニメーション作品が一堂に会するSIGGRAPHエレクトリックシアターでは、数々のハリウッド映画の特殊効果シーンが主役の座を占めていました。その中でも異彩を放っていたのはNVIDIAの最新ハードウェア「GeForce FX」を用いたリアルタイムの描画デモ「Dawn」でした。パソコンの画面で動作するデモとハリウッド映画の派手な映像が同じ土俵で勝負しているのは不思議な気分でした。
では、SIGGRAPHのさまざまなイベントの中から、Java関連、ライブラリ関連の話題を中心に取り上げていきましょう。
OpenGL Java Bindingの推進
Javaで3次元グラフィックスというと、Java3D APIが一番初めに思い浮かびます。また、「JavaOne 2003」のときから注目を浴びていたグラフィックスハードウェアの力をフルに発揮する OpenGL Java Binding も忘れてはなりません。今回、SIGGRAPHの期間に合わせて、OpenGLの立て役者であるシリコン・グラフィックスとJavaの立て役者であるサン・マイクロシステムズが共同でOpenGL Java Bindingを推し進めるとの発表がありました。
OpenGLはマルチプラットフォーム環境で動作する一般的に普及しているグラフィックスプログラミング用のAPIです。シリコン・グラフィックスが中心となっているイメージが強いですが、仕様策定などは、非営利の中庸団体であるOpenGL ARB(Architecture Review Board)が担当しています。
ARBはJavaにおけるJCP(Java Community Process)に相当するものです。OpenGL Java Bindingは、そのOpenGL APIの各関数群に対して、JNI(Java Native Interface)を活用したJava Wrapper環境を整えたものです。つまり、JavaからOpenGLの各関数を呼び出して利用できるようにするAPI群です。ガベージコレクションなどのJavaならではの機能のメリットを享受できない代わりに、グラフィックスハードウェアの機能、性能を極限まで生かしたプログラミングが可能となります。特に速度を要求されるリアルタイムゲームなどの分野で、Javaが活躍できるステージを広げてくれるのがこのOpenGL Java Binding です。
OpenGL Java Bindingは、従来さまざまな実装がインターネット上に散在していました。オープンソースでライセンス形式がGPL/LGPLのものから、製品として販売されているものまで、さまざまな実装が存在しました。それぞれのOpenGL Java Bindingはそれぞれ一長一短がありました。今回の発表での目玉は、シリコン・グラフィックスとサン・マイクロシステムズのお墨付きの標準APIとしてのOpenGL Java Bindingである「Jogl」が登場したことです。OpenGLとJavaが互いを補いあって、互いが得意な部分を生かすことによってより開発が容易で素早く、より見栄えのする高速なアプリケーション開発が行えるようになったわけです。
Joglは従来存在したさまざまなOpenGL Java Bindingの利点と欠点を十分に研究し、いいとこ取りのAPI として登場しました。ベースとなっているのはコードネームJungleと呼ばれるAPIで、現在はjava.net上のプロジェクトの1つとして開発が進められています。
Joglは最新のOpenGL 1.4 APIに対応し、OpenGLの最新機能を活用可能であるとともに、Java によるAWT/Swing環境と統合された形でプログラミングを行うことができます。
Jogl のサンプルデモとチュートリアルが以下のサイトに用意されています。これらは、Java Web Start で手軽にダウンロード・実行することができます。
以下の2点の画面は、同サイトから入手できるデモの画面です。
これらのデモはもともとNVIDIAがGeForce用のサンプルとして公開しているC/C++で書かれたプログラムを基に作成されています。
各種のグラフィックス専用言語が新たに登場
Javaとは直接関係ないながらも、OpenGL Java Bindingのフル機能を生かすためには、グラフィックスハードウェアに密接に関係した、専用のプログラミング言語、APIに関しても習熟しておく必要があるでしょう。SIGGRAPHで目立ったものを紹介しておきましょう。
- NVIDIA Cg
GPU 用のシェーダーを C言語風のプログラミングで行う専用言語 - ATI Ashli
ソフトウェアレンダリング級の表現力を持った画像生成のための API群 - Sh
GPU プログラミングのためのメタ言語
OpenGL ESとは
OpenGL ES(Embedded System)はPDA(携帯情報端末)や携帯電話向けのOpenGLのサブセットです。組み込み用途向けに固定小数点演算のみの環境でも動作するよう仕様が策定されています。現在最初のバージョン「OpenGL ES 1.0」はPCやグラフィックスワークステーション用のOpenGL 1.3の仕様を基にしています。従来、OpenGL ESに賛同していたのは、携帯電話メーカーなどが中心でした。
今回のSIGGRAPH開催に合わせてサン・マイクロシステムズもOpenGL ESコミュニティに参加する旨発表がありました。OpenGL ESの策定はKhronos Groupを中心に行われています。
また OpenGL ES参加発表の場で、フィンランドのBitBoys社より、携帯機器向けのグラフィックスコア(acceleon)を利用したデモがお披露目されました。acceleonはOpenGL ESの初期バージョンと、Nokiaが中心に策定を進めているMobile 3D Graphis API for J2MEに対応しているそうです。
参考までに、Mobile 3D Graphics API for J2MEは、JSR(Java Specification Requests) 184で策定されています。
来年のSIGGRAPHは映画の街ロスアンジェルスで開催されます。いまだにムーアの法則に従っているCPUの進化に比べ、GPUの進化のスピードは圧倒的に勝っています。進化し続けるOpenGLとJavaの勢いは止まりません。来年はいったいどんな進化を遂げているのでしょうか。現時点では予想できないほどの進化を遂げているかもしれませんね。
次回は10月中旬の公開予定です。
プロフィール
安藤幸央(あんどう ゆきお)
1970年北海道生まれ。現在、株式会社エクサ マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元 CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG の情報源となるWebページをまとめている。
ホームページ:
http://www.gimlay.org/~andoh/java/
所属団体:
OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman)
主な著書
「VRML 60分ガイド」(監訳、ソフトバンク)
「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社)
「The Java3D API仕様」(監修、アスキー)
Copyright © ITmedia, Inc. All Rights Reserved.