BLOG main image

항상 지켜보고있어..

3D 프로그래밍 중 가장 중요하다고 여겨야 할것이 바로 Camera이다.
아무리 화려한 모델링을 한다 하더라도 Camera가 없다면
아무것도 볼 수 없을 것이다.


WPF 3D의 Camera에는 크게 3가지 종류가 있다.

1. OrthographicCamera
    정사방식
    카메라에서 멀리 떨어질수록 더 작게 보임
    실제 생활에서 사람들이 사물을 보는 방식

2. PerspectiveCamera
    투시방식
    카메라에서 떨어진 거리와는 관계없음
    동일한 크기로 객체를 표현
    편집이나 시각적인 데이터를 다루는 프로그램
    혹은 정확성을 요구하는 공학이나 생산분야에 사용

3. MatrixCamera
    투사 방식이나 보이는 시각을 특정한 방식으로 설정 가능


사용자 삽입 이미지

좌측 : OrthographicCamera
<OrthographicCamera Position="2.9, 2.65, 2.9" LookDirection="-1,-1,-1" Width="20"/>

우측 : PerspectiveCamera
<PerspectiveCamera Position="2.9, 2.65, 2.9" LookDirection="-1,-1,-1" FieldOfView="130"/>


먼저!
두가지 프로퍼티가 공통으로 쓰여졌다.
1. Position : 3차원 공간에서의 카메라의 위치이다.
2. LookDirection : 카메라의 눈이 어느쪽을 향하는지를 결정한다.


쉽게 요약하자면
원점(0, 0, 0)을 노려볼려면
Position(x, y, z), LookDirection(x2, y2, z2)에서
x + x2 = y + y2 = z + z2 = 0
라는 공식이 성립된다.


물론 0, 0, 0을 노려봐서는 암것도 안보일테지만..
위 공식을 잘 활용한다면 원하는 위치에서 원하는 방향으로 쳐다볼수 있을 것이다.

이외에 UpDirection 이란 프로퍼티가 존재한다.
보고있는 점을 중심으로 카메라를 회전시킨다.
UpDirection의 기본값은 <0, 1, 0>이다.

UpDirection을 <1, 0, 0>으로 설정하여 비교해 보겠다.
사용자 삽입 이미지

이제서야 큐브를 선택한것이 크나큰 실수란걸 깨달았다.
뭔가 변화는 있었지만 정확하게 파악하지 못하겠다.
많이~~ 부족하지만 UpDirection의 설명은 여기까지 마치겠다.


다시 위에서 다룬
OrthographicCamera와 PerspectiveCamera 방식에 대하여 언급하겠다.
공통적인 프로퍼티는 알아봤고,
OrthographicCamera는 Width를
PerspectiveCamera는 FieldOfView를 사용하였다.

다음 그림을 통해 알아보겠다.
사용자 삽입 이미지
OrthographicCamera(왼쪽)의 Width는 볼수있는 공간의 폭이고,
PerspectiveCamera(오른쪽)의 FieldOfView는 보이는 영역을 확장할 수 있는 수평각이다.

백문이 불여일견이듯이
직접 값을 넣어가며 테스트 해본다면
이해가 갈것이다.

이상으로 카메라에 대해 알아보았다.

다음 포스트는 transform에 대해 알아보겠다.
신고
Posted by ossang
포스팅에 앞서
전 3D개발에 어떠한 지식도 없음을 알려드리고,
애덤 네이선의 WPF언리쉬드 책의 내용을 정리하는 차원에서 이 글을 씁니다.

xaml 테스트를 위해 Expression Blend나 Visual studio 대신
kaxaml 이란 xaml view를 사용하였습니다.
제 포스트 중에 잘못 이해하고 틀린 부분이 있다면
엄한 질책도 부탁드립니다.^^


먼저 간단한 큐브 소스부터 보겠습니다.
사용자 삽입 이미지

사용자 삽입 이미지

이와같은 육면체 큐브가 나옵니다.



Viewport3D아래로 내용을 정리하자면 다음과 같습니다.

사용자 삽입 이미지

위 xaml소스를 한번만 정독(?)하며 타이핑 해보면
구조는 바로 익힐수 있습니다.

다음 포스트에서는 첫번째 요소인 Viewport3D.Camera에 대해 알아보겠습니다.
신고
Posted by ossang

카테고리

Ossang (30)
[Ⅰ] About (2)
[Ⅱ] Programming (4)
[Ⅲ] Galary (14)
[Ⅳ] Gossip (10)

달력

«   2017/12   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

티스토리 툴바