※ Papervision3D 1.5
Papervision3D 1.5 에서는 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 이라는 속성이 있습니다.
여기서 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 >
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 입니다.
이 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 >