Max Export - 1

반응형


이전에 max export 강좌를 올린적이 있었는데
이번엔 export를 만들고 나서 정리를 위해 글을 쓸 예정이다.

익스포터 프로젝트를 만드는 방법에 대한 내용은 아래 링크를 참고하면 된다.
http://mgun.tistory.com/791

프로젝트를 만들면 아래와 같은 클래스가 생긴다.
class MgExport : public SceneExport
{
public:

...
 int    DoExport(const char *name,ExpInterface *ei,Interface *i, BOOL suppressPrompts=FALSE, DWORD options=0);
...
 Interface*  ip_;
 ExpInterface* expIp_;
}

나의 export의 이름은 Mg를 사용한다.
그냥 나의 이니셜에서 따온...ㅋㅋ..

SceneExport : 파일 익스포트 플러그인을 만들기 위한 기반 클래스.
Interface : 맥스 내부의 함수를 호출할 수 있도록 해 주는 인터페이스
ExpInterface : 씬의 모든 노드를 열거할 수 있도록 해 주는 인터페이스.
DoExport : DialogBox를 띄우고 DialogBoxProc을 통해 체크값 저장.
                이 함수가 중요한 이유는 인자를 보면 알 수 있다.
                이 함수를 통해 파일명, ExpInterface, Interface값이 넘어온다.
                
애니메이션 쪽은 복잡하게 이것저것 해야 할 말들이 많아서 뒤로 미루고 우선
간단하게 static mesh부터 정리하자.

mesh는 triangle로 이루어 져 있고 triangle(삼각형)는 vertex(정점)로 이루어져 있다.

이 삼각형은 어떤 정보를 가지고 있을까?
position, normal, tangent, binormal, texture coord, color, diffuse map, normal map 정도?

맥스에서 개체는 INode로 이루어져 있다.
필요한 정보가 있다면 이를 Node에서 얻어와야 한다.
 
Node : max의 장면상에서 오브젝트와 1대1 대응하는 아이템.
          모든 절차적 오브젝트, 라이트, 카메라, 헬퍼 오브젝트 등 뷰포트에 나타나는 것은 연결된 node를 가진다.
          node에는 node와 연결된 아이템이 scene과 작용하게 하는 많은 속성들을 저장한다.

노드를 얻기 위해서는 두가지 방법이 있다.
하나는 Interface::GetRootNode로 모으는 방법이며 또 다른 하나는
ExpInterface::theScene->EnumTree(ITreeEnumProc*) 함수로
클래스를 넘겨서 callback 함수가 호출되게 하는 방법이다.

GetRootNode든 EnumTree든 노드를 하나씩 얻게되면 이 노드가 어떤 노드인지
검사해 볼 필요가 있다.
가장 먼저 검사해 볼 부분은 해당 노드가 단일노드 여부 이다.
만약 단일 노드 라면 이 노드가 피지크나 스킨을 검사해서 본을 사용하는 노드인지를 체크한다.

해당 노드가 단일 노드인지 검사하는 방법은 아래와 같다.
if(node->GetParentNode()->IsRootNode() && (0 == node->NumberOfChildren()) )

본중에서 light, camera, particle view와 같은 필요없는 것 도 있다.
이런것들은 알아서 잘 걸러줘야 한다.

Modifier(수정자) : 오브젝트를 특정 방식으로 수정하는 플러그인 유형.
수정자의 다른 이름은 오브젝트 공간 수정자(object space modifier).

Object Space Modifier : 자신의 지역 변환의 공간에서 오브젝트에 적용되어
그것들을 특정방식으로 수정한다. Bend, Taper, Twist와 같은 변형이 오브젝트 공간 수정자 플러그인의 예이다.

모든 노드를 순회하면서 총 노드의 갯수나 필요없는 노드를 제외한 실제 노드의 갯수와 bone 이름등을 알 수 있다.
요기까지가 딱 내가 원하는 곳 까지이다.
노드로부터 여러가지 정보를 뽑아 오는건 다음 시간에....

SceneExport Class, ExpInterface, IScene Reference
: http://blog.naver.com/PostView.nhn?blogId=bastard9&logNo=140069096100

Working with nodes
: http://blog.naver.com/bastard9?Redirect=Log&logNo=140068847333

'Study > Character' 카테고리의 다른 글

Max Export - 3  (0) 2012.01.05
Max Export - 2  (0) 2012.01.05
유용한 링크들  (0) 2012.01.01
max importer만들기 exporter 만큼이나 쉬운 importer  (0) 2011.05.27
max import 참고 자료  (0) 2011.05.19
TAGS.

Comments