Papervision3d入門 3.2.10
Flash3D コンテンツ制作のためのPapervision3Dのサンプルテスト
code 3.2.7
/**
* Copyright ug24k8 ( http://wonderfl.net/user/ug24k8 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/qkOW
*/
// forked from yawakisin's Papervision3d入門 3.2.7
/*
Flash3D コンテンツ制作のためのPapervision3Dのサンプルテスト
code 3.2.7
*/
package
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.special.CompositeMaterial;
import org.papervision3d.view.*;
import org.papervision3d.materials.*;
import org.papervision3d.objects.primitives.*;
[SWF(width = "800", height = "600", frameRate = "12", backgroundColor = "#404040")]
public class BitmapViewportSample extends BasicView {
private var loader:Loader;
// コンストラクタ
public function BitmapViewportSample()
{
// Loaderクラスを使用して画像ファイルを読み込む(外部のパスを指定)
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
loader.load(
new URLRequest("http://assets.wonderfl.net/images/related_images/2/29/2957/295773efe549b4206f0ab5e4e776915fb02f95ff"),
new LoaderContext(true));
}
private function compHandler(e:Event):void
{
var light:PointLight3D = new PointLight3D();
// マテリアルを作成
var material:CompositeMaterial = new CompositeMaterial();
// 黄色のカラーマテリアルをコンポジットマテリアルに追加
// material.addMaterial(new ColorMaterial(0xffff00));
// 赤色のワイヤーフレームをコンポジットマテリアルに追加
material.addMaterial(new WireframeMaterial(0xff0000));
// ビットマップテクスチャ
// 画像ファイルを読み込んだ場合、loaderのcontentプロパティがビットマップ画像になっている
var bmpData:BitmapData = Bitmap(loader.content).bitmapData;
material.addMaterial(new BitmapMaterial(bmpData));
// 球体(Sphere)を作成
// 引数はマテリアル、球面の半径、横のポリゴン分割数、縦のポリゴン分割数
var sphere:Sphere = new Sphere(material, 300, 15, 15);
sphere.x = -500;
// 3D空間に球体を追加
scene.addChild(sphere);
// 球体を撮影するカメラを用意
var camera2:Camera3D = new Camera3D();
camera2.target = sphere;
// ビットマップビューポートマテリアルを利用
// 鏡の役割を持った平面を作成
var bmpViewport:BitmapViewport3D = new BitmapViewport3D();
var mirrorMat:BitmapViewportMaterial = new BitmapViewportMaterial(bmpViewport, true);
var mirrorObj1:Plane = new Plane(mirrorMat, 1280, 960);
mirrorObj1.rotationY = 20;
// 球体の裏側に鏡用の平面とカメラを配置
mirrorObj1.z = camera2.z = 1000;
mirrorObj1.x = camera2.x = 500;
scene.addChild(mirrorObj1);
// レンダリング
startRendering();
addEventListener(Event.ENTER_FRAME,
function(e:Event) :void
{
sphere.rotationY += 0.5;
// ビューポートマテリアル用にレンダリング
renderer.renderScene(scene, camera2, bmpViewport);
});
}
}
}