Book Review: Three.js Essentials

Review of book, Three.js Essentials by Jos Dirksen
Packt Publishing, July 2014

Three.js Essentials provides a starting point for anyone curious about how to leverage the WebGL standard using the Three.js JavaScript library. The book consists of seven detailed examples with explanations of how they work. Unfortunately, these explanations are light on detail, making the treatment of this subject somewhat superficial.

It’s not necessarily bad to be superficial, however. Clearly, one advantage is that you quickly get introduced to some of the details so that you can get a taste for the level of difficulty involved in creating a moderately functional Three.js application.

The bad news is that too many details get left out, leaving you wondering what’s hidden behind the curtain. For example, on page 79 the author states, “Note that we set the sortParticles property to true. You should always do this whenever you change the vertices (or the position of the vertices) of the system to make sure that they are rendered correctly and don’t result in weird overlapping artifacts.” There’s no other explanation. The author is essentially saying, “Just do this, or you’ll get weird results.” Unfortunately the book has too many of these kinds of statements, and one has to struggle to remember the rules without understanding the context or the underlying reasons.

Despite its terseness, the book manages to present some examples that are nothing less than awesome. For example, the author shows how you can tie graphic attributes to audio sound, allowing you to enjoy listening to Star Wars theme music while watching a fabric of “Particles” bounce in sync with the music. Additionally, the final chapter walks you through the steps of exporting graphics from the Blender 3D modeling software package and processing them in Three.js. This is really useful if you are in need of a good 3D graphics development environment for your Three.js models.

Overall, the book is a worthwhile read if you’re curious as to what you can do with Three.js and want some good examples to help understand the associated level of difficulty in developing such applications. It is by no means thorough enough to serve as a programmer’s reference, however. It doesn’t even present a tutorial on 3D spatial coordinates, which would serve as a good first step for a serious Three.js programmer. Nor does the book comment on use cases for Three.js, which would help you decide whether or not to use it for your next project. It is because of this lack of sufficient detail and practical context that I cannot give the book a full five stars.