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

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

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


FORKED
  1. // forked from y_tti's Papervision3D 3D座標→2D座標
  2. package
  3. {
  4.     //3D座標→2D座標の変換。
  5.     //参考:http://www.nabble.com/3D-%3E%3E-2D-coordinates-td14730886.html
  6.     
  7.     import flash.display.StageQuality;
  8.     import flash.events.Event;
  9.     import flash.geom.Point;
  10.     
  11.     import org.papervision3d.cameras.CameraType;
  12.     import org.papervision3d.core.math.Matrix3D;
  13.     import org.papervision3d.core.proto.CameraObject3D;
  14.     import org.papervision3d.lights.PointLight3D;
  15.     import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
  16.     import org.papervision3d.materials.utils.MaterialsList;
  17.     import org.papervision3d.objects.DisplayObject3D;
  18.     import org.papervision3d.objects.primitives.Cube;
  19.     import org.papervision3d.view.BasicView;
  20.     
  21.     [SWF(width = "465", height = "465", frameRate = "30", backgroundColor = "0x000000")]
  22.     public class TestObj2DPoint extends BasicView
  23.     {
  24.         private var _cube:Cube;
  25.         private var _ball:Ball;
  26.         public function TestObj2DPoint()
  27.         {
  28.             stage.quality = StageQuality.BEST;
  29.             super(465,465,false,false,CameraType.DEBUG);
  30.             
  31.             //FlatShadeを使用したcube作成 (3次元)
  32.             var light:PointLight3D = new PointLight3D();
  33.             var flatmate:FlatShadeMaterial = new FlatShadeMaterial(light,0xFF00FF,0xAA00AA);
  34.             flatmate.doubleSided = true;
  35.             var materials:MaterialsList = new MaterialsList({all:flatmate});
  36.             _cube =new Cube(materials,500,500,500,4,4,4);
  37.             scene.addChild(_cube);
  38.             
  39.             //ボール作成(2次元)
  40.             _ball = new Ball();
  41.             addChild(_ball);
  42.             
  43.             startRendering();
  44.             addEventListener(Event.ENTER_FRAME , _loop );
  45.         }
  46.         
  47.         private function _loop(e:Event):void {
  48.             _cube.yaw(1);
  49.             _cube.pitch(0.5);
  50.             
  51.             //3D座標のCubuの位置を2D座標に変換 →ボールのxyに代入。
  52.             var p:Point = getObj2DCords(_cube,camera,stage.stageWidth/2 , stage.stageHeight/2 );
  53.             _ball.x = p.x;
  54.             _ball.y = p.y;
  55.         }
  56.         
  57.         //参考:http://www.nabble.com/3D-%3E%3E-2D-coordinates-td14730886.html
  58.         private function getObj2DCords ( o:DisplayObject3D, camera:CameraObject3D,  offsetX:Number = 0, offsetY:Number = 0 ):Point
  59.         {
  60.             var view:Matrix3D = o.view;
  61.             var persp:Number = (camera.focus * camera.zoom) / (camera.focus + view.n34);
  62.             return new Point ( (view.n14 * persp) + offsetX, (view.n24 * persp) + offsetY );
  63.         }
  64.     }
  65. }
  66.     import flash.display.Sprite;
  67.     
  68. class Ball extends Sprite {
  69.     public function Ball():void {
  70.         this.graphics.beginFill(0x0000FF , 1 );
  71.         this.graphics.drawCircle(0,0,20);
  72.         this.graphics.endFill();
  73.     }
  74. }
noswf
  1. // forked from y_tti's Papervision3D 3D座標→2D座標
  2. package
  3. {
  4.     //3D座標→2D座標の変換。
  5.     //参考:http://www.nabble.com/3D-%3E%3E-2D-coordinates-td14730886.html
  6.     
  7.     import flash.display.StageQuality;
  8.     import flash.events.Event;
  9.     import flash.geom.Point;
  10.     
  11.     import org.papervision3d.cameras.CameraType;
  12.     import org.papervision3d.core.math.Matrix3D;
  13.     import org.papervision3d.core.proto.CameraObject3D;
  14.     import org.papervision3d.lights.PointLight3D;
  15.     import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
  16.     import org.papervision3d.materials.utils.MaterialsList;
  17.     import org.papervision3d.objects.DisplayObject3D;
  18.     import org.papervision3d.objects.primitives.Cube;
  19.     import org.papervision3d.view.BasicView;
  20.     
  21.     [SWF(width = "465", height = "465", frameRate = "30", backgroundColor = "0x000000")]
  22.     public class TestObj2DPoint extends BasicView
  23.     {
  24.         private var _cube:Cube;
  25.         private var _ball:Ball;
  26.         public function TestObj2DPoint()
  27.         {
  28.             stage.quality = StageQuality.BEST;
  29.             super(465,465,false,false,CameraType.DEBUG);
  30.             
  31.             //FlatShadeを使用したcube作成 (3次元)
  32.             var light:PointLight3D = new PointLight3D();
  33.             var flatmate:FlatShadeMaterial = new FlatShadeMaterial(light,0xFF00FF,0xAA00AA);
  34.             flatmate.doubleSided = true;
  35.             var materials:MaterialsList = new MaterialsList({all:flatmate});
  36.             _cube =new Cube(materials,500,500,500,4,4,4);
  37.             scene.addChild(_cube);
  38.             
  39.             //ボール作成(2次元)
  40.             _ball = new Ball();
  41.             addChild(_ball);
  42.             
  43.             startRendering();
  44.             addEventListener(Event.ENTER_FRAME , _loop );
  45.         }
  46.         
  47.         private function _loop(e:Event):void {
  48.             _cube.yaw(1);
  49.             _cube.pitch(0.5);
  50.             
  51.             //3D座標のCubuの位置を2D座標に変換 →ボールのxyに代入。
  52.             var p:Point = getObj2DCords(_cube,camera,stage.stageWidth/2 , stage.stageHeight/2 );
  53.             _ball.x = p.x;
  54.             _ball.y = p.y;
  55.         }
  56.         
  57.         //参考:http://www.nabble.com/3D-%3E%3E-2D-coordinates-td14730886.html
  58.         private function getObj2DCords ( o:DisplayObject3D, camera:CameraObject3D,  offsetX:Number = 0, offsetY:Number = 0 ):Point
  59.         {
  60.             var view:Matrix3D = o.view;
  61.             var persp:Number = (camera.focus * camera.zoom) / (camera.focus + view.n34);
  62.             return new Point ( (view.n14 * persp) + offsetX, (view.n24 * persp) + offsetY );
  63.         }
  64.     }
  65. }
  66.     import flash.display.Sprite;
  67.     
  68. class Ball extends Sprite {
  69.     public function Ball():void {
  70.         this.graphics.beginFill(0x0000FF , 1 );
  71.         this.graphics.drawCircle(0,0,20);
  72.         this.graphics.endFill();
  73.     }
  74. }
noswf
Get Adobe Flash Player