Max Export - 4
Posted by Go crazy for anything that will make you smile.
간만에 글을 쓰니 힘드네..흐음.. 얼추 끝난것 같은데 주의할 점 몇가지와 마무리 부분을 좀 정리해야 할 듯... 정점(버텍스)를 저장할 때 중복되는 정점이 있는지 검사해서 중복되는 것은 재사용할 수 있도록 해준다. for(index=0; index
간만에 글을 쓰니 힘드네..흐음.. 얼추 끝난것 같은데 주의할 점 몇가지와 마무리 부분을 좀 정리해야 할 듯... 정점(버텍스)를 저장할 때 중복되는 정점이 있는지 검사해서 중복되는 것은 재사용할 수 있도록 해준다. for(index=0; index
얼추 노드에서 메시를 얻어 필요한 정보들을 얻는 방법들을 이전 글에서 정리 했었다. 이전 글에서 노드에서 얻은 값들은 아래와 같다. posWorld : 월드상의 위치값 normal : 노말값 uvVert : 텍스쳐 좌표값 texName : 사용하는 텍스쳐 이름 color : 정점 색깔 vertexIndex : 정점의 인덱스값 ase export를 해본 사람은 알겠지만 max와 directx와의 좌표계는 다르다. max는 오른손 좌표계를 쓰고 dx는 왼손 좌표계를 사용한다. 왼손좌표계와 오른손 좌표계에 대한 설명은 아래 링크중 ASE Animation에 그림으로 잘 나와있다. 늘 써오던 dx의 왼손좌표계를 기준으로 오른손 좌표계는 y와 z만 바꿔주면 된다. 그리고 좌표가 바뀌면서 face의 인덱스 순서도 ..
노드를 얻어오는 방법과 필요없는 노드를 분별하는 방법을 알았으니 이제 노드로부터 원하는 정보를 뽑아낼 필요가 있다. 우선 mesh 정보를 뽑아내기 위한 과정을 보자. 맥스에서 Mesh정보를 담고 있는 Mesh 클래스가 준비되어 있는데 Node로 부터 이 Mesh 클래스 정보를 얻을 수 있다. 전반적인 과정은 INode -> ObjectState -> TriObject -> Mesh 이다. INode로부터 ObjectState 얻기. ObjectState os = node->EvalWorldState(currentTime_); ObjectState의 Object가 TriObject로 변환가능한지 체크. if(!os.obj->CanConvertToType(triObjectClassID)) return (TR..
이전에 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를 사용한다. 그냥 나의 이니셜..
character 관련 블로그 - http://blog.naver.com/redkain?Redirect=Log&logNo=60017592122 - http://blog.naver.com/lifeisforu?Redirect=Log&logNo=80022418588 - http://blog.naver.com/lifeisforu?Redirect=Log&logNo=80022418778 max script 영문 - http://www.scriptspot.com/ - 상당히 많은 수의 맥스스크립트 보유. - http://www.footools.com/ - 스크립트 및 유틸, 플러그인 사이트. - http://www.codercorner.com/Flexporter.htm - 게임용 범용 exporter SDK.(구체적..
시작은 exporter 만들때와 같다. 3dsMax위자드를 통해서 생성할때 "File Importer"로 타입을 지정해서 만들면 된다. 첫 시작은 exporter가 DoExport였듯이 importer에서는 DoImport이다. 1. Import를 한다는건 이미 자체포맷으로 또는 기본 포맷으로 만들어진 데이터가 있다는 말. 우선 파일을 로드해서 해당 파일에 있는 데이터를 읽어 둔다. GetDataFromFile(파일이름) 요 내부에선 열심히 파일을 읽어서 데이터 구조를 만들고 할것이다. 2. 그리고 현재 화면을 깨끗이 정리할 필요가 있다. 흡사 dx의 Clear()와 같은 함수가 필요하다. 이것이 바로 max에서 제공하는 ImpInterface::NewScene() 함수이다. 이 함수는 scene상의 모..
중국 사이트인가?... 암튼 갠춘.. https://xray.svn.codeplex.com/svn/branches/refactoring/sources/plugins/xray_fsl/ObjectPlugin/Code/ObjectImport.cpp http://zho.pe.kr/doc/ConvertMaxCamToD3DCam.htm 1. TriObject 생성. INode* parentNode = NULL; TriObject* tri = CreateNewTriObject(); 2. Node 생성 ImpNode* node = impip->CreateNode(); 3. Node의 접근권한을 Tri에 설정 node->Reference(tri); 4. Node를 화면에 추가. impip->AddNodeToScene(n..
Control access, Key Export Controller 요소(item)의 애니메이션을 지정하거나 제어하는 플러그인 유형. 여러가지 컨트롤러 유형이 존재. ex) 변환 컨트롤로(PRS Controller)는 씬 내의 노드 위치를 결정. Matrix3를 제어하는 컨트롤러. 표현식 컨트롤러는 요소의 매개변수가 수학적 표현식에 의해 제어될 수 있도록 허용. Exporting Animation Keys - 모든 애니메이션들은 Controll class의 instance들에 의해 포함되고 계산된다. - 컨트롤들은 그들의 SuperClassID 타입에 기반하여 적용된다. ( CTRL_MATRIX3_CLASSID, CTRL_ROTATION_CLASS_ID) - 컨트롤 클래스들은 종종 다른 클래스들을 참조한..