More bugfixes from Jonathan:

- fixed material loading in OBJ importer
- Bugfix: loads obj files without texture coords correctly now

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@144 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
ulfjorensen 2008-09-16 13:53:10 +00:00
parent f784382a9f
commit b776f04251
2 changed files with 23 additions and 3 deletions

View File

@ -106,14 +106,17 @@ void ObjFileMtlImporter::load()
++m_DataIt;
if (*m_DataIt == 'a') // Ambient color
{
++m_DataIt;
getColorRGBA( &m_pModel->m_pCurrentMaterial->ambient );
}
else if (*m_DataIt == 'd') // Diffuse color
{
++m_DataIt;
getColorRGBA( &m_pModel->m_pCurrentMaterial->diffuse );
}
else if (*m_DataIt == 's')
{
++m_DataIt;
getColorRGBA( &m_pModel->m_pCurrentMaterial->specular );
}
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
@ -122,6 +125,7 @@ void ObjFileMtlImporter::load()
case 'd': // Alpha value
{
++m_DataIt;
getFloatValue( m_pModel->m_pCurrentMaterial->alpha );
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
@ -129,13 +133,25 @@ void ObjFileMtlImporter::load()
case 'N': // Shineness
{
getIlluminationModel( m_pModel->m_pCurrentMaterial->illumination_model );
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
++m_DataIt;
switch(*m_DataIt)
{
case 's':
++m_DataIt;
getFloatValue(m_pModel->m_pCurrentMaterial->shineness);
break;
case 'i': //Index Of refraction
//TODO
break;
}
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
break;
}
case 'm': // Texture
{
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
getTexture();
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
@ -150,6 +166,8 @@ void ObjFileMtlImporter::load()
case 'i': // Illumination model
{
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
getIlluminationModel( m_pModel->m_pCurrentMaterial->illumination_model );
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
break;

View File

@ -240,8 +240,10 @@ void ObjFileParser::getFace()
if (iPos == 0)
{
//if there are no texturecoordinates in the obj file but normals
if (!vt && vn)
if (!vt && vn) {
iPos = 1;
iStep++;
}
}
iPos++;
}