I started learning how to use away3D today and I made like a simple
example of two views rendering the same scene, with a cone, sphere and
cube rotating around. The one scene using a normal Camera3D and the
other using a TargetCamera3D... Everything was cool until I put
PhongColorMaterials onto the objects... Funky things started
happening, for some reason all the objects took on the same material
at once, only one camera worked at a time... The depth of the objects
went outta whack... Is there something I didn't do right or something?
Heres the code:

package {

        import away3d.containers.Scene3D;
        import away3d.containers.View3D;

        import away3d.lights.DirectionalLight3D;
        import away3d.materials.PhongColorMaterial;

        import away3d.containers.ObjectContainer3D;

        import away3d.primitives.Sphere;
        import away3d.primitives.Cube;
        import away3d.primitives.Cone;

        import away3d.cameras.Camera3D;
        import away3d.cameras.TargetCamera3D;

        import away3d.core.math.Number3D;
        import away3d.core.clip.RectangleClipping;
        import away3d.core.base.Object3D;

        import away3d.events.MouseEvent3D;

        import flash.display.Sprite;
        import flash.events.Event;

        public class class3 extends Sprite {

        var myScene:Scene3D;
        var myObjects:ObjectContainer3D;

        var myBox:Cube;
        var mySphere:Sphere;
        var myCone:Cone;

        var myView1:View3D;
        var myView2:View3D;

        var myCamera1:Camera3D;
        var myCamera2:TargetCamera3D;

        var myLight1:DirectionalLight3D;

        var mat1:PhongColorMaterial = new PhongColorMaterial(0xFFFF00);
                var mat2:PhongColorMaterial = new PhongColorMaterial(0xFF0000);
                var mat3:PhongColorMaterial = new PhongColorMaterial(0x0000FF);

        public function class3() {
                myScene = new Scene3D();
                //myScene.autoUpdate = false;


                myObjects = new ObjectContainer3D();
                myScene.addChild(myObjects);

                makeObjects();
                makeViews();
                makeLights();

                addEventListener(Event.ENTER_FRAME, renderScene);
        }
        function makeObjects():void {


                myBox = new Cube({material:mat1, width:10, height:40, depth:
10,x:-50});
                mySphere = new Sphere({material:mat2, radius:20});
                myCone = new Cone({material:mat3, radius:20, height:20,x:50});

                myObjects.addChild(myBox);
                myObjects.addChild(mySphere);
                myObjects.addChild(myCone);

                myBox.addEventListener(MouseEvent3D.MOUSE_DOWN, focusOnObject);
                mySphere.addEventListener(MouseEvent3D.MOUSE_DOWN, 
focusOnObject);
                myCone.addEventListener(MouseEvent3D.MOUSE_DOWN, focusOnObject);
        }

        function makeViews():void {
                myCamera1 = new Camera3D({zoom:10,focus:100});
                myCamera1.z = -150;
                myCamera1.y = 250;
                myCamera1.lookAt(new Number3D(0,0,0));
                myView1 = new 
View3D({x:200,y:200,scene:myScene,camera:myCamera1});
                myView1.clipping = new RectangleClipping({minX:-200, minY:-200, 
maxX:
200, maxY:200})

                addChild(myView1);

                myCamera2 = new TargetCamera3D({zoom:10,focus:100});
                myCamera2.z = -250;
                myCamera2.target = mySphere;
                myView2 = new 
View3D({x:600,y:200,scene:myScene,camera:myCamera2});
                myView2.clipping = new RectangleClipping({minX:-200, minY:-200, 
maxX:
200, maxY:200})
                addChild(myView2);
        }
        function makeLights():void {
                myLight1 = new DirectionalLight3D();
                myScene.addChild(myLight1);
                myLight1.x = 100;
                myLight1.y = 80;
                myLight1.z = -100;
        }

        function renderScene(e:Event):void {
                myObjects.rotationY += 0.5;

                //myScene.update();
                myView1.render();
                myView2.render();
        }

        function focusOnObject(e:MouseEvent3D):void {
                var obj:Object3D = e.currentTarget as Object3D;
                myCamera1.lookAt(new Number3D(obj.x,obj.y,obj.z));
                myCamera2.target = obj;
        }

        }
}

Reply via email to