基本図形の作成と回転

by Nowloading_
各プリミティブの分割数で一番処理落ちに影響しそうなのはCubeだと思う。平面の数が多いから?

各図形は軸に対して回していて、カメラ自体はxz平面で回している。
♥0 | Line 42 | Modified 2011-08-24 21:34:14 | MIT License
play

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;
            
        }

    }
}