Ver Fonte

Handle materials with texture id < 0

aoowweenn há 7 anos atrás
pai
commit
1ea7230785
1 ficheiros alterados com 5 adições e 2 exclusões
  1. 5 2
      code/MMDImporter.cpp

+ 5 - 2
code/MMDImporter.cpp

@@ -354,8 +354,11 @@ aiMaterial *MMDImporter::CreateMaterial(const pmx::PmxMaterial *pMat,
   float shininess = pMat->specularlity;
   float shininess = pMat->specularlity;
   mat->AddProperty(&shininess, 1, AI_MATKEY_SHININESS_STRENGTH);
   mat->AddProperty(&shininess, 1, AI_MATKEY_SHININESS_STRENGTH);
 
 
-  aiString texture_path(pModel->textures[pMat->diffuse_texture_index]);
-  mat->AddProperty(&texture_path, AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0));
+  if(pMat->diffuse_texture_index >= 0) {
+      aiString texture_path(pModel->textures[pMat->diffuse_texture_index]);
+      mat->AddProperty(&texture_path, AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0));
+  }
+
   int mapping_uvwsrc = 0;
   int mapping_uvwsrc = 0;
   mat->AddProperty(&mapping_uvwsrc, 1,
   mat->AddProperty(&mapping_uvwsrc, 1,
                    AI_MATKEY_UVWSRC(aiTextureType_DIFFUSE, 0));
                    AI_MATKEY_UVWSRC(aiTextureType_DIFFUSE, 0));