- 2009年11月16日 (月)

- Tweet
Alternativa3Dを試してみる Part.07 : カメラをぶらして残像効果
Flash の 3D エンジンの一つである Alternativa3D (オルタナティバ 3D)を試してみるシリーズ第7回。3Dでのモーションブラーを作ってみました。次のデモは、ドラッグ&ドロップでカメラの視点を動かすことができ、左上のCaptureボタンで撮影・保存することができます。保存した画像は、モーションブラーが適用された写真となっています。
※特定の角度でバグりますが、深度の調整していないだけなので、ご容赦。
モーションブラー
カメラの位置を微振動させて、都度キャプチャをとり透明度をずらしながらBitmapDataを重ね合わせるという方法で実現してみました。この技術手法はAlternativa3DでなくてもPapervision3DでもAway3Dでも同じようにできますが、流行らせたいこともありせっかくなのでAlternativa3Dで作ってみました。
下記の左上側がオリジナルで、右下側がモーションブラーを適用して保存した画像になります。(クリックで拡大)
ソースコードでいうと次のような箇所。
// ----------------------------------------------
// Capture
// ----------------------------------------------
private function capture(e:Event):void{
var o:Point3D = new Point3D(camera.x, camera.y, camera.z);
var bd1:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
bd1.draw(view);
scene.root.removeChild(loader1.content);
var bds:Vector.<BitmapData> = new Vector.<BitmapData>();
for (var i:int = 0; i < 10; i++) {
camera.coords = getRandomPos(o);
scene.calculate();
var bd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
bd.draw(view);
//bd.applyFilter(bd, bd.rect, new Point, new BlurFilter(2, 2, 1));
bds.push(bd);
}
bds.fixed = true;
// make pictur
var master:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFF000000);
master.lock();
master.copyPixels(bd1, bd1.rect, new Point());
for (i = 0; i < bds.length; i++) {
master.copyPixels(bds[i], bds[i].rect, new Point(), new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x20000000), new Point, true);
}
master.unlock();
var enc:PNGEncoder = new PNGEncoder();
var fileRef:FileReference = new FileReference();
fileRef.save(enc.encode(master), "capture.png");
// reset
camera.coords = o;
scene.root.addChild(loader1.content);
}
private function getRandomPos(o:Point3D):Point3D {
var len:Number = 15;
return new Point3D(
o.x + len * (Math.random() - 0.5),
o.y + len * (Math.random() - 0.5),
o.z + len * (Math.random() - 0.5)
);
}
※3Dデータはnote.xさんのところのズサさんご提供のものを使用しています。
http://blog.r3c7.net/?p=121
※ColladaファイルをBlenderで3DSファイルに変換したものを使用
















投稿者 : 池田 泰延
BookMark
ブックマークはこちらからどうぞ。