Creating a Papervision BaseTemplate (by FlashDevelop)

FD3 (Flash Develop 3 RC2)를 사용하여, Papervision 3D 프로젝트를 만들기 위해서 처음으로 해야할 일에
대해 알아보자.
1> 일단 FlashDevelop을 키고 시작페이지에서  “New:Project… “을 누른다.
사용자 삽입 이미지
New Project창에서 Actionscript 3.0항목에 있는 Empty Project를 선택하여 Name 입력부에 프로젝트 이름을 적어준다. (이때 Create Directory for Project항목을 체크한다.)
사용자 삽입 이미지
OK를 누른후 Project 패널에 source파일을 추가해야하는데, 일단 Papervision Source를 푸가해보자
메뉴상단에 Project > Preference.. 를 선택하고, 해당 대화창의 Classpaths탭을 누르고, Add ClassPath를 
클릭한다.
사용자 삽입 이미지
이렇게 추가한후 Project패널에 프로젝트를 선택한후 우클릭하고 Add > New Class를 통해 새로운 Class를 생성한다.
사용자 삽입 이미지사용자 삽입 이미지
이는 blank class이다. 
처음으로 이 class를 compile할때는, Main AS 파일을 우클릭하고, tree메뉴의 “Always Compile”을 클릭한다.
컴파일된 SWF파일의 위치를 변경하고자 할때는 project메뉴의 Preference를 선택하고, Output탭 아래의 General을 보면 “Output File”옆에 Browse를 눌러 설정할수 있다.
1765372394.as
ActionScript Source :
//
package  {
    // These lines make differant ‘pieces’ available in your code.
    import flash.display.Sprite; // To extend this class
    import flash.events.Event; // To work out when a frame is entered.
   
    import org.papervision3d.view.Viewport3D; // We need a viewport
    import org.papervision3d.cameras.*; // Import all types of camera
    import org.papervision3d.scenes.Scene3D; // We’ll need at least one scene
    import org.papervision3d.render.BasicRenderEngine; // And we need a renderer
   
    public class PaperBase extends Sprite { //Must be “extends Sprite”
       
        public var viewport:Viewport3D; // The Viewport
        public var renderer:BasicRenderEngine; // Rendering engine
        // — Scenes — //
        public var default_scene:Scene3D; // A Scene
        // — Cameras –//
        public var default_camera:Camera3D; // A Camera
       
        public function init(vpWidth:Number = 800, vpHeight:Number = 600):void {
            initPapervision(vpWidth, vpHeight); // Initialise papervision
            init3d(); // Initialise the 3d stuff..
            init2d(); // Initialise the interface..
            initEvents(); // Set up any event listeners..
        }
       
        protected function initPapervision(vpWidth:Number, vpHeight:Number):void {
            // Here is where we initialise everything we need to
            // render a papervision scene.
            viewport = new Viewport3D(vpWidth, vpHeight);
            // The viewport is the object added to the flash scene.
            // You ‘look at’ the papervision scene through the viewport
            // window, which is placed on the flash stage.
            addChild(viewport); // Add the viewport to the stage.
            // Initialise the rendering engine.
            renderer = new BasicRenderEngine();
            // — Initialise the Scenes — //
            default_scene = new Scene3D();
            // — Initialise the Cameras — //
            default_camera = new Camera3D(); // The argument passed to the camera
            // is the object that it should look at. I’ve passed the scene object
            // so that the camera is always pointing at the centre of the scene.
        }
       
        protected function init3d():void {
            // This function should hold all of the stages needed
            // to initialise everything used for papervision.
            // Models, materials, cameras etc.
        }
       
        protected function init2d():void {
            // This function should create all of the 2d items
            // that will be overlayed on your papervision project.
            // User interfaces, Heads up displays etc.
        }
       
        protected function initEvents():void {
            // This function makes the onFrame function get called for
            // every frame.
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            // This line of code makes the onEnterFrame function get
            // called when every frame is entered.
        }
       
        protected function processFrame():void {
            // Process any movement or animation here.
        }
       
        protected function onEnterFrame( ThisEvent:Event ):void {
            //We need to render the scene and update anything here.
            processFrame();
            renderer.renderScene(default_scene, default_camera, viewport);
        }
       
    }
   
}

(주)리화이트 대표 / CEO & Founder

Next ArticlePapervision3D Basic #1