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

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

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


FORKED
  1. // forked from clockmaker's [PV3D] Ribon Road
  2. /*=====================================================*//**
  3. * Papervison3Dを利用したリボン表現
  4. *
  5. * Tweenerを使って作成したベジェ曲線に
  6. * Planeを位置と角度を調整して並べています。
  7. * 強引なやり方なので、いい方法があったら教えてください!
  8. * @author Yasu (clockmaker.jp)
  9. *//*======================================================*/
  10. package
  11. {
  12.     import caurina.transitions.properties.CurveModifiers;
  13.     import caurina.transitions.Tweener;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.utils.getTimer;
  17.     import org.papervision3d.core.geom.*;
  18.     import org.papervision3d.core.geom.renderables.*;
  19.     import org.papervision3d.core.proto.*;
  20.     import org.papervision3d.materials.shadematerials.*;
  21.     import org.papervision3d.materials.special.*;
  22.     import org.papervision3d.objects.*;
  23.     import org.papervision3d.objects.primitives.*;
  24.     import org.papervision3d.view.*;
  25.     import org.papervision3d.cameras.*;
  26.     import org.papervision3d.lights.*
  27.     import org.papervision3d.materials.*
  28.     import org.papervision3d.materials.utils.*
  29.     import org.papervision3d.core.math.Matrix3D;
  30.     
  31.     [SWF(width = "720", height = "480", frameRate = "60", backgroundColor="0xFFFFFF")]
  32.     public class Main extends BasicView
  33.     {
  34.                 private var lineMaterial            :LineMaterial;
  35.                 private var _arrLines                :Array     = [];
  36.                 private var _objArray                :Array     = [];
  37.                 private var LINES_NUM        :int     = 1
  38.                 private var MAX_RADIUS        :int    = 3000;
  39.                 private var POINT_NUM        :uint     = 5
  40.                 private var VERTICES_NUM    :uint     = 400
  41.                 private var CAMERA_POSITION    :uint     = 3000;
  42.         
  43.         public function Main()
  44.         {
  45.             super(00truefalse, CameraType.FREE);
  46.             CurveModifiers.init();
  47.             camera.focus = 250
  48.             camera.zoom = 1
  49.             init()
  50.             startRendering()
  51.         }
  52.         private function init():void
  53.         {
  54.             // 3d
  55.             for (var i:int = 0; i < LINES_NUM; i++)
  56.             {
  57.                 _arrPlanes[i] = [];
  58.             }
  59.             
  60.             // 2d
  61.             for (i = 0; i < LINES_NUM; i++)
  62.             {
  63.                 var newPos:Object = getRandomPos()
  64.                 var o:Object =
  65.                 {
  66.                     x         : newPos.x,
  67.                     prevX     : newPos.x,
  68.                     y         : newPos.y,
  69.                     prevY     : newPos.y,
  70.                     z         : newPos.z,
  71.                     prevZ     : newPos.z,
  72.                     color     : Math.random() * 0xFFFFFF
  73.                 }
  74.                 
  75.                 _objArray.push(o)
  76.                 randomTween(getRandomData(o))
  77.             }
  78.         }
  79.         private function randomTween(o:Object):void
  80.         {
  81.             Tweener.addTween(o,
  82.             { 
  83.                 x            :    o.x1,
  84.                 y            :    o.y1, 
  85.                 z            :    o.z1, 
  86.                 _bezier        :    o.bezier, 
  87.                 time                :    o.time,
  88.                 transition            :    "linear"
  89.                 onComplete    :    function():void
  90.                 {
  91.                     randomTween(getRandomData(o));
  92.                 }
  93.             });
  94.         }
  95.         
  96.         private function getRandomData(o:Object):Object
  97.         {
  98.             o.time = (POINT_NUM * 0.5) + (POINT_NUM * .75);
  99.             var newPos:Object = getRandomPos();
  100.             o.x1 = newPos.x;
  101.             o.y1 = newPos.y;
  102.             o.z1 = newPos.z;
  103.             o.bezier = [];
  104.             for (var i:int = 0; i < POINT_NUM; i++)
  105.             {
  106.                 var newBezierPos:Object = getRandomPos();
  107.                 o.bezier.push(
  108.                 {
  109.                     x : newBezierPos.x,
  110.                     y : newBezierPos.y,
  111.                     z : newBezierPos.z
  112.                 });
  113.             }
  114.             return o;
  115.         }
  116.         private function getRandomPos():Object
  117.         {
  118.             var angleY:Number = Math.random() * 2 * Math.PI;
  119.             var angleXZ:Number = Math.random() * 2 * Math.PI;
  120.             return {
  121.                 x : Math.cos(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  122.                 y : Math.sin(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  123.                 z : Math.cos(angleXZ) * MAX_RADIUS
  124.             };
  125.         }
  126.         
  127.         private var _arrPlanes:Array = []
  128.         
  129.         override protected function onRenderTick(e:Event = null):void
  130.         {
  131.             for (var i:int = 0; i < LINES_NUM; i++)
  132.             {
  133.                 var d1:DisplayObject3D = new DisplayObject3D()
  134.                 d1.x = _objArray[i].x
  135.                 d1.y = _objArray[i].y
  136.                 d1.z = _objArray[i].z
  137.                 var d2:DisplayObject3D = new DisplayObject3D()
  138.                 d2.x = _objArray[i].prevX
  139.                 d2.y = _objArray[i].prevY
  140.                 d2.z = _objArray[i].prevZ
  141.                 
  142.                 d1.lookAt(d2);
  143.             
  144.                 // Planes
  145.                 var len:Number = Math.sqrt(
  146.                     (_objArray[i].x - _objArray[i].prevX) * (_objArray[i].x - _objArray[i].prevX)
  147.                     + (_objArray[i].y - _objArray[i].prevY) * (_objArray[i].y - _objArray[i].prevY)
  148.                     + (_objArray[i].z - _objArray[i].prevZ) * (_objArray[i].z - _objArray[i].prevZ)
  149.                 )
  150.                 
  151.                 var mat:MaterialObject3D = new WireframeMaterial(_objArray[i].color)
  152.                 mat.doubleSided = true
  153.                 var o:DisplayObject3D = scene.addChild(new Plane(mat, 100100))
  154.                 o.copyTransform(d1.transform)
  155.                 o.pitch(90)
  156.                 
  157.                 _arrPlanes[i].push(o);
  158.                 
  159.                 if (_arrPlanes[i].length > 10)
  160.                 {
  161.                     var tmp:DisplayObject3D = _arrPlanes[i][0]
  162.                     
  163.                     var cameraTarget :DisplayObject3D = new DisplayObject3D();
  164.                     cameraTarget.copyTransform( tmp );
  165.                     cameraTarget.moveBackward(100);
  166.                     cameraTarget.moveUp(100);
  167.                     camera.copyTransform(cameraTarget)
  168.                     
  169.                     camera.lookAt(_arrPlanes[i][10])
  170.                     cameraTarget = null
  171.                 }
  172.                 
  173.                 if (_arrPlanes[i].length > VERTICES_NUM)
  174.                 {
  175.                     scene.removeChild(_arrPlanes[i].shift())
  176.                 }
  177.                 
  178.                 _objArray[i].prevX = _objArray[i].x;
  179.                 _objArray[i].prevY = _objArray[i].y;
  180.                 _objArray[i].prevZ = _objArray[i].z;
  181.             }
  182.             
  183.             super.onRenderTick(e);
  184.         }
  185.     }
  186. }
noswf
  1. // forked from clockmaker's [PV3D] Ribon Road
  2. /*=====================================================*//**
  3. * Papervison3Dを利用したリボン表現
  4. *
  5. * Tweenerを使って作成したベジェ曲線に
  6. * Planeを位置と角度を調整して並べています。
  7. * 強引なやり方なので、いい方法があったら教えてください!
  8. * @author Yasu (clockmaker.jp)
  9. *//*======================================================*/
  10. package
  11. {
  12.     import caurina.transitions.properties.CurveModifiers;
  13.     import caurina.transitions.Tweener;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.utils.getTimer;
  17.     import org.papervision3d.core.geom.*;
  18.     import org.papervision3d.core.geom.renderables.*;
  19.     import org.papervision3d.core.proto.*;
  20.     import org.papervision3d.materials.shadematerials.*;
  21.     import org.papervision3d.materials.special.*;
  22.     import org.papervision3d.objects.*;
  23.     import org.papervision3d.objects.primitives.*;
  24.     import org.papervision3d.view.*;
  25.     import org.papervision3d.cameras.*;
  26.     import org.papervision3d.lights.*
  27.     import org.papervision3d.materials.*
  28.     import org.papervision3d.materials.utils.*
  29.     import org.papervision3d.core.math.Matrix3D;
  30.     
  31.     [SWF(width = "720", height = "480", frameRate = "60", backgroundColor="0xFFFFFF")]
  32.     public class Main extends BasicView
  33.     {
  34.                 private var lineMaterial            :LineMaterial;
  35.                 private var _arrLines                :Array     = [];
  36.                 private var _objArray                :Array     = [];
  37.                 private var LINES_NUM                :int     = 1
  38.                 private var MAX_RADIUS            :int    = 3000;
  39.                 private var POINT_NUM                :uint     = 5
  40.                 private var VERTICES_NUM            :uint     = 400
  41.                 private var CAMERA_POSITION        :uint     = 3000;
  42.         
  43.         public function Main()
  44.         {
  45.             super(00truefalse, CameraType.FREE);
  46.             CurveModifiers.init();
  47.             camera.focus = 250
  48.             camera.zoom = 1
  49.             init()
  50.             startRendering()
  51.         }
  52.         private function init():void
  53.         {
  54.             // 3d
  55.             for (var i:int = 0; i < LINES_NUM; i++)
  56.             {
  57.                 _arrPlanes[i] = [];
  58.             }
  59.             
  60.             // 2d
  61.             for (i = 0; i < LINES_NUM; i++)
  62.             {
  63.                 var newPos:Object = getRandomPos()
  64.                 var o:Object =
  65.                 {
  66.                     x         : newPos.x,
  67.                     prevX     : newPos.x,
  68.                     y         : newPos.y,
  69.                     prevY     : newPos.y,
  70.                     z         : newPos.z,
  71.                     prevZ     : newPos.z,
  72.                     color     : Math.random() * 0xFFFFFF
  73.                 }
  74.                 
  75.                 _objArray.push(o)
  76.                 randomTween(getRandomData(o))
  77.             }
  78.         }
  79.         private function randomTween(o:Object):void
  80.         {
  81.             Tweener.addTween(o,
  82.             { 
  83.                 x            :    o.x1,
  84.                 y            :    o.y1, 
  85.                 z            :    o.z1, 
  86.                 _bezier        :    o.bezier, 
  87.                 time                :    o.time,
  88.                 transition            :    "linear"
  89.                 onComplete    :    function():void
  90.                 {
  91.                     randomTween(getRandomData(o));
  92.                 }
  93.             });
  94.         }
  95.         
  96.         private function getRandomData(o:Object):Object
  97.         {
  98.             o.time = (POINT_NUM * 0.5) + (POINT_NUM * .75);
  99.             var newPos:Object = getRandomPos();
  100.             o.x1 = newPos.x;
  101.             o.y1 = newPos.y;
  102.             o.z1 = newPos.z;
  103.             o.bezier = [];
  104.             for (var i:int = 0; i < POINT_NUM; i++)
  105.             {
  106.                 var newBezierPos:Object = getRandomPos();
  107.                 o.bezier.push(
  108.                 {
  109.                     x : newBezierPos.x,
  110.                     y : newBezierPos.y,
  111.                     z : newBezierPos.z
  112.                 });
  113.             }
  114.             return o;
  115.         }
  116.         private function getRandomPos():Object
  117.         {
  118.             var angleY:Number = Math.random() * 2 * Math.PI;
  119.             var angleXZ:Number = Math.random() * 2 * Math.PI;
  120.             return {
  121.                 x : Math.cos(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  122.                 y : Math.sin(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  123.                 z : Math.cos(angleXZ) * MAX_RADIUS
  124.             };
  125.         }
  126.         
  127.         private var _arrPlanes:Array = []
  128.         
  129.         override protected function onRenderTick(e:Event = null):void
  130.         {
  131.             for (var i:int = 0; i < LINES_NUM; i++)
  132.             {
  133.                 var d1:DisplayObject3D = new DisplayObject3D()
  134.                 d1.x = _objArray[i].x
  135.                 d1.y = _objArray[i].y
  136.                 d1.z = _objArray[i].z
  137.                 var d2:DisplayObject3D = new DisplayObject3D()
  138.                 d2.x = _objArray[i].prevX
  139.                 d2.y = _objArray[i].prevY
  140.                 d2.z = _objArray[i].prevZ
  141.                 
  142.                 d1.lookAt(d2);
  143.             
  144.                 // Planes
  145.                 var len:Number = Math.sqrt(
  146.                     (_objArray[i].x - _objArray[i].prevX) * (_objArray[i].x - _objArray[i].prevX)
  147.                     + (_objArray[i].y - _objArray[i].prevY) * (_objArray[i].y - _objArray[i].prevY)
  148.                     + (_objArray[i].z - _objArray[i].prevZ) * (_objArray[i].z - _objArray[i].prevZ)
  149.                 )
  150.                 
  151.                 var mat:MaterialObject3D = new WireframeMaterial(_objArray[i].color)
  152.                 mat.doubleSided = true
  153.                 var o:DisplayObject3D = scene.addChild(new Plane(mat, 100100))
  154.                 o.copyTransform(d1.transform)
  155.                 o.pitch(90)
  156.                 
  157.                 _arrPlanes[i].push(o);
  158.                 
  159.                 if (_arrPlanes[i].length > 10)
  160.                 {
  161.                     var tmp:DisplayObject3D = _arrPlanes[i][0]
  162.                     
  163.                     var cameraTarget :DisplayObject3D = new DisplayObject3D();
  164.                     cameraTarget.copyTransform( tmp );
  165.                     cameraTarget.moveBackward(100);
  166.                     cameraTarget.moveUp(100);
  167.                     camera.copyTransform(cameraTarget)
  168.                     
  169.                     camera.lookAt(_arrPlanes[i][10])
  170.                     cameraTarget = null
  171.                 }
  172.                 
  173.                 if (_arrPlanes[i].length > VERTICES_NUM)
  174.                 {
  175.                     scene.removeChild(_arrPlanes[i].shift())
  176.                 }
  177.                 
  178.                 _objArray[i].prevX = _objArray[i].x;
  179.                 _objArray[i].prevY = _objArray[i].y;
  180.                 _objArray[i].prevZ = _objArray[i].z;
  181.             }
  182.             
  183.             super.onRenderTick(e);
  184.         }
  185.     }
  186. }
noswf
  1. // forked from clockmaker's [PV3D] Ribon Road
  2. /*=====================================================*//**
  3. * Papervison3Dを利用したリボン表現
  4. *
  5. * Tweenerを使って作成したベジェ曲線に
  6. * Planeを位置と角度を調整して並べています。
  7. * 強引なやり方なので、いい方法があったら教えてください!
  8. * @author Yasu (clockmaker.jp)
  9. *//*======================================================*/
  10. package
  11. {
  12.     import caurina.transitions.properties.CurveModifiers;
  13.     import caurina.transitions.Tweener;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.utils.getTimer;
  17.     import org.papervision3d.core.geom.*;
  18.     import org.papervision3d.core.geom.renderables.*;
  19.     import org.papervision3d.core.proto.*;
  20.     import org.papervision3d.materials.shadematerials.*;
  21.     import org.papervision3d.materials.special.*;
  22.     import org.papervision3d.objects.*;
  23.     import org.papervision3d.objects.primitives.*;
  24.     import org.papervision3d.view.*;
  25.     import org.papervision3d.cameras.*;
  26.     import org.papervision3d.lights.*
  27.     import org.papervision3d.materials.*
  28.     import org.papervision3d.materials.utils.*
  29.     import org.papervision3d.core.math.Matrix3D;
  30.     
  31.     [SWF(width = "720", height = "480", frameRate = "60", backgroundColor="0xFFFFFF")]
  32.     public class Main extends BasicView
  33.     {
  34.                 private var lineMaterial            :LineMaterial;
  35.                 private var _arrLines                :Array     = [];
  36.                 private var _objArray                :Array     = [];
  37.                 private var LINES_NUM        :int     = 1
  38.                 private var MAX_RADIUS        :int    = 3000;
  39.                 private var POINT_NUM        :uint     = 5
  40.                 private var VERTICES_NUM    :uint     = 400
  41.                 private var CAMERA_POSITION    :uint     = 3000;
  42.         
  43.         public function Main()
  44.         {
  45.             super(00truefalse, CameraType.FREE);
  46.             CurveModifiers.init();
  47.             camera.focus = 250
  48.             camera.zoom = 1
  49.             init()
  50.             startRendering()
  51.         }
  52.         private function init():void
  53.         {
  54.             // 3d
  55.             for (var i:int = 0; i < LINES_NUM; i++)
  56.             {
  57.                 _arrPlanes[i] = [];
  58.             }
  59.             
  60.             // 2d
  61.             for (i = 0; i < LINES_NUM; i++)
  62.             {
  63.                 var newPos:Object = getRandomPos()
  64.                 var o:Object =
  65.                 {
  66.                     x         : newPos.x,
  67.                     prevX     : newPos.x,
  68.                     y         : newPos.y,
  69.                     prevY     : newPos.y,
  70.                     z         : newPos.z,
  71.                     prevZ     : newPos.z,
  72.                     color     : Math.random() * 0xFFFFFF
  73.                 }
  74.                 
  75.                 _objArray.push(o)
  76.                 randomTween(getRandomData(o))
  77.             }
  78.         }
  79.         private function randomTween(o:Object):void
  80.         {
  81.             Tweener.addTween(o,
  82.             { 
  83.                 x            :    o.x1,
  84.                 y            :    o.y1, 
  85.                 z            :    o.z1, 
  86.                 _bezier        :    o.bezier, 
  87.                 time                :    o.time,
  88.                 transition            :    "linear"
  89.                 onComplete    :    function():void
  90.                 {
  91.                     randomTween(getRandomData(o));
  92.                 }
  93.             });
  94.         }
  95.         
  96.         private function getRandomData(o:Object):Object
  97.         {
  98.             o.time = (POINT_NUM * 0.5) + (POINT_NUM * .75);
  99.             var newPos:Object = getRandomPos();
  100.             o.x1 = newPos.x;
  101.             o.y1 = newPos.y;
  102.             o.z1 = newPos.z;
  103.             o.bezier = [];
  104.             for (var i:int = 0; i < POINT_NUM; i++)
  105.             {
  106.                 var newBezierPos:Object = getRandomPos();
  107.                 o.bezier.push(
  108.                 {
  109.                     x : newBezierPos.x,
  110.                     y : newBezierPos.y,
  111.                     z : newBezierPos.z
  112.                 });
  113.             }
  114.             return o;
  115.         }
  116.         private function getRandomPos():Object
  117.         {
  118.             var angleY:Number = Math.random() * 2 * Math.PI;
  119.             var angleXZ:Number = Math.random() * 2 * Math.PI;
  120.             return {
  121.                 x : Math.cos(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  122.                 y : Math.sin(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  123.                 z : Math.cos(angleXZ) * MAX_RADIUS
  124.             };
  125.         }
  126.         
  127.         private var _arrPlanes:Array = []
  128.         
  129.         override protected function onRenderTick(e:Event = null):void
  130.         {
  131.             for (var i:int = 0; i < LINES_NUM; i++)
  132.             {
  133.                 var d1:DisplayObject3D = new DisplayObject3D()
  134.                 d1.x = _objArray[i].x
  135.                 d1.y = _objArray[i].y
  136.                 d1.z = _objArray[i].z
  137.                 var d2:DisplayObject3D = new DisplayObject3D()
  138.                 d2.x = _objArray[i].prevX
  139.                 d2.y = _objArray[i].prevY
  140.                 d2.z = _objArray[i].prevZ
  141.                 
  142.                 d1.lookAt(d2);
  143.             
  144.                 // Planes
  145.                 var len:Number = Math.sqrt(
  146.                     (_objArray[i].x - _objArray[i].prevX) * (_objArray[i].x - _objArray[i].prevX)
  147.                     + (_objArray[i].y - _objArray[i].prevY) * (_objArray[i].y - _objArray[i].prevY)
  148.                     + (_objArray[i].z - _objArray[i].prevZ) * (_objArray[i].z - _objArray[i].prevZ)
  149.                 )
  150.                 
  151.                 var mat:MaterialObject3D = new WireframeMaterial(_objArray[i].color)
  152.                 mat.doubleSided = true
  153.                 var o:DisplayObject3D = scene.addChild(new Plane(mat, 100100))
  154.                 o.copyTransform(d1.transform)
  155.                 o.pitch(90)
  156.                 
  157.                 _arrPlanes[i].push(o);
  158.                 
  159.                 if (_arrPlanes[i].length > 10)
  160.                 {
  161.                     var tmp:DisplayObject3D = _arrPlanes[i][0]
  162.                     
  163.                     var cameraTarget :DisplayObject3D = new DisplayObject3D();
  164.                     cameraTarget.copyTransform( tmp );
  165.                     cameraTarget.moveBackward(100);
  166.                     cameraTarget.moveUp(100);
  167.                     camera.copyTransform(cameraTarget)
  168.                     
  169.                     camera.lookAt(_arrPlanes[i][10])
  170.                     cameraTarget = null
  171.                 }
  172.                 
  173.                 if (_arrPlanes[i].length > VERTICES_NUM)
  174.                 {
  175.                     scene.removeChild(_arrPlanes[i].shift())
  176.                 }
  177.                 
  178.                 _objArray[i].prevX = _objArray[i].x;
  179.                 _objArray[i].prevY = _objArray[i].y;
  180.                 _objArray[i].prevZ = _objArray[i].z;
  181.             }
  182.             
  183.             super.onRenderTick(e);
  184.         }
  185.     }
  186. }
noswf
  1. // forked from clockmaker's [PV3D] Ribon Road
  2. /*=====================================================*//**
  3. * Papervison3Dを利用したリボン表現
  4. *
  5. * Tweenerを使って作成したベジェ曲線に
  6. * Planeを位置と角度を調整して並べています。
  7. * 強引なやり方なので、いい方法があったら教えてください!
  8. * @author Yasu (clockmaker.jp)
  9. *//*======================================================*/
  10. package
  11. {
  12.     import caurina.transitions.properties.CurveModifiers;
  13.     import caurina.transitions.Tweener;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.utils.getTimer;
  17.     import org.papervision3d.core.geom.*;
  18.     import org.papervision3d.core.geom.renderables.*;
  19.     import org.papervision3d.core.proto.*;
  20.     import org.papervision3d.materials.shadematerials.*;
  21.     import org.papervision3d.materials.special.*;
  22.     import org.papervision3d.objects.*;
  23.     import org.papervision3d.objects.primitives.*;
  24.     import org.papervision3d.view.*;
  25.     import org.papervision3d.cameras.*;
  26.     import org.papervision3d.lights.*
  27.     import org.papervision3d.materials.*
  28.     import org.papervision3d.materials.utils.*
  29.     import org.papervision3d.core.math.Matrix3D;
  30.     
  31.     [SWF(width = "720", height = "480", frameRate = "60", backgroundColor="0xFFFFFF")]
  32.     public class Main extends BasicView
  33.     {
  34.                 private var lineMaterial            :LineMaterial;
  35.                 private var _arrLines                :Array     = [];
  36.                 private var _objArray                :Array     = [];
  37.                 private var LINES_NUM        :int     = 1
  38.                 private var MAX_RADIUS        :int    = 3000;
  39.                 private var POINT_NUM        :uint     = 5
  40.                 private var VERTICES_NUM    :uint     = 400
  41.                 private var CAMERA_POSITION    :uint     = 3000;
  42.         
  43.         public function Main()
  44.         {
  45.             super(00truefalse, CameraType.FREE);
  46.             CurveModifiers.init();
  47.             camera.focus = 250
  48.             camera.zoom = 1
  49.             init()
  50.             startRendering()
  51.         }
  52.         private function init():void
  53.         {
  54.             // 3d
  55.             for (var i:int = 0; i < LINES_NUM; i++)
  56.             {
  57.                 _arrPlanes[i] = [];
  58.             }
  59.             
  60.             // 2d
  61.             for (i = 0; i < LINES_NUM; i++)
  62.             {
  63.                 var newPos:Object = getRandomPos()
  64.                 var o:Object =
  65.                 {
  66.                     x         : newPos.x,
  67.                     prevX     : newPos.x,
  68.                     y         : newPos.y,
  69.                     prevY     : newPos.y,
  70.                     z         : newPos.z,
  71.                     prevZ     : newPos.z,
  72.                     color     : Math.random() * 0xFFFFFF
  73.                 }
  74.                 
  75.                 _objArray.push(o)
  76.                 randomTween(getRandomData(o))
  77.             }
  78.         }
  79.         private function randomTween(o:Object):void
  80.         {
  81.             Tweener.addTween(o,
  82.             { 
  83.                 x            :    o.x1,
  84.                 y            :    o.y1, 
  85.                 z            :    o.z1, 
  86.                 _bezier        :    o.bezier, 
  87.                 time                :    o.time,
  88.                 transition            :    "linear"
  89.                 onComplete    :    function():void
  90.                 {
  91.                     randomTween(getRandomData(o));
  92.                 }
  93.             });
  94.         }
  95.         
  96.         private function getRandomData(o:Object):Object
  97.         {
  98.             o.time = (POINT_NUM * 0.5) + (POINT_NUM * .75);
  99.             var newPos:Object = getRandomPos();
  100.             o.x1 = newPos.x;
  101.             o.y1 = newPos.y;
  102.             o.z1 = newPos.z;
  103.             o.bezier = [];
  104.             for (var i:int = 0; i < POINT_NUM; i++)
  105.             {
  106.                 var newBezierPos:Object = getRandomPos();
  107.                 o.bezier.push(
  108.                 {
  109.                     x : newBezierPos.x,
  110.                     y : newBezierPos.y,
  111.                     z : newBezierPos.z
  112.                 });
  113.             }
  114.             return o;
  115.         }
  116.         private function getRandomPos():Object
  117.         {
  118.             var angleY:Number = Math.random() * 2 * Math.PI;
  119.             var angleXZ:Number = Math.random() * 2 * Math.PI;
  120.             return {
  121.                 x : Math.cos(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  122.                 y : Math.sin(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  123.                 z : Math.cos(angleXZ) * MAX_RADIUS
  124.             };
  125.         }
  126.         
  127.         private var _arrPlanes:Array = []
  128.         
  129.         override protected function onRenderTick(e:Event = null):void
  130.         {
  131.             for (var i:int = 0; i < LINES_NUM; i++)
  132.             {
  133.                 var d1:DisplayObject3D = new DisplayObject3D()
  134.                 d1.x = _objArray[i].x
  135.                 d1.y = _objArray[i].y
  136.                 d1.z = _objArray[i].z
  137.                 var d2:DisplayObject3D = new DisplayObject3D()
  138.                 d2.x = _objArray[i].prevX
  139.                 d2.y = _objArray[i].prevY
  140.                 d2.z = _objArray[i].prevZ
  141.                 
  142.                 d1.lookAt(d2);
  143.             
  144.                 // Planes
  145.                 var len:Number = Math.sqrt(
  146.                     (_objArray[i].x - _objArray[i].prevX) * (_objArray[i].x - _objArray[i].prevX)
  147.                     + (_objArray[i].y - _objArray[i].prevY) * (_objArray[i].y - _objArray[i].prevY)
  148.                     + (_objArray[i].z - _objArray[i].prevZ) * (_objArray[i].z - _objArray[i].prevZ)
  149.                 )
  150.                 
  151.                 var mat:MaterialObject3D = new WireframeMaterial(_objArray[i].color)
  152.                 mat.doubleSided = true
  153.                 var o:DisplayObject3D = scene.addChild(new Plane(mat, 100100))
  154.                 o.copyTransform(d1.transform)
  155.                 o.pitch(90)
  156.                 
  157.                 _arrPlanes[i].push(o);
  158.                 
  159.                 if (_arrPlanes[i].length > 10)
  160.                 {
  161.                     var tmp:DisplayObject3D = _arrPlanes[i][0]
  162.                     
  163.                     var cameraTarget :DisplayObject3D = new DisplayObject3D();
  164.                     cameraTarget.copyTransform( tmp );
  165.                     cameraTarget.moveBackward(100);
  166.                     cameraTarget.moveUp(100);
  167.                     camera.copyTransform(cameraTarget)
  168.                     
  169.                     camera.lookAt(_arrPlanes[i][10])
  170.                     cameraTarget = null
  171.                 }
  172.                 
  173.                 if (_arrPlanes[i].length > VERTICES_NUM)
  174.                 {
  175.                     scene.removeChild(_arrPlanes[i].shift())
  176.                 }
  177.                 
  178.                 _objArray[i].prevX = _objArray[i].x;
  179.                 _objArray[i].prevY = _objArray[i].y;
  180.                 _objArray[i].prevZ = _objArray[i].z;
  181.             }
  182.             
  183.             super.onRenderTick(e);
  184.         }
  185.     }
  186. }
noswf
  1. // forked from clockmaker's [PV3D] Ribon Road
  2. /*=====================================================*//**
  3. * Papervison3Dを利用したリボン表現
  4. *
  5. * Tweenerを使って作成したベジェ曲線に
  6. * Planeを位置と角度を調整して並べています。
  7. * 強引なやり方なので、いい方法があったら教えてください!
  8. * @author Yasu (clockmaker.jp)
  9. *//*======================================================*/
  10. package
  11. {
  12.     import caurina.transitions.properties.CurveModifiers;
  13.     import caurina.transitions.Tweener;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.utils.getTimer;
  17.     import org.papervision3d.core.geom.*;
  18.     import org.papervision3d.core.geom.renderables.*;
  19.     import org.papervision3d.core.proto.*;
  20.     import org.papervision3d.materials.shadematerials.*;
  21.     import org.papervision3d.materials.special.*;
  22.     import org.papervision3d.objects.*;
  23.     import org.papervision3d.objects.primitives.*;
  24.     import org.papervision3d.view.*;
  25.     import org.papervision3d.cameras.*;
  26.     import org.papervision3d.lights.*
  27.     import org.papervision3d.materials.*
  28.     import org.papervision3d.materials.utils.*
  29.     import org.papervision3d.core.math.Matrix3D;
  30.     
  31.     [SWF(width = "720", height = "480", frameRate = "60", backgroundColor="0xFFFFFF")]
  32.     public class Main extends BasicView
  33.     {
  34.                 private var lineMaterial            :LineMaterial;
  35.                 private var _arrLines                :Array     = [];
  36.                 private var _objArray                :Array     = [];
  37.                 private var LINES_NUM        :int     = 1
  38.                 private var MAX_RADIUS        :int    = 3000;
  39.                 private var POINT_NUM        :uint     = 5
  40.                 private var VERTICES_NUM    :uint     = 400
  41.                 private var CAMERA_POSITION    :uint     = 3000;
  42.         
  43.         public function Main()
  44.         {
  45.             super(00truefalse, CameraType.FREE);
  46.             CurveModifiers.init();
  47.             camera.focus = 250
  48.             camera.zoom = 1
  49.             init()
  50.             startRendering()
  51.         }
  52.         private function init():void
  53.         {
  54.             // 3d
  55.             for (var i:int = 0; i < LINES_NUM; i++)
  56.             {
  57.                 _arrPlanes[i] = [];
  58.             }
  59.             
  60.             // 2d
  61.             for (i = 0; i < LINES_NUM; i++)
  62.             {
  63.                 var newPos:Object = getRandomPos()
  64.                 var o:Object =
  65.                 {
  66.                     x         : newPos.x,
  67.                     prevX     : newPos.x,
  68.                     y         : newPos.y,
  69.                     prevY     : newPos.y,
  70.                     z         : newPos.z,
  71.                     prevZ     : newPos.z,
  72.                     color     : Math.random() * 0xFFFFFF
  73.                 }
  74.                 
  75.                 _objArray.push(o)
  76.                 randomTween(getRandomData(o))
  77.             }
  78.         }
  79.         private function randomTween(o:Object):void
  80.         {
  81.             Tweener.addTween(o,
  82.             { 
  83.                 x            :    o.x1,
  84.                 y            :    o.y1, 
  85.                 z            :    o.z1, 
  86.                 _bezier        :    o.bezier, 
  87.                 time                :    o.time,
  88.                 transition            :    "linear"
  89.                 onComplete    :    function():void
  90.                 {
  91.                     randomTween(getRandomData(o));
  92.                 }
  93.             });
  94.         }
  95.         
  96.         private function getRandomData(o:Object):Object
  97.         {
  98.             o.time = (POINT_NUM * 0.5) + (POINT_NUM * .75);
  99.             var newPos:Object = getRandomPos();
  100.             o.x1 = newPos.x;
  101.             o.y1 = newPos.y;
  102.             o.z1 = newPos.z;
  103.             o.bezier = [];
  104.             for (var i:int = 0; i < POINT_NUM; i++)
  105.             {
  106.                 var newBezierPos:Object = getRandomPos();
  107.                 o.bezier.push(
  108.                 {
  109.                     x : newBezierPos.x,
  110.                     y : newBezierPos.y,
  111.                     z : newBezierPos.z
  112.                 });
  113.             }
  114.             return o;
  115.         }
  116.         private function getRandomPos():Object
  117.         {
  118.             var angleY:Number = Math.random() * 2 * Math.PI;
  119.             var angleXZ:Number = Math.random() * 2 * Math.PI;
  120.             return {
  121.                 x : Math.cos(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  122.                 y : Math.sin(angleY) * Math.sin(angleXZ) * MAX_RADIUS,
  123.                 z : Math.cos(angleXZ) * MAX_RADIUS
  124.             };
  125.         }
  126.         
  127.         private var _arrPlanes:Array = []
  128.         
  129.         override protected function onRenderTick(e:Event = null):void
  130.         {
  131.             for (var i:int = 0; i < LINES_NUM; i++)
  132.             {
  133.                 var d1:DisplayObject3D = new DisplayObject3D()
  134.                 d1.x = _objArray[i].x
  135.                 d1.y = _objArray[i].y
  136.                 d1.z = _objArray[i].z
  137.                 var d2:DisplayObject3D = new DisplayObject3D()
  138.                 d2.x = _objArray[i].prevX
  139.                 d2.y = _objArray[i].prevY
  140.                 d2.z = _objArray[i].prevZ
  141.                 
  142.                 d1.lookAt(d2);
  143.             
  144.                 // Planes
  145.                 var len:Number = Math.sqrt(
  146.                     (_objArray[i].x - _objArray[i].prevX) * (_objArray[i].x - _objArray[i].prevX)
  147.                     + (_objArray[i].y - _objArray[i].prevY) * (_objArray[i].y - _objArray[i].prevY)
  148.                     + (_objArray[i].z - _objArray[i].prevZ) * (_objArray[i].z - _objArray[i].prevZ)
  149.                 )
  150.                 
  151.                 var mat:MaterialObject3D = new WireframeMaterial(_objArray[i].color)
  152.                 mat.doubleSided = true
  153.                 var o:DisplayObject3D = scene.addChild(new Plane(mat, 100100))
  154.                 o.copyTransform(d1.transform)
  155.                 o.pitch(90)
  156.                 
  157.                 _arrPlanes[i].push(o);
  158.                 
  159.                 if (_arrPlanes[i].length > 10)
  160.                 {
  161.                     var tmp:DisplayObject3D = _arrPlanes[i][0]
  162.                     
  163.                     var cameraTarget :DisplayObject3D = new DisplayObject3D();
  164.                     cameraTarget.copyTransform( tmp );
  165.                     cameraTarget.moveBackward(100);
  166.                     cameraTarget.moveUp(100);
  167.                     camera.copyTransform(cameraTarget)
  168.                     
  169.                     camera.lookAt(_arrPlanes[i][10])
  170.                     cameraTarget = null
  171.                 }
  172.                 
  173.                 if (_arrPlanes[i].length > VERTICES_NUM)
  174.                 {
  175.                     scene.removeChild(_arrPlanes[i].shift())
  176.                 }
  177.                 
  178.                 _objArray[i].prevX = _objArray[i].x;
  179.                 _objArray[i].prevY = _objArray[i].y;
  180.                 _objArray[i].prevZ = _objArray[i].z;
  181.             }
  182.             
  183.             super.onRenderTick(e);
  184.         }
  185.     }
  186. }
noswf
Get Adobe Flash Player