원문 : MAX SDK6 도움말, General Terminology
Abstract Class
추상 클래스는 적어도 하나의 순수 가상 함수를 포함한다. 추상 기저 클래스의 인스턴스를 선언할 수 없다; 그것은 다른 클래스를 선언하고 있을 때 기저 클래스로서만 사용될 수 있다.
Affine Transformation
기하학적 변환 -- 이동, 회전, 스케일링 -- 이것은 점 사이의 거리나 라인 사이의 각도를 수정할 수 있지만, 직선(straight line) 및 평행선(parallel line) 사이의 평행 관계는 유지한다. 3ds 맥스 Transform 연산은 아핀(affine) 변환이다.
Apparatus
이것은 (3ds max 사용자 인터페이스에서 불리는 것으로서의) Gizmo 의 다른 이름이다. gizmo 는 샘플 C++ 소스 코드에서는 종종 "apparatus"라고 불린다. sub-object 모드에서 Modifier, Controllers 그리고 Procedural Objects 는 아마도 모두 gizmo 들을 가지고 있을 것이다.
Base Object
base object는 기하학적 파이프라인의 시작점이다. 그것은 절차적(procedural) 오브젝트이거나 메시(mesh) 오브젝트일 것이다.
Callback
콜백은 함수에 대한 포인터이거나 함수 개체인데, 서비스를 요청하는 코드를 '다시' 호출하기 위해서 서버에 의해 사용된다. 3ds 맥스에서의 예는 Deformer 로부터 상속된 클래스이다. 이것은 콜백 오브젝트이다. 시스템은 자신이 호출할 수 있는 플러그인에 의해 구현된 함수에 대한 포인터를 필요로 한다.
Class
사용자 정의 데이터형인데, 이는 데이터 멤버와 멤버 함수로 구성된다.
Class Hierarchy
기저 클래스 및 상속 클래스의 체계이다.
Class Variable
C++에서 클래스 선언에서 데이터 멤버를 지정할(modifying) 때, 멤버에 대한 하나의 복사본을 가리키는 정적(static) 키워드는 클래스의 모든 인스턴스에 의해 공유된다. (역주 : type modifier 를 의미한다. 이를 우리 말로는 '형 수정자'라고 부른다. 의미의 명확함을 위해 '지정할 때'라고 표현했다.)
Controller
요소(item)의 애니메이션을 지정하거나 제어하는 플러그인 유형이다. 여러 가지 컨트롤러 유형이 존재한다. 예를 들어 변환 컨트롤러는 씬 내의 노드 배치를 결정하는 반면, 표현식 컨트롤러는 요소의 매개변수가 수학적 표현식에 의해 제어될 수 있도록 허용한다.
Cache System
속도를 최대화하기 위해서 시스템은 노드의 상태를 평가한다. 시스템은 씬 내의 각 노드를 위한 World Space Cache를 유지한다. 이 월드 공간 캐쉬는 노드 파이프라인의 결과물이다. 그것은 월드 공간에 있는 오브젝트에 모든 연산이 적용된 이후에 그것의 상태를 반영한다. 캐시를 사용하면 시스템은 Validity Interval 을 유지한다. 유효화 간격은 캐쉬가 정확하게 노드의 상태를 반영하게 되는 시간 간격을 지정한다.
Class Descriptor
class descriptor 는 플러그인 클래스에 대한 정보를 제공한다. 이 클래스에서 정의된 메서드는 ClassID, SuperClassID 와 같은 정보에 접근한다.
ClassID
플러그인 클래스에 의해 요구되는 단일 식별자(ID)이다. SDK 는 이러한 Class_ID 들을 생성하기 위한 프로그램을 제공한다.
Channel
채널은 MAX에 의해 사용되는 Cache 시스템의 일부이다. 기하학적 파이프라인은 채널로 쪼개지며, modifier 들은 단지 지정된 채널을 수정하기 위한 옵션을 가진다. 채널의 예는 TOPO_CHANNEL(면이나 폴리곤 구조체) 과 GEOM_CHANNEL(정점들)이다.
Deep Copy
오브젝트에 대한 완벽한(complete) 복사본을 만든다(그것의 데이터 구조체들과 이들 구조체들의 모든 데이터를 복사한다). Shallow Copy 도 참조하라.
Device Context
Windows API 로부터 온 개념이다. 장치 문맥은 그래픽 오브젝트와 그것의 관련 속성(attribute), 그리고 출력에 영향을 주는 그래픽 모드들의 집합을 정의하는 구조체이다. 그래픽 오브젝트는 라인 그리기를 위한 펜, 페인팅과 채우기를 위한 브러시, 복사나 스크린의 일부를 스크롤링하기 위한 비트맵, 이용 가능한 색상 집합을 정의하는 팔레트, 클리핑 및 다른 연산을 위한 영역(region), 그리고 페인팅과 그리기 연산을 위한 경로(path) 등을 포함한다. 대부분의 Win32 구조체와는 달리 응용프로그램은 장치 문맥에 결코 직접적으로 접근하지 않는다; 대신에 그것은 다양한 함수를 호출함으로써 간접적으로 구조체에 대한 연산을 수행한다.
Deformable
deformable(변형가능한) 오브젝트는 단순히 수정될 수 있는 점을 가진 오브젝트일 뿐이다. 모든 오브젝트는 Object 클래스의 IsDeformable() 메서드를 TRUE 로 설정함으로써 "deformable" 이 될 수 있다. deformable 오브젝트는 반드시 다음의 Object 메서드를 지원해야만 한다; NumPoints(), GetPoints(), SetPoints(), Deform().
Derived Object
상속 클래스는 오브젝트(혹은 다른 상속 오브젝트)에 대한 포인터를 포함하며, 하나 이상의 modifier 응용프로그램을 포함한다.
Dialog Proc
다이얼로그 박스로 보내지는 메시지를 처리하는 응용프로그램 콜백 함수이다.
DLL
동적 연결 라이브러리는 다중의 프로그램이 코드, 데이터, 자원을 공유하게 하는 목적 코드 라이브러리이다. 3ds 맥스 플러그인은 DLL로 구현된다.
Geometric Pipeline
기하학적 파이프라인은 씬 내의 노드들이 modifier 응용프로그램을 통해서 반복적으로 수정될 수 있도록 허용하기 위해서 3ds 맥스에 의해 사용되는 시스템이다. 파이프라인의 처음에는 기저 오브젝트가 존재한다. 이것은 절차적 오브젝트(혹은 단순 메시)이다. 파이프라인의 마지막에는 그 오브젝트의 월드 공간 상태가 존재한다. 이 월드 공간 상태는 MAX의 3D 뷰포트에 나오는 것이다. 파이프라인은 오브젝트, 상속 오브젝트, modifier 리스트로 구성된다.
Hit Testing
마우스 포인터가 오브젝트, 하위 오브젝트 컴포넌트, modifier gizmo 혹은 controller gizmo를 간섭(intersect)하는지 확인하기 위한 검사이다.
Instance
이 개념은 MAX 에서 몇 가지 의미를 가진다. 하나는 C++의 인스턴스이다. 이것은 단지 클래스의 할당이다 -- 오브젝트. 다른 의미는 오브젝트, 수정자(modifier), 컨트롤러 등의 복사본과 관련된 사용자 인터페이스이다. 즉 개념적으로는 원본에 대한 단순한 포인터이다.
Interval
SDK 에서 정의된 클래스이다. 그것은 시작 시간과 끝 시간 사이의 시간 간격을 기술한다. 시작과 끝 시간을 설정하거나 검색하고, 간격을 계산하고, 지정된 시간이 인터벌 안에 있는지 검사하기 위한 클래스의 메서드들이 존재한다.
Metadata
이 개념은 데이터를 위한 데이터라는 자연스러운 의미이다. 그것은 단지 다른 데이터에 대한 레이아웃, 위치, 이름, 유형 등을 기술하는 머신이 읽어들일 수 있는 데이터 집합에 대한 다른 이름이다. 예를 들어 매개변수 블록 메타데이터는 ParamBlockDesc2 에 저장된다. 이 경우 주어진 매개변수 블록과 그것의 매개변수에 대한 모든 정보는 그것의 관련 ParamBlockDesc2 인스턴스에 저장된다. 이 메타데이터는 실시간에 누구든지 읽을 수 있으며, 그것은 매개변수 블록에 어떤 데이터가 존재하는지를 표현하기 위해서 사용될 수 있다.
Modifier
수정자는 오브젝트를 특정 방식으로 수정하는 플러그인 유형이다. 수정자의 다른 이름은 오브젝트 공간 수정자(object space modifier)이다. 그것은 종종 소스코드에서 OSM 으로 불린다.
Modifier Application
이것은 기하도형 파이프라인 시스템의 일부를 기술하기 위해서 사용되는 개념이다. 이것은 ModApp의 다른 이름이다. 그것은 수정자 응용프로그램의 리스트이다. 그것은 주요하게는 수정자에 대한 참조로 구성된다.
Node
3ds 맥스 뷰포트에서 오브젝트에 대한 가시적 표현을 Node 라고 부른다. 뷰포트에서 선택되고 이동될 수 있는 것과 노드 사이에는 1 대 1 관계가 존재한다. 노드는 운동학(kinematic) 계층을 지원한다. 노드는 그것들의 부모에 대한 포인터와 그것의 자식들에 대한 포인터 리스트를 소유한다. 노드는 그것들의 변환 컨트롤러에 대한 포인터도 소유한다.
Object Space Modifier
오브젝트 공간 수정자는 자신의 지역(local) 변환의 공간에서 오브젝트에 적용되어 그것들을 특정 방식으로 수정한다. Bend, Taper, Twist 와 같은 변형이 오브젝트 공간 수정자 플러그인의 예이다. 그것은 소스코드에서 종종 OSM 이라고 불린다.
Orthonormal Matrix
직교 행렬은 각 축이 다른 축들에 대해서 90 도 각도를 가지는 좌표계 시스템이다(그것은 비스듬하지 않다). 직교 법선 행렬(orthonormal matrix)는 열 벡터들의 길이가 다른 것과 같고 직교이다.
PRS Controller
이것은 노드의 Position, Rotation, Scale을 지시하는 변환 컨트롤러이다.
Reentrant Function
함수가 호출될 때, 첫 번째 호출이 반환하기 전에 다시 호출되면, 그것은 재진입적이라고 불린다.
Reference Maker
참조를 생성하는 모든 엔터티(entity)는 반드시 이 클래스로부터 상속되어야만 한다. 참조는 ReferenceMarker 와 ReferenceTarget 사이의 의존성에 대한 공식적 기록을 생성한다.
Reference Target
이것은 레퍼런스 마커의 참조 대상이다. 레퍼런스 타겟은 그것을 참조하는 모든 오브젝트에 대한 포인터 리스트를 보유한다.
Shallow Copy
오브젝트의 데이터 구조체에 대한 복사본을 생성하지만, 그들 구조체의 데이터를 모두 복사하지는 않는다. 예를 들어 Mesh 오브젝트가 얕은 복사를 수행하면 verts, tVerts, tvFaces는 복사되지 않는다. 그러나 numFaces, numVerts, numTVerts 값들은 복사된다. Deep Copy 도 참조하라.
Space Warp
이 개념은 이 도움말과 C++ 소스 코드에서 월드 공간 수정자와 같은 의미로 사용된다. 이것은 월드 공간에서 오브젝트를 수정하는 플러그인 유형이다. 그 예는 Ripple Space Wrap 플러그인이다.
Sub-Object Selection
수정자가 편집되고 있을 때, 그것은 사용자가 하위 오브젝트 선택의 수준을 선택하도록 허용한다. Bend 수정자에 대해 그 옵션은 gizmo 와 center 이다. 이들은 모두 수정자 오브젝트의 하위 요소이다. Edit Mesh 수정자에 대해 하위 오브젝트 선택 수준은 점(vertex), 면(face), 모서리(edge)이다. 이들은 오브젝트의 하위집합이다.
SuperClassID
최상위 클래스 ID 는 클래스가 표현하는 오브젝트의 유형을 기술하는 시스템 정의 상수이다. 최상위 클래스 ID의 예를 들어 보자 : GEOMOBJECT_CLASS_ID, CAMERA_CLASS_ID, LIGHT_CLASS_ID, SHAPE_CLASS_ID, HELPER_CLASS_ID, SYSTEM_CLASS_ID.
TriObject
삼각형 메시 오브젝트. 모든 절차적 오브젝트들은 반드시 자신을 TriObject 들로 변환할 수 있어야만 한다. TriObjects 는 "변형가능(deformable)"하다. 이것은 그것(TriObject)들이 수정자가 기하도형을 변형하기 위해 연산을 수행할 수 있는 지점을 가진다는 것을 의미한다.
Transform Controller
변환 컨트롤러는 Matrix3를 제어하는 컨트롤러이다. 예를 들어 변환 컨트롤러는 씬 내의 노드 위치를 정의하기 위해서 사용되는 4x3 행렬을 제어한다.
Transformation Matrix
이동, 회전, 스케일의 2차원 변환은 3x2 행렬에 의해 표현된다. 3차원 변환은 4x3 행렬에 의해 표현된다. 이들 행렬을 변환 행렬이라고 부른다.
TimeValue
이것은 SDK 에서 사용되는 시간의 인스턴스이다.
Validity Interval
이것은 SDK에서 아이템이 유효화되는 시간 간격을 기술하기 위해서 사용되는 개념이다. 예를 들어 메시가 오브젝트에 대해 캐싱될 때, 보통 유효화 인터벌도 저장된다. 이것은 메시 캐쉬가 정확하게 오브젝트의 상태를 표현하기 위한 시간의 범위를 기술한다. 이 시간 범위 밖에서는 메시가 유효하지 않다.
Virtual Array
가상 배열의 개념은 SDK 전반에서 사용된다. 3ds 맥스가 플러그인에 의해 저장된 아이템의 그룹에 접근할 필요가 있을 때, 가상 배열 메커니즘이 종종 사용된다. 개발자는 각 아이템에 대해서 정수 배열 인덱스 {0, 1, 2, ...}를 할당한다. 3ds 맥스가 아이템을 검색하거나 저장할 필요가 있을 때, 그것은 플러그인에 인덱스를 넘김으로써 그 작업을 수행할 것을 요청한다. 개발자는 그 인덱스를 사용해 적절한 값을 검색하거나 설정한다. 예를 들어 3ds 맥스는 이러한 방식으로 플러그인 참조에 접근한다.
World Space Modifier
이것은 이 도움말과 C++ 소스 코드에서 Space Wrap 과 같은 의미로 사용된다. 이것은 월드 공간에서 오브젝트를 수정하는 플러그인 유형이다.
[출처] - 라이푸님의 http://blog.naver.com/lifeisforu 네이버 블로그
'프로그래밍 > MaxSDK' 카테고리의 다른 글
[MAXSDK] 기하 파이프라인 시스템 (0) | 2009.12.03 |
---|---|
[MAXSDK] 인터벌 (0) | 2009.11.30 |
[MAXSDK] 메모리 할당 (0) | 2009.11.30 |
[MAXSDK] DLL, 라이브러리 함수, 클래스 기술자 (0) | 2009.11.30 |
[MAXSDK] 맥스 SDK의 기본 개념 (0) | 2009.11.30 |