« Flex Module for Apache and IIS | メイン | Apollo本とMashUp本 »

初めてのPapervision3D

del.icio.us it!   hatena bookmark

してみた
サンプルとかをいじって作った
立方体にカメラの画像を出してみた


こんな感じ
Papervision3D CameraCube
http://labs.un-q.net/as3/papervision3d/cameracube/

Screenshot_1.jpg

なかなかおもしろそーですが、、、むずかしそーですね。

そーす


package {

import flash.display.*;
import flash.events.*;
import flash.media.Camera;
import flash.media.Video;

// Import Papervision3D
import org.papervision3d.scenes.*;
import org.papervision3d.objects.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import org.papervision3d.events.*;

public class CameraCube extends Sprite {

private var video:Video;
private var camera:Camera;
private var bd:BitmapData;

private var container:Sprite;
private var scene:Scene3D;
private var camera3d:Camera3D;
private var rootNode:DisplayObject3D;

public function CameraCube() {

trace("-------- Camera3D strat ----------");

stage.quality = "MEDIUM";
stage.scaleMode = "noScale";
stage.align = StageAlign.TOP_LEFT;

init3D();
}


private function init3D():void {

camera = Camera.getCamera();

if (camera == null) {
trace("not camera");
return;
}

video = new Video(camera.width * 2, camera.height * 2);
video.attachCamera(camera);

bd = new BitmapData(video.width, video.height);

container = new Sprite();
addChild(container);
container.x = 300;
container.y = 200;

// create scene
scene = new Scene3D(container);

// create camera
camera3d = new Camera3D();
camera3d.x = 3000;
camera3d.z = -300;
camera3d.zoom = 25;
camera3d.focus = 100;

// roootNode
rootNode = scene.addChild(new DisplayObject3D("rootNode"));

var p0:DisplayObject3D = rootNode.addChild(new Plane(new BitmapMaterial(bd), 300, 300), "p0");
var p1:DisplayObject3D = rootNode.addChild(new Plane(new BitmapMaterial(bd), 300, 300), "p1");
var p2:DisplayObject3D = rootNode.addChild(new Plane(new BitmapMaterial(bd), 300, 300), "p2");
var p3:DisplayObject3D = rootNode.addChild(new Plane(new BitmapMaterial(bd), 300, 300), "p3");
var p4:DisplayObject3D = rootNode.addChild(new Plane(new BitmapMaterial(bd), 300, 300), "p4");
var p5:DisplayObject3D = rootNode.addChild(new Plane(new BitmapMaterial(bd), 300, 300), "p5");

// Bottom
p0.rotationX = 90;
p0.y = -150;

// Side
p1.rotationX = 180;
p1.z = 150;

// Top
p2.rotationX = -90;
p2.y = 150;

// Side;
p3.z = -150;

// back
p4.rotationY = 90;
p4.x = -150;

// front
p5.rotationY = -90;
p5.x = 150;

addEventListener(Event.ENTER_FRAME, loop3D);

}


private function loop3D(e:Event):void {

rootNode.rotationX++;
rootNode.rotationY++;

scene.renderCamera(camera3d);

bd.draw(video);
}

}

}



トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/107

コメントを投稿

crossreview