Papervision3D 2.X EX.01 線(Line)を引いてみる | 東京都世田谷区 ホームページ制作 [k]id

Papervision3D 2.X EX.01 線(Line)を引いてみる

Category Flash Tips,Papervision3Dを試す Update 2009.05.02

twitterfacebookgoogle+はてなブックマークPocketであとで読むfeedlyで購読

今までFlashでの3D表現はFIVe3Dを仕様していたのですが、
そろそろAS3もちゃんと勉強しなきゃな、、って事で

Papervision3Dの練習はじめにカメラ視点と軸の勉強のために
下記サンプルを作ってみました。

オブジェクトについて書かれた資料はWEB上に多いのですが、
ライン関係の資料がなかったので
せっかくのなので貼付けておきます。

[embedSWF]http://kidokorock.com/wp-content/uploads/2009/05/line.swf [/embedSWF]

X軸 Y軸 Z軸

ソースは↓です。

package {
import flash.display.Sprite;
import flash.events.Event;
//------------------------------------------------------------
//                                             クラス読み込み
import org.papervision3d.core.geom.Lines3D;
import org.papervision3d.core.geom.renderables.Line3D;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.materials.special.LineMaterial;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
[SWF(backgroundColor="#ffffff")];
public class Main extends Sprite {
//------------------------------------------------------------
//                                                    変数定義
private var lines3D:Lines3D;
private var viewport:Viewport3D;
private var scene:Scene3D;
private var camera:Camera3D;
private var renderer:BasicRenderEngine;
private var rootNode:DisplayObject3D;
public function Main() {
//------------------------------------------------------------
//                                         カメラ視点等の定義
viewport=new Viewport3D(0,0,true,true);
scene=new Scene3D  ;
camera=new Camera3D  ;
renderer=new BasicRenderEngine  ;
rootNode=scene.addChild(new DisplayObject3D("rootNode"));
//
addChild(viewport);
camera.zoom=1;
camera.focus=1000;
camera.x=200;
camera.y=200;
camera.target=DisplayObject3D.ZERO;
//------------------------------------------------------------
//                              ラインを投影するための変数定義
//[X座標の線]
var X_line:Line3D;
var X_strV:Vertex3D;
var X_endV:Vertex3D;
var X_lineM:LineMaterial=new LineMaterial(0xFF0000);
//[Y座標の線]
var Y_line:Line3D;
var Y_strV:Vertex3D;
var Y_endV:Vertex3D;
var Y_lineM:LineMaterial=new LineMaterial(0x00FF00);
//[Z座標の線]
var Z_line:Line3D;
var Z_strV:Vertex3D;
var Z_endV:Vertex3D;
var Z_lineM:LineMaterial=new LineMaterial(0x0000FF);
//
lines3D=new Lines3D  ;
scene.addChild(lines3D);
//
//------------------------------------------------------------
//                                                   X座標の線
X_strV=new Vertex3D(-1000,0,0);
X_endV=new Vertex3D(1000,0,0);
X_line=new Line3D(lines3D,X_lineM,2,X_strV,X_endV);
lines3D.addLine(X_line);
//------------------------------------------------------------
//                                                   Y座標の線
Y_strV=new Vertex3D(0,-1000,0);
Y_endV=new Vertex3D(0,1000,0);
Y_line=new Line3D(lines3D,Y_lineM,2,Y_strV,Y_endV);
lines3D.addLine(Y_line);
//------------------------------------------------------------
//                                                   Z座標の線
Z_strV=new Vertex3D(0,0,-1000);
Z_endV=new Vertex3D(0,0,1000);
Z_line=new Line3D(lines3D,Z_lineM,2,Z_strV,Z_endV);
lines3D.addLine(Z_line);
addEventListener(Event.ENTER_FRAME,onFrame);
}
public function onFrame(e:Event):void {
//------------------------------------------------------------
//                               マウスの座標でZ軸を基点に回転
lines3D.roll((mouseX - (stage.stageWidth / 2)) / (stage.width / 2) * 1.2);
renderer.renderScene(scene,camera,viewport);
}
}
}
ページトップへ