flash on 2010-1-11

by albatrus_jp
♥0 | Line 40 | Modified 2010-01-11 20:34:32 | MIT License
play

ActionScript3 source code

/**
 * Copyright albatrus_jp ( http://wonderfl.net/user/albatrus_jp )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/8Zeh
 */

package {
	import flash.display.*;
	import flash.events.*;
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.special.*;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.*;
	import org.papervision3d.scenes.*;
	import org.papervision3d.view.*;
	import org.papervision3d.view.stats.StatsView;

	public class FrustumCamera3DSample extends Sprite {
		static public const OBJ_MAX:int = 500; // オブジェクトの個数
		// 3Dのインスタンス
		private var camera:Camera3D = new Camera3D(60, 10, 2000, true, false); //カメラ
		private var renderer:BasicRenderEngine = new BasicRenderEngine(); // レンダラー
		private var scene:Scene3D = new Scene3D(); // シーン
		private var viewport:Viewport3D = new Viewport3D(); // ビューポート
		
		public function FrustumCamera3DSample() {
			addChild(viewport); //ビューポートを表示
			addChild(new StatsView(renderer)); //スタッツ(FPSチェッカー)を表示
			
			// カラーマテリアルとワイヤーフレームを組み合わせてコンポジットマテリアルを作成
			var material:CompositeMaterial = new CompositeMaterial();
			material.addMaterial(new ColorMaterial(0x000000, 0.25));
			material.addMaterial(new WireframeMaterial(0xFFFFFF));
			
			// 3Dオブジェクトを配置
			for (var i:int = 0; i < OBJ_MAX; i++) {
				// 直方体を作成
				var cube:Cube = new Cube(new MaterialsList({all:material}), 50, 50, 50, 1, 1, 1);
				scene.addChild(cube);
				// 直方体をXYZ座標
				cube.x = ((i % 6) - 3) * 100;
				cube.z = Math.floor(i / 6) * 200;
				cube.y = -100;
			}
			
			addEventListener(Event.ENTER_FRAME, loop);
		}
		// エンターフレームイベント
		private function loop(e:Event):void {
			// カメラの移動
			camera.z += 20;
			if (camera.z > 10000) camera.z = -2000;
			// レンダリング
			renderer.renderScene(scene, camera, viewport);
		}
	}
}