FBX sdk 와 irrlicht 의 만남

Preview:

DESCRIPTION

FBX sdk 와 irrlicht 의 만남. ㈜ 구름 펙토리 이석준. 목차 / 챕터 1 프롤로그. 바벨탑 - 소통에 대하여 …. 목차 / 챕터 2/ 일리히트의 이야기. 항상성 관련기능 - 항상성 .irr , IAttribute. 자체 포멧이 없음 ㅠ . ㅠ - 2% 부족함. 목차 / 챕터 3/fbx 이야기. 이거다 어디갔어 ? 30 대 중반이상 공감가능. 추억의 pcx 그땐 그랬지 … - 요즘 3 디 게임프로그램을 배우고 나서 마무리가 부족해 ? 엔진의 마무리는 항상 파일포멧이 …. - PowerPoint PPT Presentation

Citation preview

FBX sdk 와 irrlicht 의 만남

㈜ 구름 펙토리이석준

목차 /챕터 1 프롤로그

바벨탑

- 소통에 대하여…

목차 /챕터 2/ 일리히트의 이야기

항상성 관련기능

- 항상성 .irr , IAttribute

자체 포멧이 없음ㅠ . ㅠ- 2% 부족함

목차 /챕터 3/fbx 이야기

이거다 어디갔어 ?30 대 중반이상 공감가능

추억의 pcx그땐 그랬지…- 요즘 3 디 게임프로그램을 배우고 나서 마무리가 부족해 ? 엔진의 마무리는 항상 파일포멧이…

Ase, X, md????

- 아무래도 이건 좀 너무 무식하다 .

그럼…

- fbx 를 써보자

얻기http://www.autodesk.com/fbx

easy to usec++ basedwindow,mac, linux

importer참고자료- ViewScene Sample

KFbxScene importer - KFbxNode* lNode = pScene->GetRootNode();

KFbxNode importer - transfrom 얻기

EvaluateLocalTranslationEvaluateLocalRotationEvaluateLocalScaling

일리히트엔진 씬노드로… importer

const KFbxVector4 fbx_trn = pchdNode->EvaluateLocalTranslation();irr::core::vector3df trn(fbx_trn[0], fbx_trn[1], fbx_trn[2]);…< 생략 >

pNode->setposition(trn); pNode->setrotation(rot);pNode->setscale(scl);

KFbxNodeAttribute importer - Mesh, Skeleton, Camera, Light..

KFbxMesh importer

lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType());

if( KFbxNodeAttribute::eMESH == lAttributeType ){

KFbxMesh* pMesh = (KFbxMesh*) pNode->GetNodeAttribute ();

}

일리히트 메쉬 만들기 importer - meshbuffer

irr::scene::SMeshBuffer* pbuffer; pbuffer = new irr::scene::SMeshBuffer();

Vertex importer - control point

int lControlPointsCount = pMesh->GetControlPointsCount(); KFbxVector4* lControlPoints = pMesh->GetControlPoints();

GetElementNormal GetElementVertexColor GetElementUV

fbxcontrolpoint

element

element

…..

element

일리히트 정점 importer - irr::video::S3DVertex vert;

vert.Pos = irr::core::vector3df( lControlPoint[0], lControlPoint[1], lControlPoint[2]);

pbuffer->Vertices.push_back(vert);

인덱스 버퍼importer

for(i=0;i<pMesh->GetPolygonCount();i++)for(j=0;j<pMesh->GetPolygonSize(i);j++) {irr::u32 index = pMesh->GetPolygonVertex(i, j);pbuffer->Indices.push_back(index);}

exporter참고자료- ImportExport Sample

exportercreate control point

lMesh->InitControlPoints( 원하는 갯수 );KFbxVector4* lControlPoints = lMesh->GetControlPoints();

lControlPoints[index++] = KFbxVector4(x,y,z);

exporterUV

KFbxLayer* lLayer = lMesh->GetLayer(0);

KFbxLayerElementUV* lUVDiffuseLayer = KFbxLayerElementUV::Create(lMesh, "DiffuseUV");lLayer->SetUVs(lUVDiffuseLayer, KFbxLayerElement::eDIFFUSE_TEXTURES);

lUVDiffuseLayer->GetDirectArray().Add(UV_data);lUVDiffuseLayer->GetIndexArray().SetAt(i, i);

exporteranother UV?

KFbxLayer* lLayer = lMesh->GetLayer(1);

KFbxLayerElementUV* lUVDiffuseLayer = KFbxLayerElementUV::Create(lMesh, "DiffuseUV");lLayer->SetUVs(lUVDiffuseLayer, KFbxLayerElement::eDIFFUSE_TEXTURES);

lUVDiffuseLayer->GetDirectArray().Add(UV_data);lUVDiffuseLayer->GetIndexArray().SetAt(i, i);

Mobile device

- 로더 소스를 배포하지 않음 일리히트엔진 포럼에 몇 개 미완성 존재함

감사합니다 .Q&A

Recommended