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.

1 Like

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.

2 Likes

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.

2 Likes

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…