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을 조절하는 것과 유사하다, 실제로 적용해서 보면 사물의 크기가 커졌다 작아졌다 하는 것을 볼 수 있다.
: 본 예제를 습득한 이후 각자 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 |