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


embed

FORKED

PV3D でマルチビュー(問題点あり) forked from: PV3D でマルチビュー(問題点あり) [diff(2)]

  1. // forked from tkinjo's PV3D でマルチビュー(問題点あり)
  2. package  
  3. {
  4.     /**
  5.      * PV3D でマルチビュー
  6.      * 
  7.      * ということで作ったものの、マルチビューは実現することができたのですが、期待通りの結果になりません。
  8.      * 
  9.      * 
  10.      * 
  11.      * --- 問題個所 ---
  12.      * 100行目辺り:    colorMaterial.doubleSided = true; // true にすると辺のふちが欠ける
  13.      * 
  14.      * どなたか解決方法を知っている方は教えて頂けないでしょうか?
  15.      * 
  16.      * 
  17.      * 
  18.      * --- 解決 ---
  19.      * 80行目辺り:  //cameras[ 0 ].z = 1;           // 0 だと表示されない。なぜ?
  20.      * ->PV3D の仕様(バグ?)
  21.      * 
  22.      * --- 検証 ---
  23.      * forked from: forked from: PV3D でマルチビュー(問題点あり)
  24.      * http://wonderfl.kayac.com/code/8f3b9cf3f4cc7fab0213362b9ba4346ca452d113
  25.      * 
  26.      * PV3D でマルチビュー(問題点あり)の問題が起こる過程を再現
  27.      * http://wonderfl.kayac.com/code/225f3df8bffa868aaad5f127b043dcdee0b75cf8
  28.      * 
  29.      * 
  30.      * 
  31.      * 参考
  32.      * 
  33.      * note.x - [Papervision3D2.0] Viewport3D
  34.      * http://blog.r3c7.net/?p=130
  35.      * 
  36.      * 勉強部屋 - Papervision3Dのカメラ入門
  37.      * http://www.bushclover-field.jp/papervision_introduction04/
  38.      * 
  39.      * 
  40.      * 
  41.      * また、この問題を rect さんがとりあげてくれました。
  42.      * 
  43.      * note.x - [PV3D2.x] DisplayObject3D.lookAt problem
  44.      * http://blog.r3c7.net/?p=394
  45.      * 
  46.      * rect さん、ありがとうございます。
  47.      */
  48.     
  49.     import flash.display.Sprite;
  50.     import flash.events.Event;
  51.     import org.papervision3d.cameras.Camera3D;
  52.     import org.papervision3d.core.proto.CameraObject3D;
  53.     import org.papervision3d.core.proto.SceneObject3D;
  54.     import org.papervision3d.materials.ColorMaterial;
  55.     import org.papervision3d.materials.utils.MaterialsList;
  56.     import org.papervision3d.materials.WireframeMaterial;
  57.     import org.papervision3d.objects.DisplayObject3D;
  58.     import org.papervision3d.objects.primitives.Cube;
  59.     import org.papervision3d.render.BasicRenderEngine;
  60.     import org.papervision3d.view.Viewport3D;
  61.     
  62.     [SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#ffffff")]
  63.     /**
  64.      * ...
  65.      * @author tkinjo
  66.      */
  67.     public class Main extends Sprite
  68.     {
  69.         /**
  70.          * 
  71.          */
  72.         private var scene:SceneObject3D;
  73.         private var renderer:BasicRenderEngine;
  74.         
  75.         private var viewports:Vector.<Viewport3D>;
  76.         private var cameras:Vector.<CameraObject3D>;
  77.         
  78.         private var cube:Cube;
  79.         
  80.         /**
  81.          * 
  82.          */
  83.         public function Main() 
  84.         {
  85.             scene = new SceneObject3D();
  86.             renderer = new BasicRenderEngine();
  87.             
  88.             viewports = new Vector.<Viewport3D>();
  89.             cameras = new Vector.<CameraObject3D>();
  90.             for ( var i:uint = 0; i < 4; i++ ) {
  91.                 
  92.                 var viewport:Viewport3D = new Viewport3D( stage.stageWidth / 2, stage.stageHeight/ 2 );
  93.                 viewport.x = stage.stageWidth / 2 * ( i % 2 );
  94.                 viewport.y = stage.stageHeight / 2 * uint( i / 2 );
  95.                 
  96.                 var camera:CameraObject3D = new Camera3D();
  97.                 camera.target = DisplayObject3D.ZERO;
  98.                 camera.z = 0;
  99.                 camera.zoom = 115;
  100.                 
  101.                 viewports.push( viewport );
  102.                 cameras.push( camera );
  103.                 
  104.                 addChild( viewport );
  105.             }
  106.             cameras[ 0 ].y = 1000;
  107.             //cameras[ 0 ].z = 1;    // 0 だと表示されない。なぜ?-> 解決。最上部コメント参照
  108.             cameras[ 1 ].x = 1000;
  109.             cameras[ 1 ].y = 1000;
  110.             cameras[ 2 ].z = 1000;
  111.             cameras[ 3 ].x = 1000;
  112.             
  113.             /**
  114.              * キューブの作成
  115.              * 
  116.              * キューブのコンストラクタ
  117.              * http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/primitives/Cube.html#Cube()
  118.              */
  119.             var cubeMaterialParams:Array = [ 
  120.                     { name:"front", color:0xff0000 }, 
  121.                     { name:"back", color:0xffff00 }, 
  122.                     { name:"right", color:0x00ff00 }, 
  123.                     { name:"left", color:0x00ffff }, 
  124.                     { name:"top", color:0x0000ff },
  125.                     { name:"bottom", color:0xff00ff } 
  126.                 ];
  127.             var cubeMaterialsList:MaterialsList = new MaterialsList();
  128.             for ( i = 0; i < 6; i++ ) {
  129.                 var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color );
  130.                 //var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color, 0.5 );
  131.                 colorMaterial.doubleSided = false;    // true にすると辺のふちが欠ける
  132.                 cubeMaterialsList.addMaterial( colorMaterial, cubeMaterialParams[ i ].name );
  133.             }
  134.             cube = new Cube( cubeMaterialsList, 100100100 );
  135.             scene.addChild( cube );
  136.             
  137.             /**
  138.              * 
  139.              */
  140.             addEventListener(Event.ENTER_FRAME, enterFrameHandler );
  141.         }
  142.         
  143.         /**
  144.          * 
  145.          * @param    event
  146.          */
  147.         private function enterFrameHandler( event:Event ):void {
  148.             
  149.             cube.rotationY++;
  150.             
  151.             for ( var i:uint = 0; i < 4; i++ ) {
  152.                 
  153.                 renderer.renderScene( scene, cameras[ i ], viewports[ i ] );
  154.             }
  155.         }
  156.     }
  157. }
noswf
  1. // forked from tkinjo's PV3D でマルチビュー(問題点あり)
  2. package  
  3. {
  4.     /**
  5.      * PV3D でマルチビュー
  6.      * 
  7.      * ということで作ったものの、マルチビューは実現することができたのですが、期待通りの結果になりません。
  8.      * 
  9.      * 
  10.      * 
  11.      * --- 問題個所 ---
  12.      * 100行目辺り:    colorMaterial.doubleSided = true; // true にすると辺のふちが欠ける
  13.      * 
  14.      * どなたか解決方法を知っている方は教えて頂けないでしょうか?
  15.      * 
  16.      * 
  17.      * 
  18.      * --- 解決 ---
  19.      * 80行目辺り:  //cameras[ 0 ].z = 1;           // 0 だと表示されない。なぜ?
  20.      * ->PV3D の仕様(バグ?)
  21.      * 
  22.      * --- 検証 ---
  23.      * forked from: forked from: PV3D でマルチビュー(問題点あり)
  24.      * http://wonderfl.kayac.com/code/8f3b9cf3f4cc7fab0213362b9ba4346ca452d113
  25.      * 
  26.      * PV3D でマルチビュー(問題点あり)の問題が起こる過程を再現
  27.      * http://wonderfl.kayac.com/code/225f3df8bffa868aaad5f127b043dcdee0b75cf8
  28.      * 
  29.      * 
  30.      * 
  31.      * 参考
  32.      * 
  33.      * note.x - [Papervision3D2.0] Viewport3D
  34.      * http://blog.r3c7.net/?p=130
  35.      * 
  36.      * 勉強部屋 - Papervision3Dのカメラ入門
  37.      * http://www.bushclover-field.jp/papervision_introduction04/
  38.      * 
  39.      * 
  40.      * 
  41.      * また、この問題を rect さんがとりあげてくれました。
  42.      * 
  43.      * note.x - [PV3D2.x] DisplayObject3D.lookAt problem
  44.      * http://blog.r3c7.net/?p=394
  45.      * 
  46.      * rect さん、ありがとうございます。
  47.      */
  48.     
  49.     import flash.display.Sprite;
  50.     import flash.events.Event;
  51.     import org.papervision3d.cameras.Camera3D;
  52.     import org.papervision3d.core.proto.CameraObject3D;
  53.     import org.papervision3d.core.proto.SceneObject3D;
  54.     import org.papervision3d.materials.ColorMaterial;
  55.     import org.papervision3d.materials.utils.MaterialsList;
  56.     import org.papervision3d.materials.WireframeMaterial;
  57.     import org.papervision3d.objects.DisplayObject3D;
  58.     import org.papervision3d.objects.primitives.Cube;
  59.     import org.papervision3d.render.BasicRenderEngine;
  60.     import org.papervision3d.view.Viewport3D;
  61.     
  62.     [SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#ffffff")]
  63.     /**
  64.      * ...
  65.      * @author tkinjo
  66.      */
  67.     public class Main extends Sprite
  68.     {
  69.         /**
  70.          * 
  71.          */
  72.         private var scene:SceneObject3D;
  73.         private var renderer:BasicRenderEngine;
  74.         
  75.         private var viewports:Vector.<Viewport3D>;
  76.         private var cameras:Vector.<CameraObject3D>;
  77.         
  78.         private var cube:Cube;
  79.         
  80.         /**
  81.          * 
  82.          */
  83.         public function Main() 
  84.         {
  85.             scene = new SceneObject3D();
  86.             renderer = new BasicRenderEngine();
  87.             
  88.             viewports = new Vector.<Viewport3D>();
  89.             cameras = new Vector.<CameraObject3D>();
  90.             for ( var i:uint = 0; i < 4; i++ ) {
  91.                 
  92.                 var viewport:Viewport3D = new Viewport3D( stage.stageWidth / 2, stage.stageHeight/ 2 );
  93.                 viewport.x = stage.stageWidth / 2 * ( i % 2 );
  94.                 viewport.y = stage.stageHeight / 2 * uint( i / 2 );
  95.                 
  96.                 var camera:CameraObject3D = new Camera3D();
  97.                 camera.target = DisplayObject3D.ZERO;
  98.                 camera.z = 1;
  99.                 camera.zoom = 110;
  100.                 
  101.                 viewports.push( viewport );
  102.                 cameras.push( camera );
  103.                 
  104.                 addChild( viewport );
  105.             }
  106.             cameras[ 0 ].y = 1000;
  107.             //cameras[ 0 ].z = 1;    // 0 だと表示されない。なぜ?-> 解決。最上部コメント参照
  108.             cameras[ 1 ].x = 1000;
  109.             cameras[ 1 ].y = 1000;
  110.             cameras[ 2 ].z = 1000;
  111.             cameras[ 3 ].x = 1000;
  112.             
  113.             /**
  114.              * キューブの作成
  115.              * 
  116.              * キューブのコンストラクタ
  117.              * http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/primitives/Cube.html#Cube()
  118.              */
  119.             var cubeMaterialParams:Array = [ 
  120.                     { name:"front", color:0xff0000 }, 
  121.                     { name:"back", color:0xffff00 }, 
  122.                     { name:"right", color:0x00ff00 }, 
  123.                     { name:"left", color:0x00ffff }, 
  124.                     { name:"top", color:0x0000ff },
  125.                     { name:"bottom", color:0xff00ff } 
  126.                 ];
  127.             var cubeMaterialsList:MaterialsList = new MaterialsList();
  128.             for ( i = 0; i < 6; i++ ) {
  129.                 var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color );
  130.                 //var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color, 0.5 );
  131.                 colorMaterial.doubleSided = true;    // true にすると辺のふちが欠ける
  132.                 cubeMaterialsList.addMaterial( colorMaterial, cubeMaterialParams[ i ].name );
  133.             }
  134.             cube = new Cube( cubeMaterialsList, 100100100 );
  135.             scene.addChild( cube );
  136.             
  137.             /**
  138.              * 
  139.              */
  140.             addEventListener(Event.ENTER_FRAME, enterFrameHandler );
  141.         }
  142.         
  143.         /**
  144.          * 
  145.          * @param    event
  146.          */
  147.         private function enterFrameHandler( event:Event ):void {
  148.             //cubeの回転方向を変える
  149.             cube.rotationY++;
  150.             
  151.             for ( var i:uint = 0; i < 4; i++ ) {
  152.                 
  153.                 renderer.renderScene( scene, cameras[ i ], viewports[ i ] );
  154.             }
  155.         }
  156.     }
  157. }
noswf
  1. // forked from tkinjo's PV3D でマルチビュー(問題点あり)
  2. package  
  3. {
  4.     /**
  5.      * PV3D でマルチビュー
  6.      * 
  7.      * ということで作ったものの、マルチビューは実現することができたのですが、期待通りの結果になりません。
  8.      * 
  9.      * 以下問題個所
  10.      * 81:  //cameras[ 0 ].z = 1;           // 0 だと表示されない。なぜ?
  11.      * 105:    colorMaterial.doubleSided = true; // true にすると辺のふちが欠ける
  12.      * 
  13.      * どなたか解決方法を知っている方は教えて頂けないでしょうか?
  14.      * 
  15.      * 参考
  16.      * 
  17.      * note.x - [Papervision3D2.0] Viewport3D
  18.      * http://blog.r3c7.net/?p=130
  19.      * 
  20.      * 勉強部屋 - Papervision3Dのカメラ入門
  21.      * http://www.bushclover-field.jp/papervision_introduction04/
  22.      */
  23.     
  24.     import flash.display.Sprite;
  25.     import flash.events.Event;
  26.     import org.papervision3d.cameras.Camera3D;
  27.     import org.papervision3d.core.proto.CameraObject3D;
  28.     import org.papervision3d.core.proto.SceneObject3D;
  29.     import org.papervision3d.materials.ColorMaterial;
  30.     import org.papervision3d.materials.utils.MaterialsList;
  31.     import org.papervision3d.materials.WireframeMaterial;
  32.     import org.papervision3d.objects.DisplayObject3D;
  33.     import org.papervision3d.objects.primitives.Cube;
  34.     import org.papervision3d.render.BasicRenderEngine;
  35.     import org.papervision3d.view.Viewport3D;
  36.     
  37.     [SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#ffffff")]
  38.     /**
  39.      * ...
  40.      * @author tkinjo
  41.      */
  42.     public class Main extends Sprite
  43.     {
  44.         /**
  45.          * 
  46.          */
  47.         private var scene:SceneObject3D;
  48.         private var renderer:BasicRenderEngine;
  49.         
  50.         private var viewports:Vector.<Viewport3D>;
  51.         private var cameras:Vector.<CameraObject3D>;
  52.         
  53.         private var cube:Cube;
  54.         
  55.         /**
  56.          * 
  57.          */
  58.         public function Main() 
  59.         {
  60.             scene = new SceneObject3D();
  61.             renderer = new BasicRenderEngine();
  62.             
  63.             viewports = new Vector.<Viewport3D>();
  64.             cameras = new Vector.<CameraObject3D>();
  65.             for ( var i:uint = 0; i < 4; i++ ) {
  66.                 
  67.                 var viewport:Viewport3D = new Viewport3D( stage.stageWidth / 2, stage.stageHeight/ 2 );
  68.                 viewport.x = stage.stageWidth / 2 * ( i % 2 );
  69.                 viewport.y = stage.stageHeight / 2 * uint( i / 2 );
  70.                 
  71.                 var camera:CameraObject3D = new Camera3D();
  72.                 camera.target = DisplayObject3D.ZERO;
  73.                 camera.z = 0;
  74.                 camera.zoom = 115;
  75.                 
  76.                 viewports.push( viewport );
  77.                 cameras.push( camera );
  78.                 
  79.                 addChild( viewport );
  80.             }
  81.                         
  82.             cameras[ 0 ].y = 1000;
  83.                         cameras[0].target = null;
  84.             cameras[ 0 ].z = 0;    // 0 だと表示されない。なぜ?
  85.                         cameras[0].rotationX=90;
  86.             cameras[ 1 ].x = 1000;
  87.             cameras[ 1 ].y = 1000;
  88.             cameras[ 2 ].z = 1000;
  89.             cameras[ 3 ].x = 1000;
  90.             
  91.             /**
  92.              * キューブの作成
  93.              * 
  94.              * キューブのコンストラクタ
  95.              * http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/primitives/Cube.html#Cube()
  96.              */
  97.             var cubeMaterialParams:Array = [ 
  98.                     { name:"front", color:0xff0000 }, 
  99.                     { name:"back", color:0xffff00 }, 
  100.                     { name:"right", color:0x00ff00 }, 
  101.                     { name:"left", color:0x00ffff }, 
  102.                     { name:"top", color:0x0000ff },
  103.                     { name:"bottom", color:0xff00ff } 
  104.                 ];
  105.             var cubeMaterialsList:MaterialsList = new MaterialsList();
  106.             for ( i = 0; i < 6; i++ ) {
  107.                 var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color );
  108.                 //var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color, 0.5 );
  109.                 colorMaterial.doubleSided = true;    // true にすると辺のふちが欠ける
  110.                 cubeMaterialsList.addMaterial( colorMaterial, cubeMaterialParams[ i ].name );
  111.             }
  112.             cube = new Cube( cubeMaterialsList, 100100100 );
  113.             scene.addChild( cube );
  114.             
  115.             /**
  116.              * 
  117.              */
  118.             addEventListener(Event.ENTER_FRAME, enterFrameHandler );
  119.         }
  120.         
  121.         /**
  122.          * 
  123.          * @param    event
  124.          */
  125.         private function enterFrameHandler( event:Event ):void {
  126.             
  127.             cube.rotationY++;
  128.             
  129.             for ( var i:uint = 0; i < 4; i++ ) {
  130.                 
  131.                 renderer.renderScene( scene, cameras[ i ], viewports[ i ] );
  132.             }
  133.         }
  134.     }
  135. }
noswf
  1. // forked from tkinjo's PV3D でマルチビュー(問題点あり)
  2. package  
  3. {
  4.     /**
  5.      * PV3D でマルチビュー(問題ありのまま)
  6.      */
  7.     
  8.     import flash.display.Sprite;
  9.     import flash.events.Event;
  10.     import org.papervision3d.cameras.Camera3D;
  11.     import org.papervision3d.core.proto.CameraObject3D;
  12.     import org.papervision3d.core.proto.SceneObject3D;
  13.     import org.papervision3d.materials.ColorMaterial;
  14.     import org.papervision3d.materials.utils.MaterialsList;
  15.     import org.papervision3d.materials.WireframeMaterial;
  16.     import org.papervision3d.objects.DisplayObject3D;
  17.     import org.papervision3d.objects.primitives.Cube;
  18.     import org.papervision3d.render.BasicRenderEngine;
  19.     import org.papervision3d.view.Viewport3D;
  20.     
  21.     [SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#ffffff")]
  22.     /**
  23.      * ...
  24.      * @author tkinjo
  25.      */
  26.     public class Main extends Sprite
  27.     {
  28.         /**
  29.          * 
  30.          */
  31.         private var scene:SceneObject3D;
  32.         private var renderer:BasicRenderEngine;
  33.         
  34.         private var viewports:Vector.<Viewport3D>;
  35.         private var cameras:Vector.<CameraObject3D>;
  36.         
  37.         private var cube:Cube;
  38.         
  39.         /**
  40.          * 
  41.          */
  42.         public function Main() 
  43.         {
  44.             scene = new SceneObject3D();
  45.             renderer = new BasicRenderEngine();
  46.             
  47.             viewports = new Vector.<Viewport3D>();
  48.             cameras = new Vector.<CameraObject3D>();
  49.             for ( var i:uint = 0; i < 4; i++ ) {
  50.                 
  51.                 var viewport:Viewport3D = new Viewport3D( stage.stageWidth / 2, stage.stageHeight/ 2 );
  52.                 viewport.x = stage.stageWidth / 2 * ( i % 2 );
  53.                 viewport.y = stage.stageHeight / 2 * uint( i / 2 );
  54.                 
  55.                 var camera:CameraObject3D = new Camera3D();
  56.                 camera.target = DisplayObject3D.ZERO;
  57.                 camera.z = 0;
  58.                 camera.zoom = 115;
  59.                 
  60.                 viewports.push( viewport );
  61.                 cameras.push( camera );
  62.                 
  63.                 addChild( viewport );
  64.             }
  65.             cameras[ 0 ].y = 1000;
  66.             cameras[ 0 ].z = 1;    // 0 だと表示されない。なぜ?
  67.             cameras[ 1 ].x = 1000;
  68.             cameras[ 1 ].y = 1000;
  69.             cameras[ 2 ].z = 1000;
  70.             cameras[ 3 ].x = 1000;
  71.             
  72.             /**
  73.              * キューブの作成
  74.              * 
  75.              * キューブのコンストラクタ
  76.              * http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/primitives/Cube.html#Cube()
  77.              */
  78.             var cubeMaterialParams:Array = [ 
  79.                     { name:"front", color:0xff0000 }, 
  80.                     { name:"back", color:0xffff00 }, 
  81.                     { name:"right", color:0x00ff00 }, 
  82.                     { name:"left", color:0x00ffff }, 
  83.                     { name:"top", color:0x0000ff },
  84.                     { name:"bottom", color:0xff00ff } 
  85.                 ];
  86.             var cubeMaterialsList:MaterialsList = new MaterialsList();
  87.             for ( i = 0; i < 6; i++ ) {
  88.                 //var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color );
  89.                 var colorMaterial:ColorMaterial = new ColorMaterial( cubeMaterialParams[ i ].color, 0.5 );
  90.                 colorMaterial.doubleSided = true;    // true にすると辺のふちが欠ける
  91.                 cubeMaterialsList.addMaterial( colorMaterial, cubeMaterialParams[ i ].name );
  92.             }
  93.             cube = new Cube( cubeMaterialsList, 100100100 );
  94.             scene.addChild( cube );
  95.             
  96.             /**
  97.              * 
  98.              */
  99.             addEventListener(Event.ENTER_FRAME, enterFrameHandler );
  100.         }
  101.         
  102.         /**
  103.          * 
  104.          * @param    event
  105.          */
  106.         private function enterFrameHandler( event:Event ):void {
  107.             
  108.             cube.rotationY++;
  109.             
  110.             for ( var i:uint = 0; i < 4; i++ ) {
  111.                 
  112.                 renderer.renderScene( scene, cameras[ i ], viewports[ i ] );
  113.             }
  114.         }
  115.     }
  116. }
noswf
Get Adobe Flash Player