Portal
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.Event; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import org.papervision3d.core.proto.MaterialObject3D; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.shadematerials.FlatShadeMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.BasicView; import org.papervision3d.view.Viewport3D; import org.papervision3d.view.layer.ViewportLayer; import org.papervision3d.view.layer.util.ViewportLayerSortMode; [SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")] public class Portal extends BasicView { private var portalViewport:Viewport3D = new Viewport3D(); private var portalScene:Scene3D = new Scene3D(); private var portalPlane:Plane; private var exposedViewport:Viewport3D = new Viewport3D(); private var exposedScene:Scene3D = new Scene3D(); private var mainSphere:Sphere; private var exposedSphere:Sphere; public function Portal() { addChild(exposedViewport); addChild(portalViewport); setupExposedViewport(); setupPortalViewport(); setupMainViewport(); startRendering(); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); } private function setupExposedViewport():void { var bitmapData:BitmapData = new BitmapData(640, 480, false, 0xffffff); var bitmap:Bitmap = new Bitmap(bitmapData); bitmap.x = -320; bitmap.y = -240; var viewportLayer:ViewportLayer = new ViewportLayer(exposedViewport, null); viewportLayer.addChild(bitmap); exposedViewport.containerSprite.addLayer(viewportLayer); var light:PointLight3D = new PointLight3D(); var flatShadeMaterial:FlatShadeMaterial = new FlatShadeMaterial(light, 0xcc0000, 0x2b2b2b, 10); exposedSphere = createSpheres(flatShadeMaterial); var viewportLayer2:ViewportLayer = new ViewportLayer(exposedViewport, exposedSphere); for each(var sphere:Sphere in exposedSphere.children) { viewportLayer2.addDisplayObject3D(sphere); } exposedViewport.containerSprite.addLayer(viewportLayer2); viewportLayer.layerIndex = 1; viewportLayer2.layerIndex = 2; exposedViewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT; exposedScene.addChild(exposedSphere); exposedViewport.containerSprite.mask = portalViewport; } private function setupPortalViewport():void { var whiteMaterial:ColorMaterial = new ColorMaterial(0xffffff); portalPlane = new Plane(whiteMaterial); portalPlane.z = -500; portalScene.addChild(portalPlane); } private function setupMainViewport():void { var wireframeMaterial:WireframeMaterial = new WireframeMaterial(0xffffff); mainSphere = createSpheres(wireframeMaterial); scene.addChild(mainSphere); } private function keyDownHandler(event:KeyboardEvent):void { switch(event.keyCode) { case Keyboard.UP: camera.moveForward(10); break; case Keyboard.DOWN: camera.moveBackward(10); break; } } private function createSpheres(material:MaterialObject3D):Sphere { var parentSphere:Sphere = new Sphere(material); var child1:Sphere = new Sphere(material); child1.x = -500; var child2:Sphere = new Sphere(material); child2.x = 500; var child3:Sphere = new Sphere(material); child3.y = 500; var child4:Sphere = new Sphere(material); child4.y = -500; parentSphere.addChild(child1); parentSphere.addChild(child2); parentSphere.addChild(child3); parentSphere.addChild(child4); return parentSphere; } override protected function onRenderTick(event:Event=null):void { mainSphere.rotationY++; exposedSphere.rotationY++; portalPlane.moveForward(500); portalPlane.rotationY = -viewport.containerSprite.mouseX / 320 * 90; portalPlane.moveBackward(500); renderer.renderScene(portalScene, camera, portalViewport); renderer.renderScene(exposedScene, camera, exposedViewport); renderer.renderScene(scene, camera, viewport); } } }
No comments yet.
Leave a comment
Search
Recent Posts
- MorphController - Mighty Morphing Papervision3D
- End dump
- Test if a plane is within the view of the camera (aka testing if culled)
- Materials Reference
- Perlin Blob
- Dynamic Text on a Plane
- Maya Texture Baking
- Creating a Custom VectorVision Font
- Workshop video and example dump
- 3D Math Book Recommendation
- Heading to New York. brb ;)
- Launching Flex4.org
- Flex 4 Layouts and Groups
- Flex 4 States
- How to click on stuff in Papervision3D - Viewport, ViewportLayers, InteractiveScene3DEvent, Mouse3D, and MovieMaterial Buttons
Recent Comments
- alexxcz on MorphController - Mighty Morphing Papervision3D
- andre venancio on 3D Math Book Recommendation
- DS on Dynamic Text on a Plane
- John Lindquist on Maya Texture Baking
- Itai on Maya Texture Baking
- Javier on End dump
- samBrown on End dump
- tf on archive
- Pan on requests
- Martin Lindelöf on requests

