Plane 생성자


Plane(material:MaterialObject3D=null, width:Number=0, height:Number=0, segmentsW:Number=0, segmentsH:Number=0)

 

파라미터

데이터 타입

기본

상세설명

material

MaterialObject3D

null

Plane 적용하고 싶은 Material 정의한다.

width

Number

0

넓이를 설정한다.

height

Number

0

높이를 설정한다.

segmentsW

Number

0

좌우 조각

segmentsH

Number

0

상하 조각

 

[그림 : segments(조각) 변화에 따른 Plane (1,1) / (2,1) / (2,2)]

참조 => (0,0)으로 설정하면 (1,1) 동일함.

 

[알고 가기 : 1]

Plane 이미지를 투영 시킬 흔히 이미지가 찌그러지는 현상을 목격할 있는데 이럴 경우에는 segments(조각) 숫자를 증가시키면 좀더 부드러운 화면을 있다. 하지만 조각의 수가 증가하면 할수록 렌더링 속도가 느려짐에 유의해야 한다. 참고로 개의 Scene에서 3000 이하의 Triangle 존재하도록 하는 것이 좋다.

 

[알고 가기 : 2]

Plane 회전(Rotate)시키는 경우, 기본적으로 면의 wireframe(철골구조물 - 외각 뼈대) Material 적용되어 있어 다른 면에는 null 적용된다. 이런 경우에는 양면모드 설정을 적용시켜줘야 한다.

ex) plane.material.doubleSided = true;

 

[알고 가기 : 기타]

Z축은 depth 조절하는 것이다 이는 카메라를 찍을 Zoom in, out 조절하는 것과 유사하다, 실제로 적용해서 보면 사물의 크기가 커졌다 작아졌다 하는 것을 있다.


예제 - Plane을 z좌표를 조절하면서 y축 기준으로 회전시키기



: 본 예제를 습득한 이후 각자 Sphere, Cylinder, Cone, Cube, Arrow, PaperPlane 의 생성자를 확인한 이후 본 예제를 응용하면 손쉽게 테스트가 가능할 것입니다 ^^.

//Main.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Application

       creationComplete="init()"

       frameRate="40"

       xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

       <mx:Script>

             <![CDATA[

                    import sample.PlaneExample;

                    import mx.core.UIComponent;

                   

                    private function init():void{

                           var bs:PlaneExample = new PlaneExample();

                          

                           var ui:UIComponent = new UIComponent();

                           ui.addChild(bs);

                          

                           this.addChild(ui);

                    }

                   

             ]]>

       </mx:Script>

</mx:Application>


//PlaneExample.as

package sample

{

       import flash.events.Event;

      

       import org.papervision3d.objects.primitives.Plane;

       import org.papervision3d.view.BasicView;

 

       public class PlaneExample extends BasicView

       {

             private var _plane:Plane;

             private var _dir:int=1;

            

             public function PlaneExample()

             {

                    init();

                    startRendering();

             }

            

             private function init():void{

                   

                    var p:Plane = new Plane(null,300,300,1,1);    //고정용

                   

                    _plane = new Plane(null,300,300,1,1);   //움직이는

                    _plane.material.doubleSided = true;

                   

                    scene.addChild(_plane);

                    scene.addChild(p);

             }

            

             override protected function onRenderTick(event:Event=null):void{

                   

                    _plane.localRotationY+=1;

                   

                    if(_plane.z>100) _dir=-1;

                    else if(_plane.z<-100) _dir=1;

                   

                    _plane.z+=(_dir*10);

                   

                    super.onRenderTick();

             }

            

       }

}

'etc > old' 카테고리의 다른 글

[ PV3D ] 3-4 구 안쪽에 구 넣기  (0) 2009.10.12
[ PV3D ] 3-3 Nesting (둥지)  (0) 2009.10.10
[ PV3D ] 3-1 Primitives 기본모델?  (0) 2009.10.10
[ PV3D ] 2-3 기초예제 2 - 코드량 줄이기  (0) 2009.10.08
[ PV3D ] 2-2 기초 예제 1  (0) 2009.10.08
The basic elements of 3D objects (3D Object 기본 요소)

 

Vertices (꼭지점) : 3D도형의 Object 꼭지점의 조합으로 이뤄져 있으며, 2D 가진 x, y축에 z축을 추가하여 3D x, y, z 상의 점으로 이뤄져 있다.

 

Triangles (삼각형) : 3개의 꼭지점으로 이뤄진 면을 말한다. 다른 3D프로그램은 4개의 꼭지점으로 이뤄진 quad face (4) 제공하지만 PV3D에서는 Triangles만을 지원한다. 아래 그림과 같이 PV3D에서는 Triangles 조합을 통해 3D Object 구성할 있다.


 

[ 그림 : 꼭지점 4 -> 삼각형 2 -> 삼각 ]

 

여러 Triangle mesh (삼각 ) 가지고 넓이 높이와 깊이 설정을 통해 아래와 같이 3D Object 표현 있다.



PV3D에서는 7가지의 Primitives (기본모델?) 제공합니다.


 


Plane (
평면), Sphere (), Cylinder(원통), Cone(원뿔), Cube(정육면체), Arrow(화살), Paper Plane(종이비행기)

 

여기서 참조로 종이비행기와 화살표는 특별한 케이스로 3D프로그램에서 자주 나오는 Utah teapot (주전자) 유사하게 테스트 등에서 자주 사용됩니다.

The rendering pipeline ( 렌더링 경로 )


PV3D에서는 3D Object 표현하기 위해 여러 경로를 거치며 과정을 Rendering Pipeline 이라 한다.

 

Initialization (초기화) => Projection (투영) => Rendering (표현) 거치게 된다.

 

Initialization (초기화) : 초기에 1번만 발생하는 것으로 Viewport, Scene, Camera, Renderer 등을 생성하며 초기화 설정을 한다.

 

Projection (투영) : 3D 좌표를 2D 화면에 전환하여 표현하는 것으로, Object 3D 꼭지점을 연산하여 2D

화면에 보여질 것을 투영하는 것이다.

 

Rendering (표현) : 스크린에 보여질 이미지를 그리는 과정으로, 2D Projection 데이터를 조합하여 표현한다. 렌더링 과정은 lineTo() : 삼각형 그리기 => beginBitmapFill() : 텍스쳐() 추가를 거치게 된다.


+ Recent posts