FIX: ColladaLoader now skips empty init_from-Tags produced by C4D's heroic Collada exporter.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@496 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
aramis_acg 2009-10-22 08:08:04 +00:00
parent c6899cd999
commit 1b8c8561fd
3 changed files with 15 additions and 8 deletions

View File

@ -1270,15 +1270,16 @@ const aiString& ColladaLoader::FindFilenameForEffectTexture( const ColladaParser
// if this is an embedded texture image setup an aiTexture for it
if (imIt->second.mFileName.empty())
{
if (imIt->second.mImageData.empty())
if (imIt->second.mImageData.empty()) {
throw new ImportErrorException("Collada: Invalid texture, no data or file reference given");
}
aiTexture* tex = new aiTexture();
// setup format hint
if (imIt->second.mEmbeddedFormat.length() > 3)
if (imIt->second.mEmbeddedFormat.length() > 3) {
DefaultLogger::get()->warn("Collada: texture format hint is too long, truncating to 3 characters");
}
strncpy(tex->achFormatHint,imIt->second.mEmbeddedFormat.c_str(),3);
// and copy texture data

View File

@ -704,10 +704,16 @@ void ColladaParser::ReadImage( Collada::Image& pImage)
{
if (mFormat == FV_1_4_n)
{
// element content is filename - hopefully
const char* sz = TestTextContent();
if (sz)pImage.mFileName = sz;
TestClosing( "init_from");
// FIX: C4D exporter writes empty <init_from/> tags
if (!mReader->isEmptyElement()) {
// element content is filename - hopefully
const char* sz = TestTextContent();
if (sz)pImage.mFileName = sz;
TestClosing( "init_from");
}
if (!pImage.mFileName.length()) {
pImage.mFileName = "unknown_texture";
}
}
else if (mFormat == FV_1_5_n)
{

View File

@ -61,7 +61,7 @@ MD5Parser::MD5Parser(char* _buffer, unsigned int /*_fileSize*/ )
ai_assert(NULL != _buffer && 0 != _fileSize);
buffer = _buffer;
fileSize = fileSize;
fileSize = _fileSize;
lineNumber = 0;
DefaultLogger::get()->debug("MD5Parser begin");