前回にひきつづき Blender とAlternativa3D を試します。 今回は、前回のモデルに環境マテリアル(EnvironmentMaterial)を適用して、メタリックな質感にしてみます。 [SWF] DEMO : Metal Slime 今回も、参考にした書籍はStage3Dプログラミング。 [1] まずは環境マップ の作成 まずは、バックグラウンド兼キャラクターに写り込ませる環境マップを作成します。 ※これはStage3Dプログラミングに入っていたサンプルそのまま。 // 環境マップ用のリソースを作る var environmentMap :BitmapCubeTextureResource= new BitmapCubeTextureResource( new LEFT().bitmapData , new RIGHT().bitmapData , new BACK().
flash上の任意のDisplayObjectを Bitmap化して、ByteArrayにし、base64変換し、 その文字列をExternalInterface経由でjavascriptに受け渡して、 html上に表示するサンプルを作って見ました。 [sample] flashでBitmapDataをbase64エンコードし、js経由でhtmlに表示する どんな場合に有効な手法? 自分もいまいち使いどころがぴんと来ませんが、 jsでは生成できないようなイメージを動的にflashで作成して、htmlに渡すなど。でしょうか。 例えば、以前 jsdo.it で作成したトランスメタルジェネレータ HTML5版では、 flashでサウンドの波形画像を作成し、html上に表示しています。 Trance Metal Generator HTML5 α ver ( トランスメタルジェネレーター
dispose() とか unload() とかってあるじゃん。そうそう、アレだよアレ。BitmapData とか Loader とかに用意されてる、破棄することを目的としたメソッドね。これをちゃんと呼ばないとメモリリークする—ってのは半分嘘で、実際には GC 対象になったうえで GC が発動すればきちんとメモリは開放されるんだけれども、GC が発動する頻度が高くないので巨大なリソースなんかを使った場合にはいつまでもメモリを占有し続けることがあって問題になる (たぶんね) —ので呼ばなきゃいけないんだけど、いつ呼べばいいの?って思ったこと無いですか? いつってそりゃ、「不要になったら」ですよ。はい、この話はおしまい。…じゃなくてですね、意外とこの問題根が深い気がするんですけど、どう思いますか?というのも、「不要」ってどう判断するんでしょう?もう少し言うと、それを「誰が責任を持って」行うんで
12pxくらいのダイナミックテキストにアンチエイリアスをかけたいんだけど、フォント埋め込むのも容量的に現実的じゃないしなあってときに使えそうなネタを思いついた。 左の大きい方のテキストを変更してみてね。 左の大きいテキストをBitmapDataにして、スムージングをかけて縮小して左側に貼っているんだけど、結構いい感じ。 以下がソースです。 //actionscript2.0 import flash.display.BitmapData; import flash.filters.GlowFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.geom.Transform; var txt:TextField; var bm
注意) レンダリングの高速化とは別レイヤーの話になります。 去年の記事でAPIレベルの考察はしていますが、今回はもう少し踏み込んで考えてみます。 get/setVector() vs get/setPixels() その前に BitmapData.getVector() と BitmapData.getPixels() のシグネチャを再掲。 両APIともピクセルデータを一次元のコンテナに詰め込むメソッドです。 getPixels(rect:Rectangle):ByteArray ピクセルデータの矩形領域からバイト配列を生成します。 getVector(rect:Rectangle):Vector.<uint> ピクセルデータの矩形領域からベクター配列を生成します。 速度を比較すると get/setVector() の方が高速です。 が、 重要なのはAPIの実行速度ではなく、 「取得したデ
Flashでゲームなどを作る時に、動作の重さは悩みの種です。 軽い容量となめらかな拡大縮小が長所のFlashなのですが、その分、描画速度は犠牲になっていて、フルフラッシュサイトでCPUをガンガン食われてしまった経験もあると思います。 この重さを解決する方法の1つとして、BitmapDataを使うというものがあります。 これは素材をgifやjpegにする、という話ではなく、表示部分の扱いをビットマップデータにしてしまうというものです。 たとえ素材がgifでも、MovieClipとかに入れてたくさん表示しているととたんに重くなってしまいます。 これをBitmapDataとBitmapクラスによる表示に切り替えるだけで、軽くできることがよくあります。 ちょっとサンプルで体感してもらいましょう。 wonderflにはこういう実験作品があるのでちょっと拝借。(リンク先の画面右側の三角マークを押せばサ
Just another WordPress weblog勢いでドットフォント作ったのでクラス化しました。 需要があるところが限定的ですが、自分が使いたいのでまとめてSparkProjectのほうへコミットしました → DotFont 試しにasDocもつけてみたので参考になればと思います。 こんな感じに書くと、BitmapData(Shape)にタララーと文字を書き込んでいってくれます。 フォントデータは.as化しているので、画像の読み込みとかもしないので手軽に使えるのが特徴です。 import flash.display.*; import whirlpower.dotfont.*; import whirlpower.dotfont.fonts.*; public class Main extends Sprite { public function Main():void {
デザインパターンをはじめて読んだのは、結城浩さんの「Java言語で学ぶデザインパターン入門」でした。 読んだ当時もっとも有用性がわからなかったのですが、最近になって重要さが身にしみてきたパターンが「FlyWeightパターン」です。 Flasherにイメージしやすいように簡単に言うと、たとえば同じ外部画像ファイルなどを何回も表示するときに、一個のBitmapDataをどこかに保持しておいて、使いまわすといったようなつくりのことです。 AS3以降、BitmapおよびBitmapDataクラスをよく使うことが増えましたが、Bitmapの中身のBitmapDataは使いまわせるのはご存知でしょうか? いわゆるビットマップ操作を行う場合はコピーして使うと思いますが、フォトビューワーやスキンなどそのまま表示するための画像であれば、複数のBitmapで単一のBitmapDataを利用することができます
いつぞやのパーティクル祭がまた進化してフォーク回数が20回に迫ろうとしていましたので、再度フォークしてみて上のデモを作ってみました。bkzenさんとkeno42さん、nemu90kWwさんによって、次々と高速化手法が導入されていてたので勉強になりました。簡単ですが、どのように進化したのかをまとめてみました。 元ネタ BitmapDataで配列に格納すると高速化するよ そもそも角度調整がおかしかったのを修正 forked from: BitmapDataで配列に格納すると高速化するよ(角度修正) 速度に応じて色と透明度が変化 角度計算修正、色と透明度もいれてみた。重ね順ソートが重い。 重ね順の高速化手法 色と透明度もいれてみた。速度向上したらいいなばーじょん forked from: 色と透明度もいれてみた。こんなのどうだろバージョン 速度比較したら一個前の方法が速かったっぽい ちょっと変え
ActionScript 3.0 : Graphicsで描いた絵をBitmapDataにコピーする Graphicsを使ってSpriteに線や円を描くことできますが、BitmapDataクラスのdrawメソッドを使うと、その描いた絵をビットマップデータに写すことできます。(正確にはSpriteだけではなくIBitmapDrawableを実装しているものです) 実は、Graphicsで描いたものだけではなくSpriteにaddChildされたTextField等も一緒にコピーされます。 下のFlashはドットに変換されたことがわかりやすいように、縦横をそれぞれ2倍に拡大しています。 ※ このFlashを見るにはFlash Player 9が必要です。 package { import flash.display.*; import flash.text.*; public class
FLASH8が出て少しした頃、Blurフィルタを用いて、ブラーインの演出というものが流行りましたね。 最近BitmapDataクラスを用いた、モザイクインをよく見かけるようになってきたので、汎用できるようにスクリプティングしてみました。 個々にて設定しやすいように心掛けてスクリプトを書いてあります。このページの最下部にソースを置いておきます。 お好みで、初期設定の値などを、引数にしてしまうのもいいと思います。 mozaicIn(); function mozaicIn():Void{ //================================================================== //初期設定 //================================================================== var mozaic
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く