package { import flash.display.BlendMode; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageQuality; import flash.display.StageScaleMode; import flash.events.Event; import flash.filters.BlurFilter; import flash.geom.ColorTransform;
import org.papervision3d.cameras.Camera3D; import org.papervision3d.core.effects.BitmapColorEffect; import org.papervision3d.core.effects.BitmapLayerEffect; import org.papervision3d.core.effects.utils.BitmapClearMode; import org.papervision3d.core.effects.utils.BitmapDrawCommand; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.special.ParticleMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.objects.special.ParticleField; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.view.layer.BitmapEffectLayer;
[SWF(backgroundColor="#000000")] public class Papervision3D_sample40 extends Sprite { private var container:Sprite; private var viewport:Viewport3D; private var scene:Scene3D; private var camera:Camera3D; private var renderer:BasicRenderEngine; private var rootNode:DisplayObject3D; private var bfx:BitmapEffectLayer; private var cube:Cube; private var valx: Number = 0; private var valy: Number = 0; public function Papervision3D_sample40() { stage.frameRate = 40; stage.quality = StageQuality.MEDIUM; stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(Event.RESIZE, onResize); container = new Sprite(); addChild(container); container.x = stage.stageWidth/2; container.y = stage.stageHeight/2; viewport = new Viewport3D(0,0,true, true); scene = new Scene3D(); camera = new Camera3D(); renderer = new BasicRenderEngine(); rootNode = scene.addChild( new DisplayObject3D("rootNode")); addEventListener(Event.ENTER_FRAME, onFrame); addChild(viewport); camera.zoom = 30; camera.focus = 200; camera.target = DisplayObject3D.ZERO; bfx = new BitmapEffectLayer(viewport, stage.stageWidth, stage.stageHeight, true, 0, BitmapClearMode.CLEAR_PRE); bfx.addEffect(new BitmapLayerEffect( new BlurFilter(3,3,1))); bfx.addEffect(new BitmapColorEffect(0.99, 0.98, 0.98, 0.98)); bfx.drawCommand = new BitmapDrawCommand(null, new ColorTransform(1, 0.2, 0.1, 0.45), BlendMode.ADD); bfx.drawLayer.blendMode = BlendMode.OVERLAY; viewport.containerSprite.addLayer(bfx); var materials:MaterialsList = new MaterialsList({all: new ColorMaterial(0xffffff,0.7,true)}); cube = new Cube(materials,30,30,30,4,4,4); rootNode.addChild(cube); bfx.addDisplayObject3D(cube); var particle:ParticleMaterial = new ParticleMaterial(0xffffff,1,ParticleMaterial.SHAPE_CIRCLE); var particles:ParticleField = new ParticleField(particle,1000,0.3,500,500,500); scene.addChild(particles); } public function onResize(e:Event):void { container.x = stage.stageWidth/2; container.y = stage.stageHeight/2; } public function onFrame(e:Event):void { valx += mouseX / 150; valy += mouseY / 150; cube.rotationX = valx; cube.rotationY = valy; renderer.renderScene(scene, camera, viewport); } } } |
コメント