3D PV3d VR cube
3D papervision3d VR cube BitmapFileMaterial Security loadPolicyFile 神社
package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.system.Security;
import flash.utils.*;
import org.papervision3d.cameras.*;
import org.papervision3d.lights.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.shadematerials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.view.*;
public class Main extends BasicView {
public function Main() {
// BasicViewの初期化
super(0, 0, true, false, CameraType.FREE);
Security.loadPolicyFile("http://farm6.static.flickr.com/crossdomain.xml");
var materialF:BitmapFileMaterial = new BitmapFileMaterial("http://farm6.static.flickr.com/5243/5347510799_d0616b0611.jpg");//ok
var materialBK:BitmapFileMaterial = new BitmapFileMaterial("http://farm6.static.flickr.com/5123/5347510701_bf7734d994.jpg");//ok
var materialR:BitmapFileMaterial = new BitmapFileMaterial("http://farm6.static.flickr.com/5082/5348121034_7ebfcee951.jpg");//ok
var materialL:BitmapFileMaterial = new BitmapFileMaterial("http://farm6.static.flickr.com/5249/5348120992_689a331d02.jpg");//ok
var materialT:BitmapFileMaterial = new BitmapFileMaterial("http://farm6.static.flickr.com/5246/5348121060_6b4577dab8.jpg");//ok
var materialBM:BitmapFileMaterial = new BitmapFileMaterial("http://farm6.static.flickr.com/5169/5347510739_58a054988f.jpg");//ok
// カメラを原点に配置
camera.x = camera.y = camera.z = 0;
// 画質を「低」にして高速化
stage.quality = StageQuality.LOW;
// マテリアル(立方体の面を作成)
var materials:MaterialsList = new MaterialsList(
{
front : materialF,
back : materialBK,
right : materialR,
left : materialL,
top : materialT,
bottom: materialBM
/*
front : new BitmapFileMaterial( "imgs/f.jpg", true ),
back : new BitmapFileMaterial( "imgs/b.jpg", true ),
right : new BitmapFileMaterial( "imgs/r.jpg", true ),
left : new BitmapFileMaterial( "imgs/l.jpg", true ),
top : new BitmapFileMaterial( "imgs/u.jpg", true ),
bottom: new BitmapFileMaterial( "imgs/d.jpg", true )
*/
});
// キューブを作成
var cube:Cube = new Cube( materials, 5000, 5000, 5000, 8, 8, 8, Cube.ALL, Cube.NONE );
scene.addChild(cube);
// マウスのインタラクティブを設定しています
addEventListener(Event.ENTER_FRAME, loop);
addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);
// レンダリングを開始します
startRendering();
}
// マウスの位置に応じてインタラクティブを設定しています
private function loop(e:Event):void {
// カメラの目標となる視線方向を計算
var rotY:Number = 480 * mouseX/(stage.stageWidth);
var rotX:Number = 180 * mouseY/(stage.stageHeight) - 90;
// イージングの公式を使ってカメラの値を更新
camera.rotationY += (rotY - camera.rotationY) * 0.1;
camera.rotationX += (rotX - camera.rotationX) * 0.1;
}
// マウスホイールでカメラのズーム値を調整します
private function wheelHandler(e:MouseEvent):void {
// ホイールの値をズーム値に加える
camera.zoom += e.delta / 10;
// カメラのズーム値は1以下にならないように指定
if (camera.zoom < 1) camera.zoom = 1;
}
}
}