What (exactly) is three.js for?

What exactly is three.js for?

“Three.js is an open source library to improve the quality of 3D graphics on the web”

  • Mr.Doob and team.

I think the main goal here is to make vector and quaternion math easily accessible to javascript devs, they have collected nice snippets over the years and published them as Vector3, Matrix4 and Quaternion classes. Oh, and you have been wondering where you could use these, it comes with the extensive set of examples for their use in web 3D graphics.


ok understood

What exactly is Three.js missing?

Three.js user community is missing an Editor IDE like Unity/Unreal/etc.

Three.js already has an online editor: three.js editor
If you’re looking for a game editor that resembles Unity, I recommend you use https://playcanvas.com/ Three.js does not aspire to become a full-fledged videogame engine.


At the risk of beating a dead horse, let me respond to the many people who contributed to this thead. @Vasanth_Kumar’s question “What exactly is Three.js missing?” is the crucial one here. The answer is that it’s missing a lot of things that other competing 3D packages provide, but those things aren’t part of three.js’s goals - which is why it’s important to clarify what those goals are.

It’s not enough to say what three.js is (as many people have attempted to define in previous posts), but it’s also important to say what it isn’t. Why? Because what it isn’t is going to be a major decision point in deciding whether to adopt it or another framework.

As a software engineer, when I look at packages on github or npm.org, one of the things I look at is velocity - where is the project headed? What are the aspirations of its developers? A project isn’t just a static snapshot of code, it’s an ongoing process. This is true of both applications and libraries, and as your application grows and needs more features, you’re going to want to make sure that the libraries you use are also growing in a direction that is aligned with your goals.

My observation here is that three.js “is what it is”: meaning that, while the library is constantly being tweaked and improved in minor ways, the overall feature set is basically set in stone at this point (other than the WebGPU related work). Correct me if I am wrong, but there’s no push that I am aware of to add major new capabilities to the library other than what’s already there.

Another part of the difficulty here is that the categories we are talking (WebGL, 3D rendering, etc) are extremely broad. There are lots of other tools that also target WebGL (Babylon, Unity, Unreal, Godot, etc. are the most widely known, but there are hordes of others), how is one to decide which choice is best (with out actually taking the time to try each one)?

A different use case is whether to use a framework at all: there are some kinds of projects (like generating flat textures using WebGL shaders) where directly calling WebGL is easier and simpler than using a framework like three.js (at least, in my opinion). Again, the only way to discover this currently is to actually write the code both ways and compare them.


That’s not true, it implies that perhaps three shouldn’t be used for 2d graphics, which it very much is.

We can’t use available three.js editor to develop and release an application. Let’s not call that as an editor. It is more of a model viewer or tester for new release.

Playcanvas is good and it has two parts, engine and editor. Their engine is not based on three.js which is not our discussion here. Lets focus on editor.

I am not expecting Mr.Doob and team to develop a full fledged editor as their current task itself is very big in maintaining the three.js engine.

The purpose of this discussion is… If some developer see the need for such three.js based full editor and create one, it will be helpful for many three.js developers.

Videogame is not the only application we can do in editor. It can be an landing page, metaverse gallery, game, ar, vr, etc…

Three.js is an open-source JavaScript library for 3D graphics, so its development and evolution depend on the contributions and efforts of the community. It has a large and active user base, so there is a good chance that new features and improvements will be added over time to better meet the needs of the community.

However, as with any open-source project, it’s not possible to guarantee a specific direction of development or a timeline for new features. Ultimately, you can choose to use Three.js or not based on whether it currently meets your needs and whether you believe it will continue to do so in the future.

If you have specific requirements that are not currently met by Three.js, you can consider contributing to the project yourself or hiring a developer to add the necessary features. You can also explore alternative libraries to see if they better suit your needs.

1 Like

Let me jump into this discussion from a more philosophical perspective.

What (exactly) is three.js for?

This is the type of question that may have many different answers. And all of them are correct and wrong. At the same time. It is because different people use Three.js for different things. It is like a hammer. What exactly is the hammer for? Some will use it to break walls, other will use it to carve marble statues, yet there will be people who use it as a presse-papier or as a weapon.

So, I let me add one word into the question:

What (exactly) is three.js for ME?

Then I read again the thread. Now everything is fine and I agree with everyone.


Great discussion, touching a lot of strong and weak points of the library. The strong points are too many and too awesome to enumerate, but for me and probably others as far as I can see here, I would have preferred more predictibility and coherence from it. The level of the former is probably a consequence of the ever changing nature of the environment it activates in, while the level of the latter is a consequence of the ever changing source of contributions to the code. These two make its (near) professional usage a choice that needs to be considered thoroughly. In any case, the fact that it is a comprehensive option when making that choice is already a win.

1 Like

What is this discusstion needed for? I think it’s not important. It’s just like “chicken, egg, chicken, egg, …”