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

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.

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.

Applications

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