계층구조상의 구성요소들
그러면 계층구조를 이루는 구성요소들에는 어떤 것들이 있으며, 각각의 역할은 무엇인지 살펴보기로 한다. 이전에 그래픽 객체들의 종류에 관하여 소개할 때 다루었던 그래픽 구성 관련 객체들(Display Objects)에 대한 내용과 약간 겹치는 부분도 다소 있겠지만, 여기서는 주로 계층구조상에서의 역할에 주안점을 둔 내용임을 감안하기 바란다.
1. Scenes
IDLgrScene 클래스에 해당되는 씬 객체는 다른 모든 그래픽 객체들을 포함할 수 있는 최상위 레벨 객체이다. 이 클래스의 메서드인 Add와 Remove를 이용하여 뷰 객체나 뷰그룹 객체들을 씬 객체에 포함시키거나 씬 객체로부터 삭제할 수 있다. 그리고 디바이스 객체 클래스의 Draw 메서드에 대한 인자로 들어감으로써, 해당 그래픽 디바이스상에서 출력될 수 있다. 만약 구현된 그래픽 컨텐츠에 씬 객체가 들어가 있다면 그 자체가 계층구조상의 최상위 레벨이 될 것이다. 하지만 뷰 객체가 하나일 경우에는 굳이 씬 객체가 필요가 없기 때문에, 이 때에는 뷰 객체가 최상위가 된다. 실제로는 이러한 경우가 더 일반적이므로, 실제로 이 씬 객체를 볼 일이 그리 많지는 않을 것 같다.
2. Viewgroups
IDLgrViewgroup 클래스에 해당되는 뷰그룹 객체는 씬 객체와 마찬가지로 뷰 객체를 비롯한 다른 그래픽 객체들을 포함할 수 있다. 그러나 뷰그룹 객체는 기본적으로 씬 객체에 포함이 되어야 하므로, 계층구조상에서 최상위 레벨이 되지는 않는다. 다만 디바이스 객체 클래스의 Draw 메서드에 대한 인자가 될 수는 있다.
3. Views
IDLgrView 클래스인 뷰 객체는 모델 객체들을 포함하는 역할을 하며 그 자체로 최상위 레벨이 될 수 있다. 이 클래스의 메서드인 Add와 Remove를 이용하여 모델 객체들을 뷰 객체에 포함시키거나 뷰 객체로부터 제거할 수 있다. 그리고 디바이스 객체 클래스의 Draw 메서드에 대한 인자로 들어감으로써, 해당 그래픽 디바이스상에서 출력될 수 있다. 뷰 객체는 앞서 언급된 씬 객체나 뷰그룹 객체와는 달리 계층구조에 있어서 항상 필수적인 존재이므로, 어떤 경우에든 이 뷰 객체가 없는 경우는 절대 없을 것이다. 따라서 이 클래스의 특성은 잘 파악해놓을 필요가 있다.
4. Models
IDLgrModel 클래스인 모델 객체는 하위레벨의 그래픽 객체들이나 또 다른 모델 객체들만을 포함할 수 있다. 모델 객체에는 변환행렬(Transformation Matrix)이라고 하는 속성이 항상 주어진다. 이는 Object Graphics가 구현되는 3차원 공간상에서 그래픽 객체의 시선방향, 크기배율, 변위 등을 나타내며, 모델 객체안에 포함된 하위 그래픽 객체들 모두에게 일괄적으로 적용된다. 이 클래스의 메서드인 Add와 Remove를 이용하여 하위 그래픽 객체들을 모델 객체에 포함시키거나 모델 객체로부터 제거할 수 있다. 그 외에 Rotate, Scale, Translate와 같은 메서드들을 사용하여 변환행렬을 직접 컨트롤한다. 이에 관한 좀 더 자세한 내용은 이후에 소개될 예정이다.
5. Atomic Graphic Objects
최하위 레벨에 해당되는 가장 기본적인 그래픽 객체들로서 IDLgrAxis, IDLgrPlot, IDLgrContour, IDLgrImage 등등 개별 하위레벨의 그래픽 객체들 여럿이 모여 하나의 모델 객체에 속하게 된다.
6. Attribute Objects
Attribute 객체란 일반적인 Object Graphics에서는 사용되지만, 그 자체가 직접 그래픽상에서 구현되는 성격의 것이 아니므로, 모델 객체안에 직접적으로 포함되지는 않는다. 하지만 모델 객체에 포함되는 개별 그래픽 객체들의 속성을 결정하는 역할을 하는 추상적인 의미의 객체로서, IDLgrFont, IDLgrPalette, IDLgrPattern, IDLgrSymbol과 같은 클래스들이 이러한 범주에 속한다. 예를 들어, 문자열에 해당되는 클래스인 IDLgrText의 경우, 그 속성들 중 Font라는 것이 있다. 물론 문자열의 폰트를 지정하는 속성이며, 이를 설정하기 위해서는 폰트 자체도 IDLgrFont라는 클래스로 생성된 객체의 형태로 속성이 부여되어야 한다.
7. Helper Objects
Helper 객체는 그 자체가 직접 모델이나 뷰에 포함되지도 않고, 어떤 특정 객체의 속성으로 부여되지도 않는다. 그러나 구현될 그래픽 체계상에서 뭔가 보조적인 역할을 수행하는 객체로서, IDLgrTessellator, Trackball과 같은 클래스들이 이러한 범주에 속한다. 이에 관한 자세한 내용은 추후 실제 예제들을 통하여 소개하도록 한다.
다음 게시물에서는 실제 구현에 해당되는 렌더링(Rendering)이라는 과정에 대하여 소개하기로 한다.
'IDL > Object Graphics' 카테고리의 다른 글
Object Graphics in IDL [15] (0) | 2010.12.10 |
---|---|
Object Graphics in IDL [14] (0) | 2010.12.06 |
Object Graphics in IDL의 연재와 관련하여... (0) | 2010.11.12 |
Object Graphics in IDL [12] (0) | 2010.10.10 |
Object Graphics in IDL [11] (0) | 2010.10.01 |