눈의 위치(Eye Position)
이는 앞서 투영법에 관한 내용에서 보았던 ‘관찰자의 눈’의 위치가 Z축상에서 어디가 되느냐를 나타내는 값을 뜻한다. 다음 그림에서 보는 것처럼, 뷰 평면을 기준으로 하여 Z좌표의 값이 (+) 또는 (-)가 되며, 이러한 값을 뷰 객체를 만들 때 EYE라는 키워드에 부여한다. 그러면 ‘관찰자의 눈’의 정확한 위치를 임의로 설정할 수 있다. 물론 이 속성은 나중에 SetProperty 메서드를 사용하여 변경할 수도 있다.
그리고 ‘관찰자의 눈’의 위치값은 어느 한계값 밑으로는 내려갈 수 없다. 즉, 하한값이 존재한다. 그림을 보면 직관적으로 느껴지겠지만, 아무래도 ‘눈’의 위치가 뷰 평면을 넘어가서 Z값이 (-)인 영역에 위치한다는 것은 말이 안될 것이다. 엄밀히 말하면 이 하한값은 가까운 쪽 경계면(Near Clipping Plane)의 Z값 또는 0 둘 중 더 큰 값이 된다. 여기서 뜬금없이 등장하는 ‘가까운 쪽 경계면’이라는 용어는 다음번 게시물에서 ‘먼 쪽 경계면(Far Clipping Plane)’이란 용어와 함께 사용되는데, 일단 뷰포트를 나타내는 3차원 큐브에서 Z축을 수직으로 통과하는 두 평면을 의미한다는 점만 기억해두자. ‘관찰자의 눈’이 적어도 이 큐브의 밖에는 있어줘야 한다는 의미로 이해하면 될 것 같다. 더 자세한 내용은 후속 게시글에서 언급하도록 하겠다. 위치의 조정은 다음과 같이 해주면 된다.
myView -> SetProperty, EYE=5
평행 투영법이 사용되는 경우에는 사실 이 값은 아무런 의미가 없다. 거리에 상관없이 모든 객체들은 크기가 변하지 않기 때문이다. 하지만, 원근 투영법이 사용되는 경우라면 얘기가 달라진다. ‘관찰자의 눈’이 가까운 쪽 경계면에 더 가까이 접근하게 되면, 실제로 나타나는 객체의 크기는 더 작아진다. 뭔가 좀 이상하지 않은가? 왜 ‘눈’이 객체에 가까와지는데 더 크게 보이지 않고 작게 보이게 될까? 그 이유는 앞의 그림과 뒤의 그림을 서로 비교해보면 알 수 있다. ‘눈’으로부터 방사상으로 퍼져나가는 선이 평면을 가로지르는 위치를 보면, 그 면적이 서로 다르다는 점을 눈여겨보면 된다. 위의 그림과 아래 그림에서 W1과 W2를 서로 비교해보면 좀 더 명확한 이해가 가능할 것이다.
'IDL > Object Graphics' 카테고리의 다른 글
Object Graphics in IDL [20] (0) | 2011.01.11 |
---|---|
Object Graphics in IDL [19] (0) | 2011.01.04 |
Object Graphics in IDL [17] (0) | 2010.12.27 |
Object Graphics in IDL [16] (0) | 2010.12.15 |
Object Graphics in IDL [15] (0) | 2010.12.10 |