Flash3D/Flashと3D
Flashの使い道
Flashテクノロジーのスタートは、「ベクタで記述された2Dオブジェクト」と「タイムライン」にあると思います。ただ今回扱うのは平面+時間という意味での3Dではなく、立体オブジェクトという意味での3Dです。Flashでの立体表現の歴史はそれほど長くなく、おそらく今年(2011年)から花開くものと思っています。
どうしてFlashの立体表現が遅咲きなのかという理由は最初に述べた通り、Flashの製品としての売りが、「ベクタで記述された2Dオブジェクト」と「タイムライン」を利用したアニメーション表現だったからだと思います。Flashが誕生した当時、WEB上でのアニメーションはとてもリッチなコンテンツでした。通信帯域を圧迫する動画のリアルタイム再生なんてもってのほかで、画像を数枚組み合わせて単純な運動を記述するので精いっぱいでした。そんな中、軽量なベクタデータでそれなりに複雑な操作が、簡単な編集画面で作成できるとしてFlashが急速に台頭してきました。Internet Explorerなどの主要なブラウザが標準でPlayerプラグインを導入したのも躍進の理由の一つでした。Flashコンテンツが再生できるかできないかというのが、ブラウザの命綱にもなりかねないほどの勢いがあったと思います。そのうちHTMLは滅びて全てFlashに還元されるなんて言い出す人もいたくらいなので、今(2011/3現在)、Appleの製品にFlash Playerが搭載されていないなんて当時の人には思いもよらないことでしょう。
このFlashを開発していたMacromedia社は、兄弟製品にDirectorを開発していて、FlashよりもさらにリッチなShockwaveというコンテンツを制作する仕組みも持っていました。ポリゴンを使った3D表現は、どちらかというとShockwaveのゲームとして開発されるケースが多かったように思います。2Dと3Dとでは製品的に住み分けがされていたということですね。しかし、Shockwaveは表現力が高いゆえに計算コストが大きく、貧弱なマシンでは性能的に十分に動作しませんでした。FlashがWEBを構成するコンテンツとして定着していったのに対して、こちらはだんだん日の目を見なくなっていきました。
Flashの利用ケースはバージョンアップとともに増えていき、WEB上での印刷機能などもになうようになりました。デザインや印刷に関するソフトウェアの老舗・Adobe社の目に留まるのも当然のことだったと思います。Macromedia社はAdobe社に買収され、FlashはAdobeのソフトウェア群の一角を担うことになりました。
Webサイトが急増してくると、Googleの台頭とともにSEOと呼ばれる検索エンジンにWEBサイトを最適化する操作が流行しはじめました。Flashは外部プラグインによって再生されるコンテンツであり、中身は図形とアニメーションのデータが主立っていたため、SEOという観点からは歓迎されなくなってきました。Flashコンテンツ自体のフォーマットが公開され、テキストデータの抽出は検索エンジンでも行われるようになりましたが、HTMLのような文章構造の記述がないので、やはり検索結果の上位に出現するためには効果が薄いと考えられるようになってきました。
これは、徐々に「脱Flash=HTML5」という様相を呈してきました。サードパーティのプラグインがなくともブラウザ単体で閲覧でき、一つの規格に従って実装すればどのブラウザでも同じように再生されることは、ユーザにとってもコンテンツ開発者にとっても理想的だと思います。ただし、HTML5は多方面で関係会社との調整が進まず、今(2011/3現在)も策定されていません。
逆にFlashコンテンツは多くのブラウザで画一的に動作するプラットフォームとしてまだまだ注目に値する技術として存続していました。しかし、ここに一石を投じたのがApple社でした。iPhoneの爆発的普及によって影響力を増したAppleは、携帯用ブラウザでのFlashの不採用を決めたばかりか、Flashをオーサリングツールとした携帯用アプリの制作も認めない体制を敷いています。これが現在のFlashの一番のウィークポイントです。
Appleの理屈としてはFlashコンテンツの再生には無駄が多く、携帯端末の電池を多く消耗するため、採用しえないということでした。確かに、Flashは機能が増える度にリッチなコンテンツとなり、いつしかPCへの要求が大きくなっていました。現在、AdobeではGPUやマルチコアCPUの利用によって携帯にも優しいコンテンツ再生に鋭意取り組み中のようです。
また、Googleの携帯OS「Android」の普及によって、iPhoneが「Flashの再生できない端末」という認知のされ方もされ始めてきているようです。複数の要因が重なって、Flashはまだ現役で活躍中です。
Flashでの3D表現
前述の通り、Flashはその生い立ちもあってか3D表現とは一定の距離を置いている期間が長かったように思います。ただし、ドロップシャドウやアルファチャンネルなど、CGとしての表現力は高いので、擬似的な3D表現力は十分に持っていました。確かFlash Playerのバージョン9あたりから空間を意識した表現の実装も可能になっていたと思います。
しかし、バリバリに立体オブジェクトを動かす場合、Flash単体での表現には限界がありました。ただ、FlashにはAction Scriptという独自の言語を使って、2Dのオブジェクトを操作する機能があり、この言語のバージョンが3になるとツールとしての扱いやすさが飛躍的に向上しました。(バージョン2までは理解のしやすさが主眼だったのかもしれませんが、バージョン3では突然実用性がまし、その分突き放されたと感じたユーザーも多かったようです。)そして他の言語にもあるような3DエンジンがActionScript用にも開発されました。
3Dエンジンにはいくつか種類が登場しましたが、Papervision3Dというエンジンが登場も早く多くのユーザを獲得しました。ただ、このエンジンは開発が停滞気味で現時点(2011/3)で未来がみえない状況です。
FlashのGPU支援を受けて、近日中にはMolehillというコードネームのプロジェクトが正式に採用されるとのことです。ハードを利用した3D描画のため、ポリゴンの描画数が段違いで多くなっているという話をききました。Flashによる3D表現はここに花咲くと思っています。このプロジェクトの成果として、GPUを利用するためのラッパAPIが提供されるとかなんとかで、中身はOpenGLがどうとかで、現在も調べ中なのでよくわかっていない部分も多いですが、Flashでの3Dコンテンツ開発には、結局余所のライブラリに依存する形態をとることが多くなると予想されています。何やら秘密主義的なライブラリもあるとかで、依存し過ぎるのも怖いところです。また、無用な機能でスピードが犠牲になってしまうのも残念なところです。そして、3Dエンジンの選択が表現の幅を狭めてしまうという懸念がやはり大きいです。
今回、Flashでの3D表現のことを調べてみようと思った動機は、面白いことができそうだけど人のフンドシで相撲を取り続けるのもつまんないかな、というところにあります。私自身はPapervision3DとJiglibという物理演算ライブラリを使ってコンテンツを作っていたことがあるので、その中身を眺めながら自前のライブラリを実装するのを目標にやっていきたいです。ものがものなので、途中で挫折する可能性の方が高いですが、ゆっくり勉強していきたいと思います。