Corrected tangent and normal import from FBX files. FBX Import now functional.

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%4022
This commit is contained in:
kearwood
2012-03-28 23:34:39 +00:00
parent d457991ed0
commit 35d138c31c
2 changed files with 11 additions and 28 deletions

View File

@@ -385,34 +385,15 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
}
}
// ----====---- Read Normals ----====----
for(int l = 0; l < normal_count; ++l)
{
KFbxVector4 new_normal;
KFbxGeometryElementNormal* leNormal = pMesh->GetElementNormal(l);
if(leNormal->GetMappingMode() == KFbxGeometryElement::eBY_POLYGON_VERTEX) {
switch (leNormal->GetReferenceMode())
{
case KFbxGeometryElement::eDIRECT:
new_normal = leNormal->GetDirectArray().GetAt(source_vertex_id);
break;
case KFbxGeometryElement::eINDEX_TO_DIRECT:
{
int id = leNormal->GetIndexArray().GetAt(source_vertex_id);
new_normal = leNormal->GetDirectArray().GetAt(id);
}
break;
default:
break; // other reference modes not shown here!
}
}
if(l == 0) {
normals.push_back(KRVector3(new_normal[0], new_normal[1], new_normal[2]));
}
KFbxVector4 new_normal;
if(pMesh->GetPolygonVertexNormal(iPolygon, iVertex, new_normal)) {
normals.push_back(KRVector3(new_normal[0], new_normal[1], new_normal[2]));
}
// ----====---- Read Tangents ----====----
for(int l = 0; l < tangent_count; ++l)
{
@@ -422,11 +403,11 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
if(leTangent->GetMappingMode() == KFbxGeometryElement::eBY_POLYGON_VERTEX) {
switch (leTangent->GetReferenceMode()) {
case KFbxGeometryElement::eDIRECT:
new_tangent = leTangent->GetDirectArray().GetAt(source_vertex_id);
new_tangent = leTangent->GetDirectArray().GetAt(lControlPointIndex);
break;
case KFbxGeometryElement::eINDEX_TO_DIRECT:
{
int id = leTangent->GetIndexArray().GetAt(source_vertex_id);
int id = leTangent->GetIndexArray().GetAt(lControlPointIndex);
new_tangent = leTangent->GetDirectArray().GetAt(id);
}
break;
@@ -439,6 +420,7 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
}
}

View File

@@ -126,7 +126,8 @@
KRModelManager *pModelManager = [renderEngine getModelManager];
//m_scene.addInstance(pModelManager->getModel("fachwerkhaus12"), KRMat4());
//m_scene.addInstance(pModelManager->getModel("ballroom"), KRMat4());
m_scene.addInstance(pModelManager->getModel("HoganCombined"), KRMat4());
//m_scene.addInstance(pModelManager->getModel("HoganCombined"), KRMat4());
m_scene.addInstance(pModelManager->getModel("degagetest"), KRMat4());
[renderEngine setNearZ: 25.0];
[renderEngine setFarZ: 5000.0];