FBX importer, included in blender, ready for testing


(ideasman42) #1

Recently I worked on a new FBX importer for a client who prefers to remain anonymous,
This importer is bundled with any recent build, available in the import menu and will be included with blender 2.69.
Its functional without any SDK or 3rd party tools.

At this point I it would be helpful if I could start testing the importer with files from various applications to check its able to load the files correctly.

  • Note that the client only needed certain features so the importer is not yet supporting all features.

But it can load meshes with UV’s images, parenting, lamps, cameras - supporting both cycles and blender internal materials.

More details on exactly whats supported see…

http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Autodesk_FBX#Compatibility_.28Import.29

If you’d like to help out, you could try import BINARY-FBX files into Blender, if they don’t load 100% perfectly…

Please make FBX files available, including…

  • Application they were created with.
  • What the model should look like (screenshot, or OBJ export).

We can’t support all the features that the exporter supports for 2.69 but I’ll at least go over all FBX samples I can get my hands on and see if they can be supported.

This way it means Blender-2.69-release will include and importer that has had some testing and is less likely to be tripped up because of simple bugs/incompatibilities (and I wont get a flood of bug reports in my inbox :D).

PS - it can’t import files exported from blender, this is stupid, the exporter will be eventually updated to write FBX7.1+ files too.


(doublebishop) #2

First up, Thanks HEAPS for working on this importer… will help integration into other applications significantly

I have tried importing FBX files from revit (both straight from revit, and converted using FBX converter)… seems like they are not working correctly… I will try and find a test file i can upload sometime over the day or so. something like a box or window or something.

I also tried importing one from navisworks (this one is HUGE… like 4gb, still trying to find an application that can open it without maxing out the ram)… and that failed aswell.

Thanks again!

Carlo


(doublebishop) #3

Couldnt get any production files, but i managed to export one out of revit just then of a test scene… imports into rhino fine… i have attached screenshots of it inside rhino & revit.

I also tried running it through the fbx converter, but that didnt seem to do anythign either.

Hope this helps!

Carlo

testFBXExport.zip (135 KB)


(Daccy) #4

Could you please provide a link to a recent build? I could not find one on Graphicall.


(LiquidApe) #5

Try the official buildbot - http://builder.blender.org/


(ideasman42) #6

@doublebishop, thanks for the test file, I’ve managed to get it loading and it matches the attached images, committed changes to svn.

  • had a previously unknown field-type, had to investigate to add support into the binary parser.

  • file is FBX-version 7.0, had to run: fbxconverter test.fbx test_new.fbx /f201300

  • some other minor issue, committed to svn r4681 (bf-extensions)


(SaintHaven) #7

Highly helpful, thanks to you and your client for improving on this.


(Daccy) #8

The following file generated this error:


Screenshot of the object:


The FBX-file, which was exported from AutoCAD 2014, can be downloaded here:

@ LiquidApe: Thank you for the link!


(ideasman42) #9

@Daccy. Thanks for the file, was helpful (it exposed 2 bugs, fixed r4683), it loads for me now,
though I did have to update it to a newer FBX version (was 7.0 version of the spec).

By the looks of it your running the script with and old Blender, thats not going to work.


(ng-material) #10

TODO: Smooth/Flat Faces, Soft/Sharp Edges

was this about the smoothing groups?, I ask because I wasn’t sure if you couldn’t figure that out and gave up.

congrats on what you have done so far :slight_smile:


(davyzhang) #11

thanks so much for the plugin, it’s been missing for long time!


(Daccy) #12

You’re right! Obviously the package I downloaded (blender-2.68-r59254-win64-vc11.zip) contained an older version, though it was labeled as the latest. I tried importing the model again using the latest build available. Aside from the version number, no other errors were generated. So I suppose it works as expected.

Also, I read that the imported doesn’t currently support armatures. When do you think you’ll be able to implement that?

In any case, well done! =)


(san) #13

Tested quickly with files saved from Maya 2011 and Nuke 7.0 - very simple test, primarily to check the camera. Love that sensor size works!

Camera and lamp rotation is wrong though, turned around 180 deg. I fixed it by changing ‘import_fbx.py’ from this:


    # rotation
    if obj.type == 'CAMERA':
        rot_alt_mat = Matrix.Rotation(pi / -2.0, 4, 'Y')
    elif obj.type == 'LAMP':
        rot_alt_mat = Matrix.Rotation(pi / -2.0, 4, 'X')
    else:
        rot_alt_mat = Matrix()

to this:


    # rotation
    if obj.type == 'CAMERA':
        rot_alt_mat = Matrix.Rotation(pi / 2.0, 4, 'Y')
    elif obj.type == 'LAMP':
        rot_alt_mat = Matrix.Rotation(pi / 2.0, 4, 'X')
    else:
        rot_alt_mat = Matrix()

Test files:
fbx_tst.zip (36.7 KB)


(JWise) #14

Created in Unreal Development Kit (UDK) - it’s a simple wall element 1.92m x 3.84m x 16cm

SinglePanelWall_UDK.zip (11.3 KB)

Forgot to say, I cannot import this into Blender.


(san) #15

I can import the object, but it is rotated 90 deg around X and the scale is way off. Here are the values I see (in meters):

X: 96m
Y: 8m
Z: 192m

Edit: Scale is 1, the values above are dimensions…


(JWise) #16

san: this is the error I get when I try



(san) #17

Hmm… are you using a new enough build to test this? I compile my own (Linux 64bit), and get no errors when loading your file, other than the rotation and it being 50x larger.


(JWise) #18

Maybe not, I’m on last night’s buildbot of 2.68a r59254. I’ll try again in 5 hours when the new one is released or something newer than r59260 shows up on Graphicall.


(doublebishop) #19

The latest update works now with the two revit files i have tested… i will do some more tests later

Thanks for the fast development and your work on this!!

EDIT: It seems to have fixed Navisworks exports aswell! Cheers!

EDIT2: Importing in large fbx files seems to bring blender to a halt (currently sitting on 5gb ram used, one core active)… is there a way of getting a progress bar / window for this? or having the console print out a current status (every 10 seconds writing out importing x object out of y objects or something like this? just to know blender is actually doing something, not just hating life) any way of getting it multithreaded aswell? i know i am asking for a lot here :stuck_out_tongue:


(ideasman42) #20

@JWise, You’re using an old experimental FBX importer (notice its in addons_contrib),
If you use a recent blender build, this importer has been removed, so either you have an old build or whoever made the build is adding back old scripts. SinglePanelWall_UDK.zip loads fine here.

@ng-material, all smoothing info is currently ignored, support will likely be added eventually.

@san, I tested camera and lamp orientation quite well to make sure they load correctly with some of my own test files, perhaps there are extra settings that need to be taken into account, but think flipping the rotation probably isn’t the solution. But thanks for the test file, it should help. (Cameras have Up and LookAt fields, Ill check if these need to be used)

@san, At this point I wouldnt worry about scale and orientation,
there are options for orientation and scale on import,
currently the global scale in the FBX file is ignored, but we could support fairly simply.

@doublebishop, for now Id suggest not to attempt to load files that run into memory limits, the importer has hardly been tested yet (with files other then client who commissioned it) so its hard to know if the error is with file compatibility or running out of memory.
but, data is stored in arrays (not lists/tuples), so it should be fairly memory efficient compared to most other python importers.