基本図形の作成と回転
各プリミティブの分割数で一番処理落ちに影響しそうなのはCubeだと思う。平面の数が多いから?
各図形は軸に対して回していて、カメラ自体はxz平面で回している。
♥0 |
Line 42 |
Modified 2011-08-24 21:34:14 |
MIT License
archived:2017-03-20 13:49:24
ActionScript3 source code
/**
* Copyright Nowloading_ ( http://wonderfl.net/user/Nowloading_ )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/9Td1
*/
package {
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.view.*;
import flash.events.Event;
[SWF(backgroundColor=0x000000)]
public class primitives extends BasicView {
private var hako:Cube;
private var kyu:Sphere;
private var heimen:Plane;
private var rad:int = 0;
public function primitives() {
init();
}
private function init():void{
var material:WireframeMaterial = new WireframeMaterial(0xff9999);
material.doubleSided = true;
//Planeを作成
heimen = new Plane(material,400,500,3,3);
heimen.x = 200;
heimen.z = 300;
//Sphereを作成
kyu = new Sphere(material,150,10,10);
kyu.y = -400;
//Cubeを作成(#27は各面のmaterialのlist)
var materials:MaterialsList = new MaterialsList( {all:material} );
hako = new Cube(materials,500,500,500,2,2,2);
hako.x = -500;
//sceneに追加
scene.addChild(heimen);
scene.addChild(kyu);
scene.addChild(hako);
//レンダリング開始
startRendering();
addEventListener(Event.ENTER_FRAME,oEF);
}
private function oEF(e:Event):void{
//それぞれをx,y,z方向に回転させる
heimen.rotationX+=1;
kyu.rotationY-=1;
hako.rotationZ+=1;
camera.z = 1000*Math.cos(rad*Math.PI/180);
camera.x = 1000*Math.sin(rad*Math.PI/180);
rad += 1;
}
}
}