FIX: Nasty debug-only bug in FindInstancesProcess.

FIX: Crash at ReplaceCurrentTexture().
FIX: Crash at 'compute smooth normals' in AssimpView.
FIX: Obj shininess is now scaled by 4.0.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@421 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
aramis_acg 2009-05-16 15:33:01 +00:00
parent 13804abf2e
commit de14e06805
5 changed files with 13 additions and 3 deletions

View File

@ -134,7 +134,7 @@ void FindInstancesProcess::Execute( aiScene* pScene)
aiMesh* inst = pScene->mMeshes[i];
hashes[i] = GetMeshHash(inst);
for (int a = i-1; a > 0; --a) {
for (int a = i-1; a >= 0; --a) {
if (hashes[i] == hashes[a])
{
aiMesh* orig = pScene->mMeshes[a];
@ -253,6 +253,7 @@ void FindInstancesProcess::Execute( aiScene* pScene)
// Delete the instanced mesh, we don't need it anymore
delete inst;
pScene->mMeshes[i] = NULL;
break;
}
}

View File

@ -443,6 +443,9 @@ void ObjFileImporter::createMaterial(const ObjFile::Model* pModel, const ObjFile
}
mat->AddProperty<int>( &sm, 1, AI_MATKEY_SHADING_MODEL);
// multiplying the specular exponent with 2 seems to yield better results
pCurrentMaterial->shineness *= 4.f;
// Adding material colors
mat->AddProperty( &pCurrentMaterial->ambient, 1, AI_MATKEY_COLOR_AMBIENT );
mat->AddProperty( &pCurrentMaterial->diffuse, 1, AI_MATKEY_COLOR_DIFFUSE );

View File

@ -280,6 +280,7 @@ int CDisplay::ReplaceCurrentTexture(const char* szPath)
// special handling here
if (pcMesh->piNormalTexture && pcMesh->piNormalTexture != piTexture) {
piTexture->AddRef();
pcMesh->piNormalTexture->Release();
pcMesh->piNormalTexture = piTexture;
CMaterialManager::Instance().HMtoNMIfNecessary(pcMesh->piNormalTexture,&pcMesh->piNormalTexture,true);
@ -302,9 +303,9 @@ int CDisplay::ReplaceCurrentTexture(const char* szPath)
*tex = piTexture;
m_pcCurrentTexture->piTexture = tex;
if (!pcMesh->bSharedFX){
//if (!pcMesh->bSharedFX){
pcMesh->piEffect->SetTexture(tex_string,piTexture);
}
//}
}
}
// now update the material itself

View File

@ -456,6 +456,7 @@ void CMaterialManager::DeleteMaterial(AssetHelper::MeshHelper* pcIn)
pcIn->piLightmapTexture->Release();
pcIn->piLightmapTexture = NULL;
}
pcIn->piEffect = NULL;
}
//-------------------------------------------------------------------------------
void CMaterialManager::HMtoNMIfNecessary(

View File

@ -103,6 +103,10 @@ void AssetHelper::FlipNormalsInt()
for (unsigned int i = 0; i < this->pcScene->mNumMeshes;++i)
{
aiMesh* pcMesh = this->pcScene->mMeshes[i];
if (!pcMesh->mNormals)
continue;
for (unsigned int a = 0; a < pcMesh->mNumVertices;++a){
pcMesh->mNormals[a] *= -1.0f;
}