- 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
ブックマークはこちらからどうぞ。