max import 참고 자료

반응형
중국 사이트인가?... 암튼 갠춘..
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(node);
   INode* realINode = node->GetINode()

5. mesh 정보 설정.
   tri->mesh.setNumVerts( iNumVerts );                  
   tri->mesh.setNumTVerts( iNumVerts );                
   tri->mesh.setNumFaces( iNumTriangles );
   tri->mesh.setNumTVFaces( iNumTriangles );

6. 정점 변환 - data(d3d)의 정점을 다시 max에 셋팅(y,z축 변환 필요), 위치 설정
    iPosIndex = pkVertexGroup->GetPosIndex()[iVert];
    vPos = pkVertexGroup->GetPosition()[iPosIndex];
    pt.x = vPos.x;// pkVertexGroup->GetPosition()[iPosIndex].x;
    pt.y = vPos.z;
    pt.z = vPos.y;

7. 정점 변환 - data(d3d)의 정점의 normal, tex 좌표 설정.
    ptNormal.x = vNor.x;
    ptNormal.y = vNor.z;
    ptNormal.z = vNor.y;
    ptTexCoord.x = pkVertexGroup->GetTexCoord()[iVert].x;
    ptTexCoord.y = 1.0f - pkVertexGroup->GetTexCoord()[iVert].y;
  
    tri->mesh.setVert( iVert, pt );
    tri->mesh.setNormal( iVert, ptNormal );
    tri->mesh.setTVert( iVert, ptTexCoord );

8. 인덱스셋팅. 인덱스는 y,z를 변환해준다(d3d와 max의 좌표계 차이)
    iIndex[0] = data->GetIndex()[iIndexCount++];
    iIndex[2] = data->GetIndex()[iIndexCount++];
    iIndex[1] = data->GetIndex()[iIndexCount++];
    tri->mesh.faces[iTri].setVerts(iIndex[0], iIndex[1], iIndex[2]);
    tri->mesh.faces[iTri].setSmGroup( 1 );//pdwSmoothingGroup[iTri] );
    tri->mesh.tvFace[iTri].t[0] = iIndex[0];
    tri->mesh.tvFace[iTri].t[1] = iIndex[1];
    tri->mesh.tvFace[iTri].t[2] = iIndex[2];

얼추 이정도 인 듯....
TAGS.

Comments