728x90
Papervision 3D 의 Flex 개발을 위한 개발 환경 설정에 관한 내용입니다.
Papervision은 MIT에서 개발한 액션스크립트 엔진입니다.
MIT 라이센스를 가지며, 누구나 사용할 수 있는 오픈소스입니다.
개발 환경 설정 2/2 입니다.
이제 다운받은 Papervision 3D와 Flex Builder를 이용하여
Flex에서 Papervision을 사용하는 방법과 간단한 3D 예제를 구현 해 보겠습니다.
이제 다운받은 Papervision 3D와 Flex Builder를 이용하여
Flex에서 Papervision을 사용하는 방법과 간단한 3D 예제를 구현 해 보겠습니다.
1. Flex Builder를 다음과 같이 실행합니다.
2. [File] - [New] - [Flex Project]를 선택하여, 새로운 Flex Project를 생성합니다.
Project 이름을 설정하고 [Finish]를 클릭하여 프로젝트 생성을 완료합니다.
-Project Name : papervison3d_tutorial
-Use default location
-Web application
-Project Name : papervison3d_tutorial
-Use default location
-Web application
3. Project가 완성되고 다음과 같이 src폴더에 Papervision3d_tutorial.mxml 파일이 생성된걸 알 수 있습니다.
4. 이제 프로젝트에 PV3D엔진을 추가하기 위해, 다운받은 com, fl, org 폴더를 선택하여 [Ctrl + C]로 복사합니다.
5. src폴더를 선택한 후 [Ctrl + V]로 붙여넣기하면 자동으로 다음과 같이 src에 추가됩니다.
이제 Flex + Papervision3D 개발을 위한 개발 환경설정은 완료되었습니다.
그럼 간단한 예제로 테스트 해보겠습니다.
그럼 간단한 예제로 테스트 해보겠습니다.
6. 우선, Papervision 3D를 사용하려면, Sprite를 상속받는 클래스를 구현하여야 합니다. AS3 Class를 구현하기 위해 src폴더를 오른쪽 마우스 클릭한다음 [New] - [Folder]를 클릭하여 새 폴더를 만듭니다.
여기에선 폴더명을 ehxm로 만들었습니다.
7. ehxm 폴더를 오른쪽 마우스 클릭하여 [New]-[ActionScript File]로 액션스크립트 파일을 추가합니다.
파일이름을 pv3dBase로 설정합니다.
8. pv3dBase.as 에 Sprite를 상속받는 PV3D 기본 class를 정의, 구현합니다. Papervision3D를 사용하기 위해서 이제 이 기본 class를 계속 사용할 것입니다.
01.
// ActionScript file - pv3dBase.as
02.
03.
package
ehxm{
04.
05.
import
flash.display.Sprite;
06.
import
flash.events.Event;
07.
08.
import
org.papervision3d.view.Viewport3D;
09.
import
org.papervision3d.cameras.*;
10.
import
org.papervision3d.scenes.Scene3D;
11.
import
org.papervision3d.render.BasicRenderEngine;
12.
13.
public
class
pv3dBase
extends
Sprite {
14.
15.
//pv3d를 위한 viewport, renderer, scene, camera를 정의
16.
public
var
viewport:Viewport3D;
17.
public
var
renderer:BasicRenderEngine;
18.
public
var
scene:Scene3D;
19.
public
var
camera:Camera3D;
20.
21.
public
function
init(vpWidth:
Number
=
800
, vpHeight:
Number
=
600
):
void
{
22.
initPV3D(vpWidth, vpHeight);
23.
init3d();
24.
init2d();
25.
initEvents();
26.
}
27.
28.
protected
function
initPV3D(vpWidth:
Number
, vpHeight:
Number
):
void
{
29.
// viewport, renderer, scene, camera를 초기화
30.
31.
if
(vpWidth ==
0
) {
32.
viewport =
new
Viewport3D(stage.width, stage.height,
true
,
true
);
33.
}
else
{
34.
viewport =
new
Viewport3D(vpWidth, vpHeight,
false
,
true
);
35.
}
36.
addChild(viewport);
37.
38.
renderer =
new
BasicRenderEngine();
39.
40.
41.
scene =
new
Scene3D();
42.
camera =
new
Camera3D();
43.
}
44.
45.
protected
function
init3d():
void
{
46.
// models, materials, cameras 등을 초기화
47.
}
48.
49.
protected
function
init2d():
void
{
50.
}
51.
52.
//ENTER_FRAME 이벤트로, 프레임마다 처리해주는 함수
53.
protected
function
initEvents():
void
{
54.
addEventListener(Event.ENTER_FRAME, onEnterFrame);
55.
}
56.
protected
function
processFrame():
void
{
57.
// Process any movement or animation here.
58.
}
59.
protected
function
onEnterFrame( ThisEvent:Event ):
void
{
60.
processFrame();
61.
renderer.renderScene(scene, camera, viewport);
62.
}
63.
64.
}
65.
66.
}
9. 기본 class구현이 완료되었으면, 이제 이 기본 class를 상속받아서 이 프로젝트에 맞게 변경해보도록 하겠습니다. 다시 새로 AS3 File을 만들고 이름을 tutorial로 지정합니다.
10. tutorial.as에 pv3dBase를 상속받아서 다음과 같이 입체도형을 생성하고 회전시키는 샘플을 작성합니다.
01.
// ActionScript file - tutorial.as
02.
package
ehxm{
03.
import
mx.containers.Canvas;
04.
05.
import
org.papervision3d.materials.ColorMaterial;
06.
import
org.papervision3d.objects.primitives.Cone;
07.
08.
public
class
tutorial
extends
pv3dBase{
09.
public
var
cone:Cone;
10.
public
var
mat:ColorMaterial;
11.
12.
//출력될 canvas를 매개변수로 받아서 canvas의 width, height로 viewport의 width, height설정
13.
public
function
tutorial(id:Canvas){
14.
init(id.width, id.height);
15.
}
16.
17.
override
protected
function
init3d():
void
{
18.
//다각뿔 생성, scene에 추가
19.
cone =
new
Cone(
null
);
20.
cone.scale =
1
;
21.
camera.zoom=
100
;
22.
cone.pitch(-
10
);
23.
scene.addChild(cone);
24.
}
25.
override
protected
function
processFrame():
void
{
26.
//회전
27.
cone.yaw(
1
);
28.
}
29.
}
30.
}
papervision3d_tutorial.mxml
01.
<!-- 소스시작 (붙여넣으실때 이부분은 제거하여주세요)
02.
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
03.
<
mx:Application
xmlns:mx
=
"http://www.adobe.com/2006/mxml"
04.
layout
=
"absolute"
creationComplete
=
"init();"
width
=
"300"
height
=
"300"
>
05.
<
mx:Script
>
06.
<![CDATA[
07.
import ehxm.tutorial;
08.
import mx.core.UIComponent;
09.
10.
private function init():void{
11.
//UIComponent 인스턴스에 class에 구현한 tutorial class를 추가하고
12.
//이 UIComponent 인스턴스를 다시 출력할 canvas에 추가합니다.
13.
var scene:tutorial = new tutorial(canvas_view);
14.
var ui:UIComponent = new UIComponent();
15.
ui.addChild(scene);
16.
canvas_view.addChild(ui);
17.
}
18.
]]>
19.
</
mx:Script
>
20.
<
mx:Canvas
id
=
"canvas_view"
width
=
"300"
height
=
"300"
>
21.
</
mx:Canvas
>
22.
23.
</
mx:Application
>
24.
//--> 소스 끝 (붙여넣으실때 이부분은 제거하여주세요)
11. [Ctrl + F11]을 눌러 프로젝트를 build하고 실행해 봅니다.
예제결과
728x90
'Flex' 카테고리의 다른 글
MXML Application, Component, Module (0) | 2012.07.29 |
---|---|
PaperVision3d (0) | 2012.07.29 |
비생성자에서 인스턴스화를 시도했습니다. (0) | 2012.07.29 |
Flex FileReference.save (0) | 2012.07.29 |
FileReference.save 사용방법 (0) | 2012.07.29 |