※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


FORKED
  1. // forked from sake's PV3Dその3
  2. /*
  3.     Vectorvision3DがPV3Dに統合されたらしいと。
  4.     ただ、Word3D → text3Dと、VectorShapeMaterial → Letter3DMaterial となってる。
  5.     ここ以外はたぶん同じ。
  6. */
  7. package
  8. {
  9.     import caurina.transitions.Tweener;
  10.     import flash.display.Sprite;
  11.     import flash.events.Event;
  12.     import flash.filters.BlurFilter;
  13.     import flash.utils.setInterval;
  14.     import org.papervision3d.cameras.Camera3D;
  15.     import org.papervision3d.materials.special.Letter3DMaterial;
  16.     import org.papervision3d.objects.DisplayObject3D;
  17.     import org.papervision3d.render.BasicRenderEngine;
  18.     import org.papervision3d.scenes.Scene3D;
  19.     import org.papervision3d.typography.Text3D;
  20.     import org.papervision3d.typography.fonts.HelveticaBold;
  21.     import org.papervision3d.view.Viewport3D;
  22.     import org.papervision3d.view.layer.ViewportLayer;
  23.     [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
  24.     public class PV3D_sample03 extends Sprite
  25.     {
  26.         private var container:Sprite;
  27.         private var viewport:Viewport3D;
  28.         private var scene:Scene3D;
  29.         private var camera:Camera3D;
  30.         private var render:BasicRenderEngine;
  31.         private var rootNode:DisplayObject3D;
  32.         private var words1:Text3D;
  33.         private var words2:Text3D;
  34.         private var words3:Text3D;
  35.         private var theta:Number;
  36.         private var delayTime:Number;
  37.         private var WordMoveType:Number;
  38.         private const zoom:Number=20;
  39.         private const focus:Number=30;
  40.         private const distance:Number=600;
  41.         public function PV3D_sample03()
  42.         {
  43.             theta=0;
  44.             WordMoveType=0;
  45.             delayTime=0;
  46.             container=new Sprite();
  47.             addChild(container);
  48.             container.x=stage.stageWidth / 2;
  49.             container.y=stage.stageHeight / 2;
  50.             viewport=new Viewport3D(00truetrue);
  51.             scene=new Scene3D();
  52.             camera=new Camera3D();
  53.             render=new BasicRenderEngine();
  54.             rootNode=scene.addChild(new DisplayObject3D("rootNode"));
  55.             addChild(viewport);
  56.             camera.target=DisplayObject3D.ZERO;
  57.             camera.zoom=zoom;
  58.             camera.focus=focus;
  59.             var mat:Letter3DMaterial=new Letter3DMaterial();
  60.             mat.fillColor=0xFFFFFF;
  61.             mat.doubleSided=true;
  62.             mat.doubleSided=mat.interactive=true;
  63.             words1=new Text3D("Sample of Papervision3D"new HelveticaBold(), mat);
  64.             words2=new Text3D("Welcome to PV3D !!!!!!"new HelveticaBold(), mat);
  65.             words3=new Text3D("YEAAAAAA!!!!HOOOOOOOOO!!!"new HelveticaBold(), mat);
  66.             rootNode.addChild(words1);
  67.             rootNode.addChild(words2);
  68.             rootNode.addChild(words3);
  69.             words1.y=50;
  70.             words2.y=0;
  71.             words3.y=-50;
  72.             words1.scale=words2.scale=words3.scale=0.4;
  73.             dispersionWords(words1);
  74.             dispersionWords(words2);
  75.             dispersionWords(words3);
  76.             setInterval(moveWords, 10000);
  77.             addEventListener(Event.ENTER_FRAME, onFrame);
  78.         }
  79.         private function dispersionWords(words:Text3D):void
  80.         {
  81.             for each(var word:DisplayObject3D in words.letters)
  82.             {
  83.                 word.extra={x:word.x, y:word.y, z:word.z};
  84.                 word.x=word.y=word.z=word.scale=0;
  85.                 Tweener.addTween(word, {scale:1, x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:3, delay:2 * Math.random() + 1});
  86.             }
  87.         }
  88.         private function moveWords():void
  89.         {
  90.             if (WordMoveType % 2 == 0)
  91.             {
  92.                 resetWords(words1);
  93.                 resetWords(words2);
  94.                 resetWords(words3);
  95.                 delayTime=0;
  96.                 WordMoveType++;
  97.             }
  98.             else
  99.             {
  100.                 breakWords(words1);
  101.                 breakWords(words2);
  102.                 breakWords(words3);
  103.                 WordMoveType++;
  104.             }
  105.         }
  106.         private function resetWords(words:Text3D):void
  107.         {
  108.             for each(var word:DisplayObject3D in words.letters)
  109.             {
  110.                 Tweener.addTween(word, {x:word.extra.x, y:word.extra.y, z:word.extra.z, rotationX:0, rotationY:0, rotationZ:0, time:1, transition:"easeOutBounce", delay:delayTime});
  111.                 Tweener.addTween(word, {rotationY:720, time:1, delay:delayTime + 2});
  112.                 delayTime+=0.1;
  113.             }
  114.         }
  115.         private function breakWords(words:Text3D):void
  116.         {
  117.             for each(var word:DisplayObject3D in words.letters)
  118.             {
  119.                 Tweener.addTween(word, {x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:4, delay:3 * Math.random()});
  120.             }
  121.         }
  122.         private function onFrame(e:Event):void
  123.         {
  124.             camera.x=distance * Math.sin(theta * Math.PI / 180);
  125.             camera.z=distance * Math.cos(theta * Math.PI / 180);
  126.             theta+=0.2;
  127.             setBlur(words1);
  128.             setBlur(words2);
  129.             render.renderScene(scene, camera, viewport);
  130.         }
  131.         private function DistanceFromCamera(obj:DisplayObject3D):Number
  132.         {
  133.             var vecX:Number=obj.sceneX - camera.x;
  134.             var vecY:Number=obj.sceneY - camera.y;
  135.             var vecZ:Number=obj.sceneZ - camera.z;
  136.             return Math.sqrt((vecX * vecX) + (vecY * vecY) + (vecZ * vecZ));
  137.         }
  138.         private function setBlur(words:Text3D):void
  139.         {
  140.             for each(var word:DisplayObject3D in words.letters)
  141.             {
  142.                 var vpl:ViewportLayer=word.createViewportLayer(viewport, true);
  143.                 var d:Number=Math.abs(DistanceFromCamera(word) - distance) / 40;
  144.                 vpl.filters=[new BlurFilter(d, d, 1)];
  145.             }
  146.         }
  147.     }
  148. }
noswf
  1. // forked from sake's PV3Dその3
  2. /*
  3.     Vectorvision3DがPV3Dに統合されたらしいと。
  4.     ただ、Word3D → text3Dと、VectorShapeMaterial → Letter3DMaterial となってる。
  5.     ここ以外はたぶん同じ。
  6. */
  7. package
  8. {
  9.     import caurina.transitions.Tweener;
  10.     import flash.display.Sprite;
  11.     import flash.events.Event;
  12.     import flash.filters.BlurFilter;
  13.     import flash.utils.setInterval;
  14.     import org.papervision3d.cameras.Camera3D;
  15.     import org.papervision3d.materials.special.Letter3DMaterial;
  16.     import org.papervision3d.objects.DisplayObject3D;
  17.     import org.papervision3d.render.BasicRenderEngine;
  18.     import org.papervision3d.scenes.Scene3D;
  19.     import org.papervision3d.typography.Text3D;
  20.     import org.papervision3d.typography.fonts.HelveticaBold;
  21.     import org.papervision3d.view.Viewport3D;
  22.     import org.papervision3d.view.layer.ViewportLayer;
  23.     [SWF(width="500", height="500", backgroundColor="0x000000", frameRate="30")]
  24.     public class PV3D_sample03 extends Sprite
  25.     {
  26.         private var container:Sprite;
  27.         private var viewport:Viewport3D;
  28.         private var scene:Scene3D;
  29.         private var camera:Camera3D;
  30.         private var render:BasicRenderEngine;
  31.         private var rootNode:DisplayObject3D;
  32.         private var words1:Text3D;
  33.         private var words2:Text3D;
  34.         
  35.         private var theta:Number;
  36.         private var delayTime:Number;
  37.         private var WordMoveType:Number;
  38.         private const zoom:Number=20;
  39.         private const focus:Number=30;
  40.         private const distance:Number=600;
  41.         public function PV3D_sample03()
  42.         {
  43.             theta=0;
  44.             WordMoveType=0;
  45.             delayTime=0;
  46.             container=new Sprite();
  47.             addChild(container);
  48.             container.x=stage.stageWidth / 2;
  49.             container.y=stage.stageHeight / 2;
  50.             viewport=new Viewport3D(00truetrue);
  51.             scene=new Scene3D();
  52.             camera=new Camera3D();
  53.             render=new BasicRenderEngine();
  54.             rootNode=scene.addChild(new DisplayObject3D("rootNode"));
  55.             addChild(viewport);
  56.             camera.target=DisplayObject3D.ZERO;
  57.             camera.zoom=zoom;
  58.             camera.focus=focus;
  59.             var mat:Letter3DMaterial=new Letter3DMaterial();
  60.             mat.fillColor=0xFFFFFF;
  61.             mat.doubleSided=true;
  62.             mat.doubleSided=mat.interactive=true;
  63.             words1=new Text3D("simurai likes"new HelveticaBold(), mat);
  64.             words2=new Text3D("PaperVision 3D"new HelveticaBold(), mat);
  65.             
  66.             rootNode.addChild(words1);
  67.             rootNode.addChild(words2);
  68.             
  69.             words1.y=25;
  70.             words2.y=-25;
  71.             
  72.             words1.scale = words2.scale = 0.4;
  73.             dispersionWords(words1);
  74.             dispersionWords(words2);
  75.             setInterval(moveWords, 10000);
  76.             addEventListener(Event.ENTER_FRAME, onFrame);
  77.         }
  78.         private function dispersionWords(words:Text3D):void
  79.         {
  80.             for each(var word:DisplayObject3D in words.letters)
  81.             {
  82.                 word.extra={x:word.x, y:word.y, z:word.z};
  83.                 word.x=word.y=word.z=word.scale=0;
  84.                 Tweener.addTween(word, {scale:1, x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:3, delay:2 * Math.random() + 1});
  85.             }
  86.         }
  87.         private function moveWords():void
  88.         {
  89.             if (WordMoveType % 2 == 0)
  90.             {
  91.                 resetWords(words1);
  92.                 resetWords(words2);
  93.                 delayTime=0;
  94.                 WordMoveType++;
  95.             }
  96.             else
  97.             {
  98.                 breakWords(words1);
  99.                 breakWords(words2);
  100.                 WordMoveType++;
  101.             }
  102.         }
  103.         private function resetWords(words:Text3D):void
  104.         {
  105.             for each(var word:DisplayObject3D in words.letters)
  106.             {
  107.                 Tweener.addTween(word, {x:word.extra.x, y:word.extra.y, z:word.extra.z, rotationX:0, rotationY:0, rotationZ:0, time:1, transition:"easeOutBounce", delay:delayTime});
  108.                 Tweener.addTween(word, {rotationY:720, time:1, delay:delayTime + 2});
  109.                 delayTime+=0.1;
  110.             }
  111.         }
  112.         private function breakWords(words:Text3D):void
  113.         {
  114.             for each(var word:DisplayObject3D in words.letters)
  115.             {
  116.                 
  117.                 Tweener.addTween(word, {x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:4, delay:3 * Math.random()});
  118.             }
  119.         }
  120.         private function onFrame(e:Event):void
  121.         {
  122.             camera.x=distance * Math.sin(theta * Math.PI / 180);
  123.             camera.z=distance * Math.cos(theta * Math.PI / 180);
  124.             theta+=0.2;
  125.             setBlur(words1);
  126.             setBlur(words2);
  127.             render.renderScene(scene, camera, viewport);
  128.         }
  129.         private function DistanceFromCamera(obj:DisplayObject3D):Number
  130.         {
  131.             var vecX:Number=obj.sceneX - camera.x;
  132.             var vecY:Number=obj.sceneY - camera.y;
  133.             var vecZ:Number=obj.sceneZ - camera.z;
  134.             return Math.sqrt((vecX * vecX) + (vecY * vecY) + (vecZ * vecZ));
  135.         }
  136.         private function setBlur(words:Text3D):void
  137.         {
  138.             for each(var word:DisplayObject3D in words.letters)
  139.             {
  140.                 var vpl:ViewportLayer=word.createViewportLayer(viewport, true);
  141.                 var d:Number=Math.abs(DistanceFromCamera(word) - distance) / 40;
  142.                 vpl.filters=[new BlurFilter(d, d, 1)];
  143.             }
  144.         }
  145.     }
  146. }
noswf
  1. // forked from sake's PV3Dその3
  2. /*
  3.     Vectorvision3DがPV3Dに統合されたらしいと。
  4.     ただ、Word3D → text3Dと、VectorShapeMaterial → Letter3DMaterial となってる。
  5.     ここ以外はたぶん同じ。
  6. */
  7. /*
  8.     初心者の自分なりに少しずつ理解して期待と思います。
  9.     現段階ではまったくのいみぷーだけど(笑)
  10.     
  11.     がんばって理解しなきゃーひぃ
  12.     
  13.     あれ??
  14.     containerいらないのかな??
  15.     なくても動作するようなので消しちゃいました。
  16.     
  17.     BasicView投入!
  18.     
  19.     DisplayObject3D( "rootNode" )がよくわからない。rootNodeってなんなんですか??
  20.     わからないんで、自分がよく使うやりかたに直してみました。
  21.     
  22.     WordMoveTypeのデータ型をBooleanに変更して、シンプルにしました。
  23.     
  24.     ぼかしの適応具合を導くために被写界深度なるものを使うんだけど、
  25.     公式がさっぱり・・・わからん。
  26.     工業高校出身にはつらいとこ・・・ってことで断念することに・・・
  27.     
  28.     追記。
  29.     上野被写界深度があっさり解決しました!
  30.     KYUCON*BLOGさんのhttp://www.kyucon.com/blog/2009/06/papervision3d-20-8.htmlを参考に。
  31.     カメラとオブジェクトの距離を調べる命令がありました。これでもっと簡単に。
  32.     
  33.     でも、これでコードは解読しました!!!
  34. */
  35. package
  36. {
  37.     import net.hires.debug.Stats;//メモリ使用量表示用 左上のやつ
  38.     
  39.     import caurina.transitions.Tweener;
  40.     
  41.     import flash.display.Sprite;
  42.     import flash.events.Event;
  43.     import flash.filters.BlurFilter;
  44.     import flash.utils.setInterval;
  45.     
  46.     import org.papervision3d.view.BasicView;
  47.     import org.papervision3d.materials.special.Letter3DMaterial;
  48.     import org.papervision3d.objects.DisplayObject3D;
  49.     import org.papervision3d.render.BasicRenderEngine;
  50.     import org.papervision3d.typography.Text3D;
  51.     import org.papervision3d.typography.fonts.*;
  52.     import org.papervision3d.view.layer.*;
  53.     [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
  54.     
  55.     public class PV3D_sample03 extends BasicView
  56.     {
  57.         private var rootNode:DisplayObject3D;//Text3Dをまとめて入れるやつ
  58.         private var words1:Text3D;            //文字列1
  59.         private var words2:Text3D;            //文字列2
  60.         private var words3:Text3D;            //文字列3
  61.         private var theta:Number;            //角度 カメラを移動させるために使う
  62.         private var delayTime:Number;        //文字を1文字ずつ遅らせるために使う
  63.         private var WordMoveType:Boolean;    //文字が中央に整列しているのか、ばらばらに散らばっているのか
  64.         private const zoom:Number=20;
  65.         private const focus:Number=30;
  66.         private const distance:Number=600;    //カメラを回転させる円の半径
  67.         //constって定数なんだね。初めて知った。
  68.         //後から別の値を入れるとエラーになるらしい。
  69.         public function PV3D_sample03()
  70.         {
  71.             addChild(new Stats());//メモリ使用量表示用 左上のやつ
  72.             
  73.             theta=0;            //角度初期値
  74.             WordMoveType=false;    //中央に集まっている(true) 散らばっている(false)
  75.             delayTime=0;
  76.             
  77.             set3D();//3D設定
  78.             var mat:Letter3DMaterial=new Letter3DMaterial(0x0000FF);//Letter3DMaterial(文字色,透明度)
  79.             mat.doubleSided = true;//裏も表示させる
  80.             
  81.             words1 = new Text3D("Sample of Papervision3D"new HelveticaBold(), mat);
  82.             words2 = new Text3D("Welcome to PV3D !!!!!!"new HelveticaBold(), mat);
  83.             words3 = new Text3D("YEAAAAAA!!!!HOOOOOOOOO!!!"new HelveticaBold(), mat);
  84.             //Text3D("文字列",フォント,マテリアル);
  85.             //使えるフォント HelveticaBold HelveticaLight HelveticaMedium HelveticaRoman
  86.             //文字列は配列に入れられる。
  87.             
  88.             rootNode = new DisplayObject3D;
  89.             scene.addChild(rootNode);
  90.             rootNode.addChild(words1);
  91.             rootNode.addChild(words2);
  92.             rootNode.addChild(words3);
  93.             words1.y=50;
  94.             words2.y=0;
  95.             words3.y=-50;
  96.             words1.scale = words2.scale = words3.scale = 0.4;
  97.             dispersionWords(words1);
  98.             dispersionWords(words2);
  99.             dispersionWords(words3);
  100.             //Flashをロードした瞬間に始まるトゥイーン 読み込んだ1度だけ実行する
  101.             //中心から広がるように出現するくだり
  102.             
  103.             setInterval(moveWords, 10000);//10000msごとに実行
  104.             
  105.             addEventListener(Event.ENTER_FRAME, onFrame);
  106.             
  107.             startRendering();//レンダリング開始
  108.         }
  109.         
  110.         private function set3D():void{
  111.             addChild(viewport);
  112.             camera.target=DisplayObject3D.ZERO;
  113.             camera.zoom=zoom;
  114.             camera.focus=focus;
  115.         }
  116.         private function dispersionWords(words:Text3D):void
  117.         {
  118.             for each(var word:DisplayObject3D in words.letters)//words.letters 文字列が入った配列
  119.             //for each文の説明はこっちがわかりやすい http://blog.initt.org/?p=21
  120.             {
  121.                 word.extra = {
  122.                     x:word.x,
  123.                     y:word.y,
  124.                     z:word.z
  125.                 };
  126.                 //extra ユーザーの任意のパラメタを設定できる部分 自由に名前を決められる。
  127.                 
  128.                 word.x = word.y = word.z = word.scale = 0;
  129.                 
  130.                 Tweener.addTween(word, {
  131.                     scale:1,//もとの大きさに戻す
  132.                     
  133.                     x:Math.random() * 2000 - 1000,
  134.                     y:Math.random() * 2000 - 1000,
  135.                     z:Math.random() * 2000 - 1000,
  136.                     //ランダムな位置に配置。2000とか1000は自由に変更OK
  137.                     
  138.                     rotationX:Math.random() * 360,
  139.                     rotationY:Math.random() * 360,
  140.                     rotationZ:Math.random() * 360,
  141.                     //ランダムに回転させる 360は260度から
  142.                     
  143.                     time:3,//3sでトゥイーンさせる
  144.                     
  145.                     delay:2 * Math.random() + 1//delay 待ち時間 ここの値s後にトゥーンを実行する
  146.                 });
  147.             }
  148.         }
  149.         private function moveWords():void
  150.         {
  151.             if (!WordMoveType)
  152.             {
  153.                 //文字列を中央に配置する
  154.                 resetWords(words1);
  155.                 resetWords(words2);
  156.                 resetWords(words3);
  157.                 delayTime=0;//delayの時間をリセット
  158.                 WordMoveType = true;
  159.             }
  160.             else
  161.             {
  162.                 //文字列を散らばせる
  163.                 breakWords(words1);
  164.                 breakWords(words2);
  165.                 breakWords(words3);
  166.                 WordMoveType = false;
  167.             }
  168.         }
  169.         private function resetWords(words:Text3D):void
  170.         //文字列を中央に配置する
  171.         {
  172.             for each(var word:DisplayObject3D in words.letters)
  173.             {
  174.                 Tweener.addTween(word, {
  175.                     x:word.extra.x,
  176.                     y:word.extra.y,
  177.                     z:word.extra.z,
  178.                     //extraに記憶していた初期値をセットする
  179.                     
  180.                     rotationX:0,
  181.                     rotationY:0,
  182.                     rotationZ:0,
  183.                     
  184.                     time:1,
  185.                     transition:"easeOutBounce",
  186.                     delay:delayTime
  187.                 });
  188.                 
  189.                 Tweener.addTween(word, {
  190.                     rotationY:720,
  191.                     time:1,
  192.                     delay:delayTime + 2//2秒後に実行
  193.                 });
  194.                 //文字を回転させるトゥイーン
  195.                 
  196.                 delayTime += 0.1;
  197.                 //1文字ずつ移動を遅らせる。
  198.             }
  199.         }
  200.         private function breakWords(words:Text3D):void
  201.         //文字列を散らばせる
  202.         {
  203.             for each(var word:DisplayObject3D in words.letters)
  204.             //最初に1度だけ実行するdispersionWordsににているけど、scaleはいじらない。
  205.             {
  206.                 Tweener.addTween(word, {
  207.                     x:Math.random() * 2000 - 1000,
  208.                     y:Math.random() * 2000 - 1000,
  209.                     z:Math.random() * 2000 - 1000,
  210.                     
  211.                     rotationX:Math.random() * 360,
  212.                     rotationY:Math.random() * 360,
  213.                     rotationZ:Math.random() * 360,
  214.                     
  215.                     time:4,
  216.                     
  217.                     delay:3 * Math.random()
  218.                 });
  219.             }
  220.         }
  221.         private function onFrame(e:Event):void
  222.         {
  223.             camera.x = distance * Math.sin(theta * Math.PI / 180);
  224.             camera.z = distance * Math.cos(theta * Math.PI / 180);
  225.             theta+=0.2;//0.2を大きくしたら移動する速度が速くなる
  226.             //カメラを円状に移動させる
  227.             setBlur(words1);
  228.             setBlur(words2);
  229.             setBlur(words3);
  230.             //BlurFilterを適応させる
  231.         }
  232.         private function setBlur(words:Text3D):void
  233.         //BlurFilterを適応させる
  234.         {
  235.             for each(var word:DisplayObject3D in words.letters){
  236.                 var vpl:ViewportLayer = word.createViewportLayer(viewport, true);
  237.                 //ViewportLayer viwportの前面にフィルターやエフェクトなどを適用するための新たなレイヤーをつくる
  238.                 
  239.                 var d_Child:Number = Math.abs(camera.distanceTo(word) - distance);
  240.                 //camera.distanceTo(調べたいオブジェクト)
  241.                 //カメラとオブジェクトまでの距離
  242.                 
  243.                 var d:uint = Math.min(30, d_Child * 0.015);
  244.                 //距離に応じてぼかし量を調節
  245.                 
  246.                 vpl.filters = [new BlurFilter(d, d, 1)];
  247.                 //BlurFilter(blurX:水平方向のぼかし量,blurY:垂直方向のぼかし量,ぼかしの実行回数)
  248.             }
  249.         }
  250.     }
  251. }
noswf
  1. // forked from sake's PV3Dその3
  2. /*
  3.     Vectorvision3DがPV3Dに統合されたらしいと。
  4.     ただ、Word3D → text3Dと、VectorShapeMaterial → Letter3DMaterial となってる。
  5.     ここ以外はたぶん同じ。
  6. */
  7. package
  8. {
  9.     import caurina.transitions.Tweener;
  10.     import flash.display.Sprite;
  11.     import flash.events.Event;
  12.     import flash.filters.BlurFilter;
  13.     import flash.utils.setInterval;
  14.     import org.papervision3d.cameras.Camera3D;
  15.     import org.papervision3d.materials.special.Letter3DMaterial;
  16.     import org.papervision3d.objects.DisplayObject3D;
  17.     import org.papervision3d.render.BasicRenderEngine;
  18.     import org.papervision3d.scenes.Scene3D;
  19.     import org.papervision3d.typography.Text3D;
  20.     import org.papervision3d.typography.fonts.HelveticaBold;
  21.     import org.papervision3d.view.Viewport3D;
  22.     import org.papervision3d.view.layer.ViewportLayer;
  23.     [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
  24.     public class PV3D_sample03 extends Sprite
  25.     {
  26.         private var container:Sprite;
  27.         private var viewport:Viewport3D;
  28.         private var scene:Scene3D;
  29.         private var camera:Camera3D;
  30.         private var render:BasicRenderEngine;
  31.         private var rootNode:DisplayObject3D;
  32.         private var words1:Text3D;
  33.         private var words2:Text3D;
  34.         private var words3:Text3D;
  35.         private var theta:Number;
  36.         private var delayTime:Number;
  37.         private var WordMoveType:Number;
  38.         private const zoom:Number=20;
  39.         private const focus:Number=30;
  40.         private const distance:Number=600;
  41.         public function PV3D_sample03()
  42.         {
  43.             theta=0;
  44.             WordMoveType=0;
  45.             delayTime=0;
  46.             container=new Sprite();
  47.             addChild(container);
  48.             container.x=stage.stageWidth / 2;
  49.             container.y=stage.stageHeight / 2;
  50.             viewport=new Viewport3D(00truetrue);
  51.             scene=new Scene3D();
  52.             camera=new Camera3D();
  53.             render=new BasicRenderEngine();
  54.             rootNode=scene.addChild(new DisplayObject3D("rootNode"));
  55.             addChild(viewport);
  56.             camera.target=DisplayObject3D.ZERO;
  57.             camera.zoom=zoom;
  58.             camera.focus=focus;
  59.             var mat:Letter3DMaterial=new Letter3DMaterial();
  60.             mat.fillColor=0xFFFFFF;
  61.             mat.doubleSided=true;
  62.             mat.doubleSided=mat.interactive=true;
  63.             words1=new Text3D("Je T'aime Madiha"new HelveticaBold(), mat);
  64.             words2=new Text3D("Je le ferai tte MA vie"new HelveticaBold(), mat);
  65.             words3=new Text3D("Animation BY Marwane"new HelveticaBold(), mat);
  66.             rootNode.addChild(words1);
  67.             rootNode.addChild(words2);
  68.             rootNode.addChild(words3);
  69.             words1.y=50;
  70.             words2.y=0;
  71.             words3.y=-50;
  72.             words1.scale=words2.scale=words3.scale=0.4;
  73.             dispersionWords(words1);
  74.             dispersionWords(words2);
  75.             dispersionWords(words3);
  76.             setInterval(moveWords, 10000);
  77.             addEventListener(Event.ENTER_FRAME, onFrame);
  78.         }
  79.         private function dispersionWords(words:Text3D):void
  80.         {
  81.             for each(var word:DisplayObject3D in words.letters)
  82.             {
  83.                 word.extra={x:word.x, y:word.y, z:word.z};
  84.                 word.x=word.y=word.z=word.scale=0;
  85.                 Tweener.addTween(word, {scale:1, x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:3, delay:2 * Math.random() + 1});
  86.             }
  87.         }
  88.         private function moveWords():void
  89.         {
  90.             if (WordMoveType % 2 == 0)
  91.             {
  92.                 resetWords(words1);
  93.                 resetWords(words2);
  94.                 resetWords(words3);
  95.                 delayTime=0;
  96.                 WordMoveType++;
  97.             }
  98.             else
  99.             {
  100.                 breakWords(words1);
  101.                 breakWords(words2);
  102.                 breakWords(words3);
  103.                 WordMoveType++;
  104.             }
  105.         }
  106.         private function resetWords(words:Text3D):void
  107.         {
  108.             for each(var word:DisplayObject3D in words.letters)
  109.             {
  110.                 Tweener.addTween(word, {x:word.extra.x, y:word.extra.y, z:word.extra.z, rotationX:0, rotationY:0, rotationZ:0, time:1, transition:"easeOutBounce", delay:delayTime});
  111.                 Tweener.addTween(word, {rotationY:720, time:1, delay:delayTime + 2});
  112.                 delayTime+=0.1;
  113.             }
  114.         }
  115.         private function breakWords(words:Text3D):void
  116.         {
  117.             for each(var word:DisplayObject3D in words.letters)
  118.             {
  119.                 Tweener.addTween(word, {x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:4, delay:3 * Math.random()});
  120.             }
  121.         }
  122.         private function onFrame(e:Event):void
  123.         {
  124.             camera.x=distance * Math.sin(theta * Math.PI / 180);
  125.             camera.z=distance * Math.cos(theta * Math.PI / 180);
  126.             theta+=0.2;
  127.             setBlur(words1);
  128.             setBlur(words2);
  129.             render.renderScene(scene, camera, viewport);
  130.         }
  131.         private function DistanceFromCamera(obj:DisplayObject3D):Number
  132.         {
  133.             var vecX:Number=obj.sceneX - camera.x;
  134.             var vecY:Number=obj.sceneY - camera.y;
  135.             var vecZ:Number=obj.sceneZ - camera.z;
  136.             return Math.sqrt((vecX * vecX) + (vecY * vecY) + (vecZ * vecZ));
  137.         }
  138.         private function setBlur(words:Text3D):void
  139.         {
  140.             for each(var word:DisplayObject3D in words.letters)
  141.             {
  142.                 var vpl:ViewportLayer=word.createViewportLayer(viewport, true);
  143.                 var d:Number=Math.abs(DistanceFromCamera(word) - distance) / 40;
  144.                 vpl.filters=[new BlurFilter(d, d, 1)];
  145.             }
  146.         }
  147.     }
  148. }
noswf
  1. // forked from sake's PV3Dその3
  2. /*
  3.     Vectorvision3DがPV3Dに統合されたらしいと。
  4.     ただ、Word3D → text3Dと、VectorShapeMaterial → Letter3DMaterial となってる。
  5.     ここ以外はたぶん同じ。
  6. */
  7. package
  8. {
  9.     import caurina.transitions.Tweener;
  10.     import flash.display.Sprite;
  11.     import flash.events.Event;
  12.     import flash.filters.BlurFilter;
  13.     import flash.utils.setInterval;
  14.     import org.papervision3d.cameras.Camera3D;
  15.     import org.papervision3d.materials.special.Letter3DMaterial;
  16.     import org.papervision3d.objects.DisplayObject3D;
  17.     import org.papervision3d.render.BasicRenderEngine;
  18.     import org.papervision3d.scenes.Scene3D;
  19.     import org.papervision3d.typography.Text3D;
  20.     import org.papervision3d.typography.fonts.HelveticaBold;
  21.     import org.papervision3d.view.Viewport3D;
  22.     import org.papervision3d.view.layer.ViewportLayer;
  23.     [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
  24.     public class PV3D_sample03 extends Sprite
  25.     {
  26.         private var container:Sprite;
  27.         private var viewport:Viewport3D;
  28.         private var scene:Scene3D;
  29.         private var camera:Camera3D;
  30.         private var render:BasicRenderEngine;
  31.         private var rootNode:DisplayObject3D;
  32.         private var words1:Text3D;
  33.         private var words2:Text3D;
  34.         private var words3:Text3D;
  35.         private var theta:Number;
  36.         private var delayTime:Number;
  37.         private var WordMoveType:Number;
  38.         private const zoom:Number=20;
  39.         private const focus:Number=30;
  40.         private const distance:Number=600;
  41.         public function PV3D_sample03()
  42.         {
  43.             theta=0;
  44.             WordMoveType=0;
  45.             delayTime=0;
  46.             container=new Sprite();
  47.             addChild(container);
  48.             container.x=stage.stageWidth / 2;
  49.             container.y=stage.stageHeight / 2;
  50.             viewport=new Viewport3D(00truetrue);
  51.             scene=new Scene3D();
  52.             camera=new Camera3D();
  53.             render=new BasicRenderEngine();
  54.             rootNode=scene.addChild(new DisplayObject3D("rootNode"));
  55.             addChild(viewport);
  56.             camera.target=DisplayObject3D.ZERO;
  57.             camera.zoom=zoom;
  58.             camera.focus=focus;
  59.             var mat:Letter3DMaterial=new Letter3DMaterial();
  60.             mat.fillColor=0xFFFFFF;
  61.             mat.doubleSided=true;
  62.             mat.doubleSided=mat.interactive=true;
  63.             words1=new Text3D("marwanovich_nova6@hotmail.fr"new HelveticaBold(), mat);
  64.             words2=new Text3D("0610651957 !!!!!!"new HelveticaBold(), mat);
  65.             words3=new Text3D("Thnx 4 using MY App :)"new HelveticaBold(), mat);
  66.             rootNode.addChild(words1);
  67.             rootNode.addChild(words2);
  68.             rootNode.addChild(words3);
  69.             words1.y=50;
  70.             words2.y=0;
  71.             words3.y=-50;
  72.             words1.scale=words2.scale=words3.scale=0.4;
  73.             dispersionWords(words1);
  74.             dispersionWords(words2);
  75.             dispersionWords(words3);
  76.             setInterval(moveWords, 10000);
  77.             addEventListener(Event.ENTER_FRAME, onFrame);
  78.         }
  79.         private function dispersionWords(words:Text3D):void
  80.         {
  81.             for each(var word:DisplayObject3D in words.letters)
  82.             {
  83.                 word.extra={x:word.x, y:word.y, z:word.z};
  84.                 word.x=word.y=word.z=word.scale=0;
  85.                 Tweener.addTween(word, {scale:1, x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:3, delay:2 * Math.random() + 1});
  86.             }
  87.         }
  88.         private function moveWords():void
  89.         {
  90.             if (WordMoveType % 2 == 0)
  91.             {
  92.                 resetWords(words1);
  93.                 resetWords(words2);
  94.                 resetWords(words3);
  95.                 delayTime=0;
  96.                 WordMoveType++;
  97.             }
  98.             else
  99.             {
  100.                 breakWords(words1);
  101.                 breakWords(words2);
  102.                 breakWords(words3);
  103.                 WordMoveType++;
  104.             }
  105.         }
  106.         private function resetWords(words:Text3D):void
  107.         {
  108.             for each(var word:DisplayObject3D in words.letters)
  109.             {
  110.                 Tweener.addTween(word, {x:word.extra.x, y:word.extra.y, z:word.extra.z, rotationX:0, rotationY:0, rotationZ:0, time:1, transition:"easeOutBounce", delay:delayTime});
  111.                 Tweener.addTween(word, {rotationY:720, time:1, delay:delayTime + 2});
  112.                 delayTime+=0.1;
  113.             }
  114.         }
  115.         private function breakWords(words:Text3D):void
  116.         {
  117.             for each(var word:DisplayObject3D in words.letters)
  118.             {
  119.                 Tweener.addTween(word, {x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:4, delay:3 * Math.random()});
  120.             }
  121.         }
  122.         private function onFrame(e:Event):void
  123.         {
  124.             camera.x=distance * Math.sin(theta * Math.PI / 180);
  125.             camera.z=distance * Math.cos(theta * Math.PI / 180);
  126.             theta+=0.2;
  127.             setBlur(words1);
  128.             setBlur(words2);
  129.             render.renderScene(scene, camera, viewport);
  130.         }
  131.         private function DistanceFromCamera(obj:DisplayObject3D):Number
  132.         {
  133.             var vecX:Number=obj.sceneX - camera.x;
  134.             var vecY:Number=obj.sceneY - camera.y;
  135.             var vecZ:Number=obj.sceneZ - camera.z;
  136.             return Math.sqrt((vecX * vecX) + (vecY * vecY) + (vecZ * vecZ));
  137.         }
  138.         private function setBlur(words:Text3D):void
  139.         {
  140.             for each(var word:DisplayObject3D in words.letters)
  141.             {
  142.                 var vpl:ViewportLayer=word.createViewportLayer(viewport, true);
  143.                 var d:Number=Math.abs(DistanceFromCamera(word) - distance) / 40;
  144.                 vpl.filters=[new BlurFilter(d, d, 1)];
  145.             }
  146.         }
  147.     }
  148. }
noswf
Get Adobe Flash Player