articles

2009 年 6 月 27 日

Papervision3D 円柱(Cylinder)にテクスチャを貼り中からのぞく

CATEGORYactionscriptPapervision3D   TAG 10:52 AM
// PV3Dライブラリをインポート
import org.papervision3d.view.*
import org.papervision3d.materials.*
import org.papervision3d.objects.primitives.*

// 3Dの初期設定をおこないます
var world:BasicView = new BasicView()
world.startRendering()
addChild(world)

// マテリアルを作成します
// ビットマップアセットマテリアルは引数にライブラリの画像を指定します
var material:BitmapAssetMaterial = new BitmapAssetMaterial('EarthMap')
//両面に貼付ける
material.doubleSided = true;


// Cylinderを作成します
//new Cylinder(material, radius, height, segmentsW, segmentsH, 上部半径);
var obj = new Cylinder(material, 368, 500, 16, 6, -1);

// 3D空間にオブジェクトを追加します
world.scene.addChild(obj)

// Cylinderを回転させます
addEventListener(Event.ENTER_FRAME, function(e){
     obj.rotationY += 0.5
})

//カメラを原点にもってくる
world.camera.y=0;
world.camera.z=0;

参考
http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_3/

テクスチャ素材
Planet Earth Texture Maps

2009 年 6 月 18 日

Papervision3D簡単なサンプル

CATEGORYactionscriptPapervision3D   TAG 11:28 AM
/*
ポイント
1.BasicViewをCAMERA3Dで作成
2.BasicView.startRendering()で描画開始
3.cameraのターゲットを変更、破棄
4.ターゲットなし状態でのカメラ移動
*/

import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.cameras.Camera3D;

var world=new BasicView(0,0,true,false,"CAMERA3D");
addChild(world);


var obj_list=new Array();//球体を格納する配列
var btn_container=new Sprite();
btn_container.x=10;
btn_container.y=stage.stageHeight-30;
addChild(btn_container);

//3D空間にそれを貼り付ける
for (var i=0; i<4; i++) {
	//半径100、縦8分割、横8分割のボール(Sphere)を作る
	var obj=new Sphere(null,100,8,8);
	obj.x=i*300;
	world.scene.addChild( obj);
	obj_list.push(obj);


	//ターゲットを変更するボタンを作成
	var btn=new Sprite();
	btn.name="btn"+i;
	btn.graphics.beginFill(0x888888);
	btn.graphics.drawRect(0,0,80,20);
	btn.x=85*i;
	var textfield=new TextField();
	textfield.text=i;
	textfield.mouseEnabled=false;
	btn.addChild(textfield)
	
	
	btn_container.addChild(btn);
	btn.addEventListener(MouseEvent.CLICK,btnHandler);
}

//表示スタート
world.startRendering();

addEventListener(Event.ENTER_FRAME,enterFrame);

function enterFrame(event) {
	world.camera.x=(mouseX-stage.stageWidth/2)*3;
	world.camera.y=(stage.stageHeight/2-mouseY)*3;
	trace(world.camera.x,world.camera.y,world.camera.z);
}

function btnHandler(event) {
	var _name=event.target.name.substr(3,4);
	trace(_name);
	world.camera.target=obj_list[_name];
}

//ターゲットをなしにするボタン
btnNull.addEventListener(MouseEvent.CLICK,cameraTargetNullHandler);
function cameraTargetNullHandler(event) {
	trace("ターゲット破棄");
	world.camera.target=null;
	world.camera.rotationX=0;
	world.camera.rotationY=0;
	world.camera.rotationZ=0;
}

2009 年 6 月 17 日

とうとうPapervision3D

CATEGORYPapervision3D   TAG 2:31 AM

なんか、まだまだ基礎ができていないのに、欲張ってる感がありますが
とりあえず、導入部分だけでも。

http://code.google.com/p/papervision3d/

// PV3Dライブラリをインポート
import org.papervision3d.view.* //ビューに関するクラス
import org.papervision3d.materials.* //マテリアル系
import org.papervision3d.objects.primitives.* //プリミティブ

基本としては以上のクラスを読み込むことになるのかしら。
まだまだ入り口なので、なんとも言えません。