Toggle navigation
Sign Up
Log In
Explore
Works
Folders
Tools
Collections
Artists
Groups
Groups
Topics
Tasks
Tasks
Jobs
Teams
Jobs
Recommendation
More Effects...
ActionScript
package { import away3d.arcane; import away3d.containers.View3D; import away3d.controllers.HoverController; import away3d.entities.Mesh; import away3d.lights.PointLight; import away3d.materials.ColorMaterial; import away3d.materials.compilation.ShaderRegisterCache; import away3d.materials.compilation.ShaderRegisterData; import away3d.materials.compilation.ShaderRegisterElement; import away3d.materials.lightpickers.StaticLightPicker; import away3d.materials.methods.BasicDiffuseMethod; import away3d.materials.methods.CompositeDiffuseMethod; import away3d.materials.methods.MethodVO; import away3d.primitives.CubeGeometry; import away3d.primitives.SphereGeometry; import flash.display.BlendMode; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; use namespace arcane; [SWF(width = "1200",height = '600',frameRate = "60")] public class stage3dQ extends Sprite { private var light:PointLight; private var lightPicker:StaticLightPicker; private var atmosphereMaterial:ColorMaterial; private var atmosphereDiffuseMethod:BasicDiffuseMethod; private var view:View3D; private var atmosphere:Mesh; private var move:Boolean = false; private var lastPanAngle:Number; private var lastTiltAngle:Number; private var lastMouseX:Number; private var lastMouseY:Number; private var cameraController:HoverController; public function stage3dQ() { initView(); initLights(); material(); } private function initView():void{ view = new View3D(); addChild(view) this.addEventListener(Event.ENTER_FRAME,enterFrame); cameraController = new HoverController(view.camera); stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); } private function initLights():void { light = new PointLight(); light.x = 10000; light.ambient = 1; light.diffuse = 2; lightPicker = new StaticLightPicker([light]); } private function material():void{ atmosphereMaterial = new ColorMaterial(0x1671cc); atmosphereMaterial.lightPicker = lightPicker; atmosphereMaterial.ambientColor = 0x00; atmosphereMaterial.blendMode = BlendMode.ADD; atmosphereMaterial.specular=0; atmosphere = new Mesh(new SphereGeometry(300, 200, 100), atmosphereMaterial); atmosphereDiffuseMethod = new CompositeDiffuseMethod(modulateDiffuseMethod); atmosphereMaterial.diffuseMethod = atmosphereDiffuseMethod; atmosphere.scaleX=-1; var mesh:Mesh = new Mesh(new CubeGeometry(100,100,100),new ColorMaterial(0x334455)); mesh.material.lightPicker = lightPicker; view.scene.addChild(mesh); view.scene.addChild(atmosphere); } private function modulateDiffuseMethod(vo : MethodVO, t:ShaderRegisterElement, regCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData):String { var viewDirFragmentReg:ShaderRegisterElement = atmosphereDiffuseMethod.sharedRegisters.viewDirFragment; var normalFragmentReg:ShaderRegisterElement = atmosphereDiffuseMethod.sharedRegisters.normalFragment; var code:String = "dp3 " + t + ".w, " + viewDirFragmentReg + ".xyz, " + normalFragmentReg + ".xyz\n" + "mul " + t + ".w, " + t + ".w, " + t + ".w\n" return code; } private function onMouseDown(event:MouseEvent):void { lastPanAngle = cameraController.panAngle; lastTiltAngle = cameraController.tiltAngle; lastMouseX = stage.mouseX; lastMouseY = stage.mouseY; move = true; } private function onMouseUp(e:MouseEvent):void { move = false; } private function enterFrame(e:Event):void{ if (move) { cameraController.panAngle = 0.3*(stage.mouseX - lastMouseX) + lastPanAngle; cameraController.tiltAngle = 0.3*(stage.mouseY - lastMouseY) + lastTiltAngle; } view.render(); } } }
Join Effecthub.com
Working with Global Gaming Artists and Developers!
Login
Sign Up
Or Login with Your Email Address:
Email
Password
Remember
Or Sign Up with Your Email Address:
Your Email
This field must contain a valid email
Set Password
Password should be at least 1 character
Stay informed via email