SURPR!SE
サプライズ
2011.09.01
Modeling WebGL Mesh in Metasequoia メタセコイアでWebGLを試してみた。
HTML5では「WebGL」というAPIを使用することで3Dを表示出来るようになります。この仕組みはGoogle、Apple、Mozillaなどがサポートを明言しているおかげで、まだリリースされていない2011年現在でもかなりの数の数のWebGL
3Dコンテンツが公開されています。WebGLはOpenGL ES
2.0をJavaScript向けにアレンジしたローレベルレンダリングのAPIです。スマートフォンやタブレットのアプリで見ることの出来るリアルタイム3Dの仕組みをwebブラウザで実現できます。これまでwebでの3DコンテンツはFlashでの実装がスタンダードでした。Flash上での3D表現はFlash以外に別途3Dを作成したものをFlash用に変換する手間をかけていました。
WebGLは3Dデータを表示するための仕組みなのでレンダリングして画像を表示することを担当しますが、3Dコンテンツそのものやシェーダ(光源計算)は他に用意しなくてはなりません。そしてWebGLはローレベルAPIなので、制作のスピード感と汎用性を出すために中間的なフレームワークを作るのも大事です。スカイリンクでは勉強も兼ねて自社製WebGLライブラリーを作成して使用しています。今回は3Dコンテンツ制作をオープンソースのCGソフト「Metasequoia(メタセコイア)」で行い、複雑な形の3DCGを自前のWebGLフレームワークをつかいブラウザに3DCGを出力するデモを作成してみました。
メタセコイア モデリング
WebGLバージョン
メタセコイアを使うと3Dソフトなので当たり前ですが、手でガリガリとメッシュのコーディングをせずにモデリングすることが出来ます。シェーダーの作成も簡単です。今回のデモにはUVマップを用意しました。この使用するシェーダーにあわせたメッシュをきちんと準備してあげることでハードウェア的に一番効率のよいプログラムを準備してあげることが出来るようになります、他にたくさんあるWebGLのライブラリーはありますが、自分の好きなシェーダーを使いつつ、ハードウェア的に高効率なアウトプットを目指すのであればGPUの使用をコントロール出来るように自分でバイトレベルのプログラミングが必要になります。
最後に、WebCLを使ってjavascriptの並列処理を行う「River Trail」などGPUのパワーを積極的に使用する技術が多くなってきました。GPUを使用したプログラミングを使用するためにはバイトレベルのコーディングをして行かないと思い通りのコンテンツを構築するのは難しいです。ただ、ここらの話を理解するとPCブラウザ、スマートフォン、タブレットなど、どのようなデバイスにもワンソースでデータをポートできたりとなかなか便利になるのではないでしょうか?
参照サイト
http://www.khronos.org/webgl/
http://www.chromeexperiments.com/tag/3d/