devmae
개발자 향기
devmae
전체 방문자
오늘
어제
  • 전부 감상 (280)
    • Unity (52)
      • memo (37)
      • R&D (15)
    • 모바일 (32)
      • iOS (6)
      • Android (25)
    • 개발자 모드 (41)
      • 개발자처럼 파고들기 (28)
      • 한가해서 책읽는거 아님 (10)
      • 영상 요약 (3)
    • Languages (40)
      • C++ (23)
      • MFC (8)
      • Java (4)
      • javascript (5)
    • Flash (108)
      • tip (29)
      • tech (4)
      • as2.0 (1)
      • as3isolib (3)
      • flartoolkit (2)
      • 이미지 편집기 (2)
      • papervision3d (12)
      • scale form (2)
      • Flash Builder (12)
      • air (5)
      • as3.0 (20)
      • flash player (9)
      • 개념잡기 (6)
      • source (1)
    • +,-,×,÷ (3)
      • 수학 뽀개기 (3)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
devmae

개발자 향기

Flash/papervision3d

[PV3D_2.0]Papervision3D 2.0 Camera3D에 관해 (Camera3D, FreeCamera3D)

2009. 6. 25. 20:42
※ Papervision3D 1.5

Papervision3D 1.5 에서는 Camera3D 클래스와 FreeCamera3D 클래스가 존재합니다.

본론으로 들어가기 전에,

Camera3D

중심이 카메라가 아닌 모든 물체들이 될 수 있습니다.
물체를 중심으로 카메라가 돌아다닌다고 할 수 있습니다.
카메라가 물체를 중심으로 돌아다니므로 왠만하면 물체 자체가 움직이는 것 처럼 보입니다.

FreeCamera3D

중심이 카메라가 됩니다.
풀어서 얘기하면 카메라는 고정되어 있고,
물체가 카메라 주위를 돌아다니는 시점이라고 말할 수 있습니다.
물체가 카메라 중심으로 돌아다니므로 화면상에 보이지 않을 때도 있습니다.


이랬던 PV3D가....-_-;


2.0에 와서는
" 뭐야.. 왜 2.0에는 Camera3D.as 하나밖에 없는거냐? -_- "
2.0은 'GreatWhite'란 프로젝트 명으로 현재 개발 중인 것으로 알고있습니다.
그래서 추후에 추가 될줄 알았습니다.-_-;

하지만 많은 사람들이 2.0을 사용하는데... FreeCamera3D만 쏙 뺄 리가 없었습니다.
마냥 기다릴 수도 없는 노릇이고...

그래서 안되는 영어를 써서 외국인과 채팅(?)해 물어본 결과...
답은 간단했습니다.


※ Papervision3D 2.0

2.0 에서는 Camera3D와 FreeCamera3D가 병합 되었다고 합니다.

즉, Camera3D 클래스 하나만으로도 FreeCamera3D를 구현 할 수 있게 된 것입니다.

그럼 Camera3D에서 위의 두가지를 어떻게 구현하는지 알아보겠습니다.


간단히 말해서,

CameraObject3D의 속성중에 target 이라는 속성이 있습니다.

이 target 의 값이 null이면 FreeCamera3D 입니다.

이 target 의 값이 null이 아닌 어떤 3D객체이면 그것은 Camera3D 입니다.

여기서 3D 객체란 모든 DisplayObject3D(Plane, Cube...)가 이에 해당합니다.


코드로 설명해보겠습니다.


- FreeCamera3D -

...
import org.papervision3d.cameras.Camera3D;
...

private var default_camera:Camera3D;
private var current_camera:CameraObject3D;

public function init():void{
     default_camera = new Camera3D();
     current_camera = default_camera;

     current_camera.target = null;
}



- Camera3D -


...
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.primitives.Plane;
...

private var default_camera:Camera3D;
private var current_camera:CameraObject3D;
private var plane:Plane;

public function init():void{
     plane = new Plane();
     plane.x = 10;
     plane.y = 0;

     default_camera = new Camera3D();
     current_camera = default_camera;

     current_camera.target = plane;
}

이렇게 사용하시면 되겠습니다.
(위 코드는 이해를 돕기위해 작성한 것입니다.)


참고
Papervision3D 2.0 API - http://www.flashbookmarks.com/PV3D-GreatWhite-DOC/
Papervision3D Forum  - http://www.nabble.com/Papervision3D-f22855.html


<출처 : http://2rang.tistory.com/18 >
    'Flash/papervision3d' 카테고리의 다른 글
    • lookAt()의 "lookAt error" 런타임 오류 해결
    • papervision3D tutorial
    • FOV란
    • ASE파일에서 오브젝트 위치 알아내기
    devmae
    devmae
    enjoy with me?

    티스토리툴바