Community
FBX Forum
Welcome to Autodesk’s FBX Forums. Share your knowledge, ask questions, and explore popular FBX topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[FBX-SDK 2020.1.1] Unable to import texture information from FBX file of version below 7.0

8 REPLIES 8
Reply
Message 1 of 9
wppdev
1366 Views, 8 Replies

[FBX-SDK 2020.1.1] Unable to import texture information from FBX file of version below 7.0

Hi,

I am unable to import textures applied on a 3D model FBX file, if it has a version below FBX version 7.0. Other geometry is imported properly but the textures go missing. If file with FBX version 7.0 and above used, textures do get imported.

The Supported Formats list for import mentions that version 6.0 and 6.1 are supported.

This looks to be a regression as an earlier version of FBX SDK like 2019.2 is in fact able to convert textures from such files.

Is there any other way of getting textures? Or if this is an issue with the current version, can we get a timeframe when will it be fixed?

 

Reporting for -

FBX SDK version : 2020.1.1

 

Please find attached -

Text dump of output provided by ImportScene sample shipped with FBX SDK version 2020.1.1 and 2019.2. The FBX file (FBX version 6.1) is also attached. It can be seen that the texture information is missing.

Labels (2)
8 REPLIES 8
Message 2 of 9
Anonymous
in reply to: wppdev

We observe the same issue. To be a little more specific we can read textures from FBX files with version 6.1 but not with version 6.0.

I compared the binary FBX files but couldn't make out any obvious reasons from the node hiearachy. But as binary FBX files are not easily edited I didn't get a chance at trying what might be the reason.

 

If it's interesting for anyone I could also upload the node hierarchies (as .txt) of a 6.0 and a 6.1 file for comparison.

Message 3 of 9
Anonymous
in reply to: wppdev

Oh man... I just found a workaround.

 

In fbxiosettingspath.h there is the flag IMP_RELAXED_FBX_CHECK. If you set this to true in your FbxIOSettings it will still read the texture for me.

 

I don't think this is the intended use as the flag is listed under "interal" but it works nonetheless.

Message 4 of 9
regalir
in reply to: Anonymous

We have already fixed this issue and the next release of the FBX SDK will work as expected.

 

The regression was introduced during the last pass to strengthen the security of the FBX SDK. You can use the IMP_RELAXED_FBX_CHECK to instruct the SDK to skip all theses tests and disable the detection of corrupted or malformed files. If you know for sure that the FBX files you are reading are all "clean", it is 100% safe to use it! 🙂

Message 5 of 9
Anonymous
in reply to: regalir

Hi Regalir

 

Thanks for aknowledging the regression and the fix.

 

We cannot guarantee that the FBX files are 100% valid. Our clients can use any FBX files they have lying around.

Is there any workaround to get the textures and the correctness guarantees?

 

Best,

Stefan

Message 6 of 9
regalir
in reply to: Anonymous

Unfortunately, until we release the new version of the FBX SDK, there is no alternative solution. I don't have an official date for this release but, at the moment, it looks like it will probably happen Dec. 2020.

 

As I said earlier, using the flag is still safe for the majority of the files. Practically, the flag switches the SDK behavior to what it was on previous versions (only concerning the validation checks!).

Message 7 of 9
Anonymous
in reply to: regalir

Ok. Thanks! We'll check which way we will go then.

Message 8 of 9
Anonymous
in reply to: regalir

Hey Regalir

 

I have another question related to this problem.

 

Is there any way to collect information on what was discarded when reading/checking a file?

E.g. a logging mechanism or such...

 

We're trying to tell our users why some aspects of a file are not imported and such functionality would help with that.

 

Thanks a lot,

Stefan

Message 9 of 9
regalir
in reply to: Anonymous

Yes there is! 😉

 

If you look at the common.cxx file (in the samples code) you will notice a block of code that dumps all the errors that occurred during the import of the file using the FbxStatus class:

FbxArray<FbxString*> history;
lImporter->GetStatus().GetErrorStringHistory(history);
...

 

If you disable the checks (as we discussed earlier) using the RELAXED check flag, you can then "scan" the scene graph after it gets imported to validate the data. You can do this using the FbxSceneCheckUtility class:

 

lResult = mImporter->Import(mScene);
if (lResult)
{
    // Check the scene integrity!
    FbxStatus status;
    FbxArray< FbxString*> details;
    FbxSceneCheckUtility sceneCheck(mScene), &status, &details);
    bool lNotify = (!sceneCheck.Validate(FbxSceneCheckUtility::eCkeckData) && details.GetCount() > 0) || (mImporter->GetStatus().GetCode() != FbxStatus::eSuccess);
    if (lNotify)
    {
        ...

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report