flash on 2010-1-11
♥0 |
Line 40 |
Modified 2010-01-11 20:34:32 |
MIT License
archived:2017-03-20 08:58:47
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);
}
}
}