「Adobe MAX Japan 2009」詳細レポート

2日目(その1)グレッグ・ミシェリ氏による基調講演,中村勇吾氏「映像とプログラミング」,城戸雅行氏「[Flash]アイデアの実装:コントロールと最適化」

この記事を読むのに必要な時間:およそ 5 分

[Flash]アイデアの実装:コントロールと最適化

Roxik 城戸雅行氏は,ActionScript3.0界でもっとも注目されているクリエーターの一人だ。Roxikを一人で立ち上げ,その独創的かつ効果的なActionScriptコーディング手法を紹介するこのセッションは,ActionScriptエンジニアにはたまらないものとなったに違いない。もちろん,私もその一人なのだが。

写真11 Roxik 城戸雅行氏

写真11 Roxik 城戸雅行氏

視点から見たムービークリップの制御

「頭に描いた動きを,実際に制作するのは難しい,今日はそんな糸口になれば」と城戸氏は語る。⁠3D空間では,プロパティと空間内の実際の座標は異なっている。それらを把握していかなければならない」と述べ,3D空間での制御は考え方によっては難しいことを言及した。

城戸氏はもう少し簡単な例として,Flashにおける2D空間上で複数のオブジェクトがスライドする場合の通常考え得る例として,オブジェクト一つ一つを動かす方法,オブジェクトをコンテナに内包する方法を紹介したが,城戸氏は全く別の視点という方法でアプローチするのが理想という。

写真12 3D空間でのオブジェクト制御には,視点という考え方を導入する

写真12 3D空間でのオブジェクト制御には,視点という考え方を導入する

POINT-RENDER

城戸氏は「直接,X・Y・Rotationなどのそのようなプロパティを計算して,そのまま表示するのではなく,そのようなプロパティの値は最終的にムービークリップが画面のどこに表示されるか,その時にしか扱わないようにする。そのための情報だというふうに考える」と述べ,それにはポイントとレンダリングという概念を取り入れ,頂点データ(=ポイント)をつくり,変数に保持,そして計算しておき,最終的にムービークリップのプロパティに割り当てる(=レンダリング)ことだという。

城戸氏は,Renderの考え方を実装したActionScriptコーディングをライブで実演した。⁠モーションをつける部分と,レンダリングする部分を分け,レンダリングエンジンには流用できるものを定義する。モーションエンジンには視点や頂点データを操作する」と述べ,⁠一度作ってしまえばそれからはいつでも流用できる」と語った。

写真13 ⁠自転しているものを見る」という視点を実際にデモしたもの

写真13 「自転しているものを見る」という視点を実際にデモしたもの

頂点

頂点を扱えるようになれば,さまざまな処理が可能になるという。⁠頂点を動かして何を表示するのか,ムービークリップを配置するのか,はたまたラインを張るのか,それともテクスチャーを描画するのか。CS4では,ボーンが実装されたが,Flash Player 9でも,頂点を使うことで自分でボーンをプログラミングすることもできる」と述べた。

「自分でプログラミングすることで中身の仕組みがわかりやすくなる」として,頂点を扱ったプログラミングを推奨した。さらに,観覧車とゴンドラのSWFを使って頂点のメリットを説明。⁠コンテナを使用した方法では,コンテナの状態を影響を受けてしまう。サイズが変われば,コンテナーのサイズも変わってしまう。頂点を扱えば,それを自由自在に制御できる。0からムービークリップが自動的に制御している部分を自分で作ること。そうすれば内部が見えて,よくわかる」と語った。

写真14 デモが行われた,観覧車とゴンドラの例。頂点を扱うことで,ゴンドラの扱いが容易になる

写真14 デモが行われた,観覧車とゴンドラの例

OPTIMIZE

城戸氏は制作の中で最適化というフェースに特に時間をかけるという。氏にとって最適化は「もし,CPUの負荷処理を20%落とすことができれば,その浮いた分,ディティールを詰めることもできるし,もしくは古い環境,パフォーマンスの低いマシンで快適にみてもらえる」とし,最適化の重要性を語った。

「とにかく動かすというのは簡単だが,まだまだ古い環境の人はたくさんいるのでできるだけ快適に見てもらいたい。そのために最適化を行っていくことが大切だ」と述べた。

以下は,城戸氏が最適化の主なコツとして紹介したもの。

  • 見えない部分は計算しない:城戸氏が制作したエコだ動物園ではこの最適化を徹底しているという。3Dのレンダリングには非常に大きな負荷が掛かるため,オブジェクトを細かく分断し,表示されうるであろう時にのみ,処理を加えているという。これも,レンダリングの概念に基づいた物だとしている。
  • ビットマップ化する:ユーザーが描いた人形が踊り出す,pictapsを例に挙げ,パターン化できるものは,すべての動きを初期化の段階でビットマップ化しておくことで,ひとつひとつのビットマップが重くとも,生成するよりかは参照する方が早く,素早く処理できるとしている。中身が変わらないのであれば配列にビットマップのパターンをいれておき,入れ替えるのが有効だとした。
  • 補完を使う:3Dの計算において,シメントリーのオブジェクトにおける座標計算等をおこなう場合には,すべての座標を計算するのではなく,一つの計算が終わった段階で結果を反転させることで正反対の値を得ることができ,処理を大幅に削減できるとした。

写真15 エコだ動物園では,見えない部分はレンダリングの計算を行っていない

写真15 エコだ動物園では,見えない部分はレンダリングの計算を行っていない

写真16 ビットマップパターンを利用したほうがよい

写真16 pictapsでは,ビットマップパターンを利用している

最後に,城戸氏は「技術を追求すると,そこからさまざまなアイデアに行き着くことが多いもので,これからもお互いが技術を追求し,素敵な作品をつくっていきましょう」会場に語りかけた。

城戸氏のセッションは先進的な技術を活用する非常に実用的な参考となるセッションだったといえるだろう。技術を追求することに,まい進していきたいものだ。

著者プロフィール

加茂雄亮(かもゆうすけ)

株式会社ロクナナにて,ActionScriptを伴うFlashコンテンツや,AjaxコンテンツなどRIA開発に従事するフロントエンドエンジニア。テクニカルライターとしての一面を持ち,WEB・雑誌・書籍、媒体問わず執筆。また,イベントやセミナーでの講演など,精力的に活動している。

URLhttp://log.xingxx.com/
URLhttp://rokunana.com/