2012 (2013?) 年 Flash 予報 - 機能編 その 2

Adobe MAX 20111 から Falsh 関連情報をまとめるシリーズの 3 回目です。 (前回:機能編 その 1前々回:言語編

今回は、新しく追加が検討されている機能の紹介の続きです。毎度ながら、以下の項目が 2012 年中に公開されるかどうかは保証の限りではありません。また、永遠に出てこないかもしれません。その点ご了解の上お読み下さい。

BitmapData の新機能

デバイスが普及したことなどにより、Flash 制作でもビットマップを利用する機会が増えてきたようです。ということで Flash Professional CS 5.5 では、シンボルをビットマップとして書き出すオプションなどが追加されたりしました。

さらに、Flash Player 11 から Stage3D が使えるようになったことで、今後はぐっとビットマップを操うケースが増えそうです。そうすると、効率的にビットマップを扱えること、高速にビットマップ操作のできることが、より重要になってきます。

そのため、ビットマップ関連の機能追加がいくつか予定されているようです。まず、

  • BitmapData.draw2()

は、従来の BitmapData.draw() の最後に引数を 1 つ足して、ビットマップの質を指定できるようにしたものです。指定できる値は、low, medium, high, best の 4 つのようです。 (おそらく StageQuality と同じ)

この機能追加により、実行時にビットマップデータを生成する際、1 つ 1 つ、データの品質と生成処理の負荷のバランスを制御できるようになります。今までは、ステージ全体に値を設定することしかできませんでした。

次に、

  • BitmapData.compress()

は、ビットマップデータを特定のフォーマットで圧縮する、新しいメソッドです。

指定できる形式は、PNG, JPEG, JPEG-XR の 3 つがあるようです。計算負荷が低く、画像の質が比較的高く、しかもファイルサイズの小さい JPEG-XR がお勧めだそうです。

いずれにせよ、Flash Player ネイティブの API なので、ActionScript で記述されたライブラリと比べると、相当 (JPEG で 5 倍以上) 処理が高速化されるようです。

ビットマップ操作の効率化

他にもいくつか、ビットマップの操作に便利な API が追加される予定です。

  • BitmapData.flip(mode:String):void
    水平、垂直、あるいは任意の角度の軸で画像を回転させるメソッド
  • BitmapData.resize(new_width:int, new_height:int, mode:String):void
    ビットマップデータの大きさを変更するメソッドで、最後の引数に計算に使用するアルゴリズムを指定できる
  • BitmapData.mipmap():void
    MIP マップを生成するもので、Stage3D ではしばしば必要になることからの追加
  • BitmapData.grey(format:String, colorTransform:ColorTransform):void
    エッジ検出したいとき等にビットマップをグレイスケールに変換できるメソッド
  • BitmapData.crop(rect:Rectangle):void
    ビットマップの一部を切り抜くメソッド

以上は、既存のメソッドの組み合せても実現可能ではあるものの、処理に必要とされるメモリや CPU の最適化を目的として追加を考えているメソッドだそうです。

それから、下の 2 つは、既存の ByteArray オブジェクトや Vector オブジェクトに、ビットマップデータをコピーするメソッドです。

  • BitmapData.copyToByteArray(rect:Rectangle, destination:ByteArray):void
  • BitmapData.copyToVector(rect:Rectangle, destination:Vector.<uint>):void

現在提供されている API では、ビットマップデータを保存しようとすると、どんどん新しいオブジェクトを生成することになります。これらのオブジェクトは、たいてい大きな領域を保持し、また中間利用が主目的のため 1 度しか使われないことが多いという、ガーベジコレクションの負荷を高める原因になりやすい性質を持っています。

そこで、既存のオブジェクトにデータをコピーする手段を提供して、無駄なメモリの割り当てを極力減らせるようにしたいそうです。大きなメモリ領域の割り当てと解放の繰り返しは負荷の高い処理なので、ちゃんと使うと効果は高そうですね。

ビットマップ関連その他

ビットマップデータの階調や輪郭をはっきりさせるためのフィルタも追加されます。

  • BitmapData.integral()
  • BitmapData.sobel()
  • BitmapData.laplacian()
  • BitmapData.canny()

これらも、省エネ & 高速を実現するための追加だそうです。

そして、新しいデータ型 float の追加があります。

AS3 には Number という 64 ビットの浮動小数点型が定義されていますが、一般的に GPU で用いられている形式は 32 ビットの浮動小数点数です。そのため、Stage3D を利用する際は、内部的にデータ型の変換が行われていました。

float 型が導入されることで、この変換を不要にすることができます。つまり、余分な負荷が無くなります。来年登場が予告されていた Molehill 2 では、おそらく API の float 対応が行われることでしょう。そうすると、Matrix3D や Vector3D (せっかく途中で追加されたのに) は、だんだん使われなくなっていくのかもしれません。

ビットマップ関連が続きましたが、最後に、新しい描画クオリティ追加の件です。これは、現状の再高品質である best の更に上を用意するというもので、Photoshop に比肩しうる (?) 品質でベクター画像をビットマップ化できるようです。

ただし、使えるのはオーサリング環境からのみだそうです。パブリッシュ時に高品質のビットマップを生成したいときに選択するもの、という位置づけになるようです。 (Reuben で追加されるスプライトシート書き出しなどで利用?)

新最高品質でのブレンドの際は、色を判定するために色空間のリニア変換まで行うという話なので、Flash Player では使えないというのもまあ納得です。

TextRegion

ビットマップ以外で、大きな機能追加を 1 つ。新しいテキストパッケージの追加が予定されているそうです。正式名称かどうかは不明ですが、TextRegion という名前で説明されていました。TextField でもない、FTE でもない、TLF でもない新しいテキスト API だそうです。

あまり具体的な説明はなかったのですが、TextRegion が考えられた背景には、TextField では機能が足りないとしても、TLF はフレームワークのサイズやパフォーマンスに難点があるし、FTE は低レベル API のため何らかのフレームワークを構築しないと実用的には使えない、という認識があったことが想像されます。

とすると TextRegion は、TLF のような SWC ではなく、Flash Player ネイティブの API として提供されるはずです。そして、TextFiled よりも高速で高機能 (HTML/CSS サポートが改善されるとの話) な設計になるでしょう (期待も込めて)。

こんどこそ、クラシックテキストを置き換えるものになるでしょうか? テキスト関連の機能だけに、日本語のサポート辺りも気になるところです。

TextRegion が実際に使えるようになったとしても、TFL は、InDesign との互換性という強みがあるので、今後も電子出版系のソリューションを中心に使われ続けることと思います。

開発環境編に続きます。

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/214

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261