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];
얼추 이정도 인 듯....
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];
얼추 이정도 인 듯....
'Study > Character' 카테고리의 다른 글
유용한 링크들 (0) | 2012.01.01 |
---|---|
max importer만들기 exporter 만큼이나 쉬운 importer (0) | 2011.05.27 |
max export 7. 어떻게 애니메이션 시킬까? (0) | 2011.05.03 |
max export 6. 드디어 Animation !!!! (0) | 2011.04.23 |
max export 5. transform 정보는? (0) | 2011.04.23 |
TAGS.