Open kianzarrin opened 3 years ago
btw does your library capable of producing binary fbx directly from unity without the need to use UnityFBXExporter.FBXExporter.MeshToString
?
I also had to add a special case here to read byte https://github.com/hamish-milne/FbxWriter/blob/53d9479af87639307b7443bae70ca0c8cc58e48d/Fbx/FbxBinary.cs#L103
that solved all the exceptions.
but I still cannot open the generated file even though I can open the original ascii fbx files.zip
can you please tell me what I should do? .
I wrote this code to understand where is the problem:
var doc = FbxIO.ReadAscii(dir + file1);
string fileA = "testA_" + file1;
FbxIO.WriteAscii(doc, dir + fileA);
doc = FbxIO.ReadAscii(dir + fileA);
string fileB = "testB_" + file1;
FbxIO.WriteBinary(doc, dir + fileB); // i can't open this
doc = FbxIO.ReadBinary(dir + fileB);
FbxIO.WriteAscii(doc, dir + "testC_" + file1); // i can open this
the code does not throw an exception (after the fixes I made to FbxWriter). I tried view the files using FBX viewer https://overbits.herokuapp.com/fbxgltf/ using the FBX viewer above I can open the ascii outputs but not the binary outputs. if I read the binary output and write it again as ascii then I can view it again.
blender gave me the following error when I opened the binary fbx file
I converted the ascii fbx to binary fbx with this tool and it worked: https://github.com/BobbyAnguelov/FbxFormatConverter unfortunately, it's in c. I need in c#
I ran this test to gain more debugging info:
string file1 = "RoadMediumNode.binary.fbx"; // can open this
var doc = FbxIO.ReadBinary(dir + file1);
string fileA = "testA_" + file1;
FbxIO.WriteBinary(doc, dir + fileA); // can open this
doc = FbxIO.ReadBinary(dir + file1);
string fileB = "testB_" + file1;
FbxIO.WriteAscii(doc, dir + fileB); // can open this
doc = FbxIO.ReadAscii(dir + fileB);
FbxIO.WriteBinary(doc, dir + "testC_" + file1); // can' open this
read working binary fbx -> write as binary fbx -> works read working ascii fbx created FbxFormatConverter -> write as binary fbx -> does not work.
conclusion: I am suspecting that the bug is an incompatibility between ascii reader and binary writer. Note that I ran these tests after applying the fixes I suggested in the comments bellow
Intro:
I am trying to dump unity mesh as fbx binary. I successfully managed to dump the mesh as fbxascii using code from https://github.com/KellanHiggins/UnityFBXExporter then I executed this code:
problem:
I got this error
the writer does not handle
byte
: https://github.com/Ploaj/IONET/blob/ca42ce6c9cadaf73312cc3cbe73f94e7feed509c/IONET/Fbx/IO/FbxBinaryWriter.cs#L54but the reader does read as
byte
: https://github.com/Ploaj/IONET/blob/ca42ce6c9cadaf73312cc3cbe73f94e7feed509c/IONET/Fbx/IO/FbxAsciiReader.cs#L229So this is problem number 1. writer does not handle byte produced by reader.
Problem 2:
I looked at the code that generates the ascii code and I found this (which matches the error message):
if the written type is int then why the time that is read is byte? i guess because the data was small?
Solution
So I think the solution would be that the reader should treat byte as int?
or should I write is as byte?
Please fix this issue.