I’ve been using three.js every day for almost two years now, and one of the things I often wonder is whether my goals and the goals of the authors/maintainers of three.js are really in alignment. Or to put it another way, if I were going to seek venture funding to build and publish a 3D web application, would my choice to depend on three.js be considered a risk factor or not? The answer, from what I can tell, is “maybe”.
Compare the situation with Unity, Unreal, or even Babylon.js. You go to those web sites and immediately you know what the target audience is, what kinds of apps are being targeted - games, VR apps, scientific visualization and so on. There’s an implicit promise that these kinds of things will be supported now and in the future.
Now, of course you can do all those things in three.js, but that’s not the point. When choosing a tool for a commercial-grade game or app, it’s not enough that you can “force” the tool to do what you want. A senior software engineer working in a commercial setting, when deciding which tool or library to use, is also expected to be able to make reasonable predictions as where that package is going, what its ultimate goals are and what its velocity is. Otherwise you risk placing a bet on something that later turns out to be a bad fit.
When I look at the three.js website, the documentation, the way that the examples are coded, the source code in github and all of the available information, it’s not actually clear to me what the authors’ goals are. Looking at this stuff, one could just as easily draw the conclusion that the primary purpose of three.js is not to build games and VR apps, but rather to compete in the demo scene - to make cool demos that show off the latest rendering techniques and algorithms.
In my case, I picked three.js over bablylon.js for one reason - because so much of my game world is procedurally generated at runtime, I found that babylon’s more opinionated approach led to slower performance. That one factor outweighed every other concern.
At the same time, however, I often wonder whether or not I made the right choice.