Three.js adventures of a former game developer

After a busy hack week here at carwow I’m presenting my project: display a 3D car with a GUI to allow the user to change its body colour.

Technologies used: WebGL, Three.js, Hammer.js

First impressions

It was extremely easy, even fun, to set up the scene, the getting started documentation is well done and I got to spend my time creating my own shaders to render metallic and solid paints with cube maps and more fancy effects. It was all easy to do, for an experienced graphics programmer.

What should be improved?

Many of the functionalities are undocumented, so I had to dig around for information, including reading the actual source code. Example of undocumented functionality: ObjectLoader.

Importing assets was painful; I tried FBX, OBJ and JSON formats and all had problems either losing material information, texture links, exploding the mesh or just throwing exceptions like there’s no tomorrow. Initially I bought a 3DMax asset from a popular online store, but after two days fiddling with 3DMax and Blender without results I had to rip assets from another demo in order to achieve something.

I think the community should concentrate on producing some tools (the semi-undocumented three.js editor helped me a lot to debug assets) and better documentation to import assets and handle errors.

Graphics applications with real-world applications depend a lot on assets and this is one of the main reasons why even advanced engineers choose expensive pre-made engines instead of creating everything from scratch for their projects.

Also, I think three.js tries to do too many things and in result it seems to be quite heavy for the CPU.


Interested in making an Impact? Join the carwow-team!
Feeling social? Connect with us on Twitter and LinkedIn :-)