サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

次期Starling 1.6とSprite3D

ID: FN1410002 Product: Flash CC Platform: All Version: 11 and above/ActionScript 3.0

Gamuaのblogの2014年10月21日付記事「Sprite3D and What's Next」で、次期Starlingフレームワークについて、とくに新しいSprite3Dの説明がなされました。その中身をかいつまんでご紹介します。


01 Sprite3D

Starlingフレームワークは、つぎの正規リリースとなるバージョン1.6に向けて開発が進められています。新バージョンには、これまでどおりバグの修正や最適化が加えられます。さらに、これまで要望の多かった新たな機能が備わります。

それがSprite3Dクラスです。このクラスを用いれば、あらゆる表示オブジェクトを3次元座標空間で動かすことができます。つまり、真の遠近法が使えることを意味します。それは特別の効果というだけでなく、Starlingがこれまでできなかった新しい考え方が採入れられるのです。

実際に、この機能を用いてできることを紹介するビデオが用意されました(ビデオ001)。簡単な神経衰弱のゲームに、見栄えのする3次元の効果を加えています。

ビデオ001■Starling - Sprite3D(英語)

この機能はすでに直近の開発版には備わっています。いくつか説明を補いましょう。

まず、なぜ新たなクラスとして加えたのかということです。Flash 10がそうだったように、これまでのDisplayObjectに3次元のプロパティを加えることも考えられました。

けれど、核となるStarlingのエンジンは2次元なのです。これまでユーザーが書いてきたコードも2次元でしょう。AGALコードで独自の表示オブジェクトをつくっても同じです。3次元の論理にもとづいて別のコンテナに分けることで、古いコードを確実に動かせます。さらに大切なのは、新たなコードがこれまでより複雑にならないということです。オブジェクトはすべて単純で簡単な2次元のままだからです。違うのは、ただSprite3Dの助けを借りて、3次元空間の中を動かすことができるということだけです。

もちろん、平面のオブジェクトしか使えないという訳ではありません。たとえば、6つのSprite3Dの子オブジェクトをひとつの親Sprite3Dオブジェクトにまとめて立方体にすることもできます(図001)。

図001■6つの子Sprite3Dオブジェクトをひとつの親Sprite3Dオブジェクトに入れてつくった立方体

それでも、Starlingは3次元のエンジンではありません。そのため、つぎのようないくつかの制約があります。

  • Starlingは相変わらず奥行きの判定をしません(重なりの表示は子オブジェクトが加えられた順序にしたがいます)。
  • 今のところ、Sprite3Dひとつにつき1回のドローコールを生じます(最終リリースでは、ひとつの3次元変換されたSprite3Dに替え、問題の多くは軽減される予定です)。
  • Sprite3Dはフラット化できません(Sprite3Dの中の子オブジェクトはできます)。
  • 最上位のSprite3Dに掛けたフィルタはキャッシュできません(キャッシュしないフィルタを掛けることはできます)。

02 他の変更

Starling 1.6は、他にも内部的な強化が施されています。

たとえば、最近のFlash / AIR 15では、RenderTexturesを使うための制限が減りました。そのため、Starlingはフィルタを入れ子にできるようになります。たとえば、フィルタを全画面に掛けたシーンの中に、フィルタを加えたオブジェクトが置けます。

さらにこの強化により、RenderTexturesが占め続けるメモリを半分に減らせました。なぜなら、二重にバッファをもたずに済むからです。それはつまり、そのようなテクスチャへの描画が速くなることを意味します(ドローコールがひとつ減ります)。

その他の強化としては、AssetManagerが複数素材を平行して読込めるようになり、ロード時間が大幅に減ります。また、改善されたButtonクラスには、オーバーと非アクティブの状態が加わりました。より詳しい変更点は、新バージョンが公開される4ないし6週間後に明らかになります。


03 2015年ロードマップ

本リリースの後は、つぎのような機能が考えられています。

  • ステンシルマスク(高速な任意形状のマスク)
  • FragmentFilterチェーン(ひとつの表示オブジェクトに複数のフィルタを加える)
  • カスタムバッチ

最後の機能は、StarlingのAPIの変更がともなうかもしれません。その場合には、つぎのメジャーバージョンStarling 2.0で備わることになるでしょう。これは、ユーザーがレンダラを独自に書き、カスタム表示オブジェクトも含めて、効率的にバッチできる機能です。



作成者: 野中文雄
作成日: 2014年10月22日


Copyright © 2001-2014 Fumio Nonaka.  All rights reserved.