Advise a newbie on applications that can be used to prepare models

Trying to get an overview of the system … what applications produce model/artwork 3d files that can be imported/used by 3js. I apologise for such a basic question …

It’s a fair question :grin:

The answer is… a LOT of different applications. Three.js supports loading of many different formats - see the loader examples for a complete list.

So technically, any application that exports in any of those formats can be used, which is pretty much any 3D application.

In practice though, things get much more complicated. A lot of the loaders are old and out of date, or have only partial support for the formats.


The loaders and file format I’ve used that work well (although still have bugs):

OBJ format - This is perhaps the best supported format (both in three.js and exported by application). However it doesn’t support animations so if you need to export animations from your application you’ll have to move on.

Collada format - Also well supported by three.js and other apps. However it’s a complex format and I’ve found lots of problems using it in practice.

FBXFormat - the Autodesk format. Use this if you are using and Autodesk app to create files (3DS Max, Maya, MotionBuilder etc). The three.js FBXLoader is not without bugs, but is pretty good overall.

JSON format - This is the three.js format so support is generally good. However since it’s just a text file and can’t be compressed, file sizes will be big for complex models.

GLTF format - version 2 (GLTF2) of this format is looking good and under active development. I suspect in a year or two this might be the overall preferred format. For now though, it’s hard to export / convert models into this format.


So what applications can you use? Well, lots. Too many for me to have any experience with. So, these are just the ones I have used:

3DS Max by Autodesk (they also make Maya). I mainly use this. It’s not free though, however it should be pretty easy to get a student license which is free. If you are using this, export in FBX format, although OBJ or Collada might work too.

Blender. The best open source 3D application. I’ve used this a good bit, it’s hard to transition from 3DS Max since the workflow is different but if you’re getting started this is worth looking into. It supports exporting in the three.js native JSON format too, as well as other open source formats (OBJ, Collada, GLTF).

Final note

Getting complex animated 3D assets to work in three.js is hard. It’s currently a mess of workarounds, broken and buggy exporters and loaders that have only partial feature support, on top of which applications are capable of creating many things that three.js just doesn’t have, so you need to be careful in building your assets. The best thing to do is spend a while getting to know what’s available, then find a workflow that works for you.

EDIT (March 2018)

Since this gets linked to every so often, I’d like to update it to say that the final note is not entirely accurate now, so long as you are using FBX or GLTF formats. A lot of work had been put into both loaders, as well we the blender GLTF exporter, over the last couple of months and they now load the majority of models without error which has simplified the art pipeline a lot.

1 Like

Thank you so much for your trouble replying.

Regardless of which app you model in, using Blender as a middleman to convert to three.json is the best route, imho.

I am no lover of Blender, but I use it almost daily to get meshes from my other 3D apps into three. It is free and open source, and that is all wonderful and everything, but it has the worst.interface.ever… However, it is getting better lately, and it is very customizable. For some inexplicable reason, Blender Foundation has chosen to do almost everything completely different from everyone else…Regardless if you end up loving it or hating it, you will want to get Blender and start playing with it.

And I agree with everything looeee states above, except perhaps one thing: “JSON format … However since it’s just a text file and can’t be compressed, file sizes will be big for complex models.” When you export JSON from Blender, you can [x] Enable Precision. I use this for virtually everything I export, and I almost always use a precision of 3, which if I’m not mistaken, is down to 1mm. This almost cuts file sizes in half (from default of 6) and for most everything I do, this still yields beautiful meshes.

1 Like

Thank you

Things have changed recently - support for FBX and GLTF formats is much better now and there is no need to go via blender if you can export FBX files, which counts for most commercial 3D software that I am familiar with.