270 likes | 627 Views
FBX sdk 와 irrlicht 의 만남. ㈜ 구름 펙토리 이석준. 목차 / 챕터 1 프롤로그. 바벨탑 - 소통에 대하여 …. 목차 / 챕터 2/ 일리히트의 이야기. 항상성 관련기능 - 항상성 .irr , IAttribute. 자체 포멧이 없음 ㅠ . ㅠ - 2% 부족함. 목차 / 챕터 3/fbx 이야기. 이거다 어디갔어 ? 30 대 중반이상 공감가능. 추억의 pcx 그땐 그랬지 … - 요즘 3 디 게임프로그램을 배우고 나서 마무리가 부족해 ? 엔진의 마무리는 항상 파일포멧이 ….
E N D
FBX sdk 와 irrlicht 의 만남 ㈜ 구름 펙토리 이석준
추억의 pcx그땐 그랬지…-요즘 3디 게임프로그램을 배우고 나서 마무리가 부족해? 엔진의 마무리는 항상 파일포멧이…
그럼…- fbx 를 써보자얻기http://www.autodesk.com/fbxeasy to usec++ basedwindow,mac, linux
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);
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 element element fbx controlpoint ….. element
일리히트 정점 importer -irr::video::S3DVertex vert; vert.Pos = irr::core::vector3df( lControlPoint[0], lControlPoint[1], lControlPoint[2]);…pbuffer->Vertices.push_back(vert);
인덱스 버퍼importerfor(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);}
exportercreate control pointlMesh->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-로더 소스를 배포하지 않음일리히트엔진 포럼에 몇 개 미완성 존재함