SceneJS vs Three.JS vs others [closed]
Solution 1:
As SceneJS author I thought I'd throw this in if it helps: SceneJS is specialised towards fast rendering of large numbers of individually articulated objects, without game engine effects like shadows, reflections etc.
In other words it's aimed at requirements of CAD, medical anatomy, engineering visualisations, things with 1000's of nuts and bolts, organs etc.
It therefore has less flexibility than three.js, GLGE and PhiloGL.
It does however have a pure JSON API, which people have found integrates well with AJAX, parsers and databases (eg CouchDB).
So if you're writing a game I would point you at one of the other frameworks, but if you're writing a CAD viewer then SceneJS might do the trick.
Solution 2:
I often use the popularity of a project on GitHub as an indicator of its success. While there are problems with this method, I do find it's often the best way to make a choice. Listing popular WebGL projects, in decreasing popularity by number of "stars":
- ThreeJS (38164)
- PhiloGL (729)
- GLGE (389)
- SceneJS (561)
- OSGJS (510)
- C3DL (56)
This also mirrors what I've found when looking into these projects. three.js seems to be the most feature complete, has an extensive set of examples, a well-structured code base, and a thriving community.
Solution 3:
This is basically a duplicate of WebGL Framework, but the answers have probably changed since then. See also Which WebGL framework should i learn?
Since the world of WebGL is developing so fast right now, it would be difficult to find a complete, up-to-date comparison of WebGL frameworks. As soon as somebody spent the time researching such a thing, it would be obsolete. But here is an annotated list of WebGL frameworks:
http://www.khronos.org/webgl/wiki/User_Contributions
If you start a project using one of these frameworks, and then if you update this list based on your experience, it will be more up to date than before.
By the way in looking just now at PhiloGL, I was impressed with the full set of API docs, and that they've ported all the WebGL lessons to use PhiloGL (source code only, no explanatory text). I don't see a tutorial per se; but they have several examples, so overall they're better off than three.js in regard to documentation.
A few more notes, for those who may come after (including myself):
- CopperLicht seems to major on loading models from files, as opposed to generating geometry in code. It is not open source.
- PhiloGL uses O3D for generating geometry, e.g. spheres.
- Three.js comes with commonly-used textures.
Solution 4:
I'm the author of Jax ( http://blog.jaxgl.com/what-is-jax ), a framework with emphasis on test-driven, behavior-driven development and sheer productivity. Jax offers powerful code generators, an integrated application server and testing environment, and a cleanly-organized MVC (Model, View, Controller) architecture for your WebGL application.
Jax is designed first and foremost around Getting Stuff Done. It's a convention-over-configuration framework, which means that -- while you can certainly make it do things however you like -- if you accept its conventions, you'll find there's very little up-front cost to getting your application off the ground.
In addition, Jax was designed around extensibility. It's easy to build meshes with whatever data set or algorithms you prefer to use, from loading them via JSON to generating them on the vertex shader; and the framework sports an honest-to-goodness plugin system so you can pick and choose additional functionality (such as collision detection) based on the needs of your application, without bloating the framework with things you don't care about.
It has loads of documentation and I'm adding more every chance I get; the quick-start page is now online at http://jaxgl.com, and a set of comprehensive guides are slowly making their way to http://guides.jaxgl.com. Links to the API documentation are available there, as well.
A growing selection of live demos of Jax in action are also alive and well on Github: http://sinisterchipmunk.github.com.