pv3d ShadedMaterial example
♥0 |
Line 63 |
Modified 2009-12-16 11:27:31 |
MIT License
archived:2017-03-20 17:13:00
ActionScript3 source code
/**
* Copyright milkmidi ( http://wonderfl.net/user/milkmidi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/juPk
*/
/**
* @author milkmidi
* @see http://milkmidi.blogspot.com
* @version 1.0.0
* @date created 2009/12/16/
*/
package {
import flash.display.*;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.view.BasicView;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.materials.shaders.*;
[SWF(width = "465", height = "465", frameRate = "47", backgroundColor = "#777777")]
public class Materials_Shaders extends BasicView {
private var light :PointLight3D;
private var rootNode :DisplayObject3D;
public function Materials_Shaders() {
super(0, 0, true, true);
camera.z = -1000;
var _ldr:Loader = new Loader();
_ldr.load(new URLRequest("http://assets.wonderfl.net/images/related_images/e/e1/e18c/e18ca4ebe44ad3c5aa082cbd2742c8581cafcf86"),new LoaderContext(true ));
_ldr.contentLoaderInfo.addEventListener(Event.COMPLETE , init3DObject);
}
private function init3DObject(e:Event):void {
startRendering();
var bmp:BitmapData = Bitmap(e.currentTarget.loader.content).bitmapData;
light = new PointLight3D(true, true);
rootNode = new DisplayObject3D();
scene.addChild(rootNode);
var sphere:Sphere;
var matArray:Array = new Array();
var bitmapMat:BitmapMaterial = new BitmapMaterial(bmp, true);
////////////
var shadeMat :ShadedMaterial;
var phongShader :PhongShader = new PhongShader(light, 0xFFFFFF, 0, 0, null);
shadeMat = new ShadedMaterial(bitmapMat, phongShader);
matArray.push(shadeMat);
var cellShader :CellShader = new CellShader(light);
shadeMat = new ShadedMaterial(bitmapMat, cellShader);
matArray.push(shadeMat);
var flatShader :FlatShader = new FlatShader(light);
shadeMat = new ShadedMaterial(bitmapMat, flatShader);
matArray.push(shadeMat);
var gouraudShader :GouraudShader = new GouraudShader(light);
shadeMat = new ShadedMaterial(bitmapMat, gouraudShader);
matArray.push(shadeMat);
var lightShader :LightShader = new LightShader();
shadeMat = new ShadedMaterial(bitmapMat, lightShader);
matArray.push(shadeMat);
var offsetX:int = 200;
for (var i:int = 0; i < matArray.length; i++) {
sphere = new Sphere(matArray[i], offsetX/2, 16, 16);
sphere.x = offsetX * i - (matArray.length / 2 * offsetX);
sphere.y = Math.random( ) * 200 - 100;
rootNode.addChild(sphere);
}
}
override protected function onRenderTick(event:Event = null):void {
super.onRenderTick(event);
rootNode.rotationY += .5;
light.x = -(stage.stageWidth/ 2 - this.mouseX) * 10;
light.y = (stage.stageHeight / 2 - this.mouseY) * 10;
}
}
}