Main Content

보기 투영의 이해

투영의 두 가지 유형

MATLAB® 그래픽스는 3차원 그래픽스 표시에 대해 직교 투영 유형과 원근 투영 유형을 모두 지원합니다. 사용자가 선택하는 유형은 표시하려는 그래픽스의 유형에 따라 결정됩니다.

  • orthographic은 보이는 볼륨을 직육면체(즉, 반대쪽 변끼리 평행한 상자 모양 입방체)로 투영합니다. 카메라로부터의 상대 거리는 객체의 크기에 영향을 주지 않습니다. 이 투영 유형은 객체의 실제 크기와 객체 사이의 각도를 유지하는 것이 중요할 때 유용합니다.

  • perspective는 보이는 볼륨을 각뿔대(밑면과 평행하게 꼭짓점이 잘린 각뿔)로 투영합니다. 거리는 단축 효과를 발생시켜 객체가 카메라에서 멀리 있을수록 작게 보여집니다. 이 투영 유형은 실제 객체의 사실적인 보기를 표시하고 싶을 때 유용합니다.

기본적으로, MATLAB은 직교 투영을 사용하여 객체를 표시합니다. 투영 유형은 camproj 명령을 사용하여 설정할 수 있습니다.

다음 그림은 덤프 트럭 소묘(patch로 생성됨)와 수학 함수의 곡면 플롯을 보여주며, 둘 다 직교 투영을 사용합니다.

덤프 트럭을 둘러싼 상자의 앞면과 뒷면의 너비를 측정하면 너비가 같다는 사실을 알 수 있을 것입니다. 이 그림은 깊이가 있는 실제 객체를 쳐다볼 때 뚜렷이 드러나는 원근감이 없으므로 부자연스러워 보입니다. 반면에, 곡면 플롯은 사각 공간 내에서 함수의 값을 정확히 나타냅니다.

이번에는 똑같은 그래픽스 객체에 원근을 추가한 그림을 살펴보겠습니다. 관찰자에게서 더 멀리 떨어진 부분이 더 작게 나타나므로 덤프 트럭이 더 자연스럽게 보입니다. 이 투영은 사람의 눈에 사물이 비치는 방식을 모방한 투영 유형입니다. 하지만 곡면 플롯은 왜곡되어 보입니다.

투영 유형과 카메라 위치

기본적으로, MATLAB은 카메라가 장면의 중심을 향하도록 하고 좌표축의 모든 그래픽스 객체를 담도록 CameraPosition, CameraTarget, CameraViewAngle 속성을 조정합니다. 카메라 뒤쪽에 그래픽스 객체가 있도록 카메라를 배치하는 경우 표시되는 장면은 좌표축의 Projection 속성과 Figure의 Renderer 속성 모두의 영향을 받을 수 있습니다. 다음은 투영 유형과 렌더링 방법 사이의 상호 작용을 요약한 내용입니다.

 

직교

원근

OpenGL®

CameraViewAngle에 따라 CameraTarget에서 장면의 범위가 결정됩니다.

CameraViewAngle에 따라 CameraPosition에서 무한대까지 장면의 범위가 결정됩니다.

Painters

CameraPosition에 상관없이 모든 객체가 표시됩니다.

그래픽스 객체가 CameraPosition 뒤쪽에 있는 경우에는 권장되지 않습니다.

다음 도식은 직교 투영과 OpenGL을 사용할 때 보여지는 광경(회색 영역)을 나타냅니다. 카메라 앞에 있는 모든 것이 표시됩니다.

원근 투영에서는 카메라 시야각의 원뿔 내에 보이는 것만 보여집니다.

MATLAB은 시점 축을 따라 자르지 않으므로 Painters 렌더링 방법은 3차원 공간에서 카메라를 이동하기에는 덜 적합합니다. Painters 방법에서 직교 투영을 사용하면 카메라 위치에 상관없이 장면에 포함된 모든 객체가 표시됩니다.

3차원 장면 인쇄하기

이전 섹션에서 설명한 것과 같은 효과는 하드카피 출력물에도 그대로 나타납니다. 화면에 표시되는 결과와 같은 인쇄물을 얻으려면 opengl 인쇄를 명시적으로 지정해야 합니다(print 명령과 함께 -opengl 옵션을 사용함).