[Papervision3D] camera position inside a ring of planes
Bart Wttewaall
mailinglists.wttewaall at gmail.com
Tue Oct 14 09:00:03 PDT 2008
How about:
Flip the planes 180 degrees and set the camera at the center.
Then use camera.yaw() to look left and right.
Cheers,
Bart
2008/10/14 Aurelplouf <aurelplouf at gmail.com>
>
> *bump*
>
> Aurelplouf wrote:
> >
> > Hello everyone,
> >
> > I am currently creating a sort of ring with 5 planes, and based on the
> > mouse position, the camera moves around the ring.
> >
> > My problem right now is that my camera is outside of the ring and I wish
> > to put the camera inside the ring instead.
> >
> > Thank you for your help
> >
> > my code :
> >
> > package {
> >
> > import flash.display.*;
> > import flash.display.Sprite;
> > import flash.net.*;
> > import flash.events.Event;
> > import flash.events.MouseEvent;
> >
> > import gs.TweenMax;
> > import gs.easing.*;
> >
> > import org.papervision3d.cameras.*;
> > import org.papervision3d.objects.*;
> > import org.papervision3d.objects.primitives.Plane;
> > import org.papervision3d.render.BasicRenderEngine;
> > import org.papervision3d.scenes.Scene3D;
> > import org.papervision3d.materials.*;
> > import org.papervision3d.view.Viewport3D;
> > import org.papervision3d.core.proto.*;
> > import org.papervision3d.events.InteractiveScene3DEvent;
> >
> > public class planeTest extends Sprite{
> >
> > public var scene:Scene3D;
> > public var camera:Camera3D;
> > public var viewport:Viewport3D;
> >
> > public var renderer:BasicRenderEngine;
> >
> > public var planeA:Plane;
> > public var planeB:Plane;
> > public var planeC:Plane;
> > public var planeD:Plane;
> > public var planeE:Plane;
> >
> > private var planeContainer:DisplayObject3D;
> >
> > public var materialA:MovieMaterial;
> >
> > public var mcAsset:mcContainer;
> >
> > //Spiral properties
> > public var num:int = 5;
> > public var numOfRotations:Number = 1;
> > public var anglePer:Number = ((Math.PI*2)*numOfRotations) /
> num;
> > public var yPos:Number = 0;
> >
> > // spiral movement properties
> > public var angle:Number = 0;
> > public var dist:Number;
> >
> > // create camera center
> > public var pc:Plane;
> >
> > public function planeTest() {
> > init();
> > }
> >
> > private function init(vpWidth:Number = 1440,
> vpHeight:Number = 750):void
> > {
> > initPapervision(vpWidth,vpHeight);
> > initMaterials();
> > initObjects();
> > initListeners();
> >
> > }
> >
> > private function initPapervision(vpWidth:Number,
> vpHeight:Number):void {
> > // setting up cameras, viewport, scenes, render
> engine and others for
> > papervision
> > // Viewport3D( width, height, autoScaleToStage,
> interactive)
> >
> > viewport = new Viewport3D( vpWidth, vpHeight,
> false, true );
> > addChild(viewport);
> >
> > scene = new Scene3D();
> >
> > camera = new Camera3D();
> > camera.zoom = 1;
> > camera.focus = 600;
> >
> > pc = new Plane();
> > pc.visible = false;
> > camera.target = pc;
> >
> > renderer = new BasicRenderEngine();
> >
> > }
> >
> > private function initMaterials():void {
> > mcAsset = new mcContainer();
> >
> > materialA = new MovieMaterial(mcAsset);
> >
> > materialA.animated = true;
> > materialA.interactive = true;
> > materialA.doubleSided = true;
> >
> > }
> >
> > private function initObjects():void {
> > // setting up planes and other objects
> >
> > planeContainer = new DisplayObject3D();
> >
> > planeA = new Plane( materialA, 300, 189.2, 10, 10
> );
> > planeA.x = Math.cos(1* anglePer)* 500;
> > planeA.z = Math.sin(1* anglePer)* 500;
> > planeA.y = yPos;
> > planeA.rotationY = (-1*anglePer)*(180/Math.PI) +
> 270;
> > planeContainer.addChild(planeA);
> >
> > planeB = new Plane( materialA, 300, 189.2, 10, 10
> );
> > planeB.x = Math.cos(2* anglePer)* 500;
> > planeB.z = Math.sin(2* anglePer)* 500;
> > planeB.y = yPos;
> > planeB.rotationY = (-2*anglePer)*(180/Math.PI) +
> 270;
> > planeContainer.addChild(planeB);
> >
> > planeC = new Plane( materialA, 300, 189.2, 10, 10
> );
> > planeC.x = Math.cos(3* anglePer)* 500;
> > planeC.z = Math.sin(3* anglePer)* 500;
> > planeC.y = yPos;
> > planeC.rotationY = (-3*anglePer)*(180/Math.PI) +
> 270;
> > planeContainer.addChild(planeC);
> >
> > planeD = new Plane( materialA, 300, 189.2, 10, 10);
> > planeD.x = Math.cos(4* anglePer)* 500;
> > planeD.z = Math.sin(4* anglePer)* 500;
> > planeD.y = yPos;
> > planeD.rotationY = (-4*anglePer)*(180/Math.PI) +
> 270;
> > planeContainer.addChild(planeD);
> >
> > planeE = new Plane( materialA, 300, 189.2, 10, 10);
> > planeE.x = Math.cos(5* anglePer)* 500;
> > planeE.z = Math.sin(5* anglePer)* 500;
> > planeE.y = yPos;
> > planeE.rotationY = (-5*anglePer)*(180/Math.PI) +
> 270;
> > planeContainer.addChild(planeE);
> >
> > scene.addChild(planeContainer);
> >
> > }
> >
> >
> > private function initListeners():void {
> > //setting up listeners
> >
> > addEventListener(Event.ENTER_FRAME, render);
> > }
> >
> > private function processFrame():void {
> > // process any movements of animations here
> >
> >
> > planeA.pitch(1);
> > dist = ((stage.mouseX) - stage.stageWidth * 0.5) *
> 0.00005;
> > angle += dist;
> > camera.x = Math.cos(angle) * 1000;
> > camera.z = Math.sin(angle) * 1000;
> >
> > }
> >
> > private function render( ThisEvent:Event ):void {
> > // renders & process frame
> > processFrame();
> >
> > renderer.renderScene( scene,camera,viewport );
> > }
> >
> > }
> > }
> >
> >
> > http://www.nabble.com/file/p19951200/planeTest.swf planeTest.swf
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/camera-position-inside-a-ring-of-planes-tp19951200p19967173.html
> Sent from the Papervision3D mailing list archive at Nabble.com.
>
>
> _______________________________________________
> Papervision3D mailing list
> Papervision3D at osflash.org
> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://osflash.org/pipermail/papervision3d_osflash.org/attachments/20081014/64b00cc1/attachment-0001.html
More information about the Papervision3D
mailing list