1 thought on “White Paper for Three.js?

  1. What were you hoping to achieve with Three.js that was not available when you were developing it, was WebGL the original target?

    There were many goals, I think it’s best if I explain the whole history. It’s a bit of a blur in my mind but I’ll do my best.

    Back in 2002, on my free time I would team up with (C/DirectX) 3D programmers and we would create demos for competing at so called demoparties. Back then I was convinced that I was not smart enough for doing programming so I mostly did the graphics, 3d modelling, camera work and editing. The programmer would setup a scripting system or even a editor for me to work with but after a bunch of productions I started to be unhappy with the results. It was obvious that the layering was affecting the process and the demos felt too static. So slowly I started to be interested on learning graphics programming so I could explore what could I do manipulating the 3d engine code.

    At that time, even if I was convinced I could not do programming I found myself doing bits and pieces using ActionScript. Fast forward to 2006 and I had a (buggy) spinning wireframed torus knot in ActionScript 2. Months later Papervision3D got released and I saw that it was pretty much what I was creating so I started experimenting with it instead.

    About 2 years later, in 2008 I started to feel again that, because I didn’t have the core code under control, I couldn’t get the best of the system. So I decided to go back and continue my own library applying the good stuff from Papervision3D and also a few structure improvements I came up with while working with it.

    Then Google Chrome happened and raised the bar of JavaScript performance. I did some experiments for it pretty early on and I loved the fact that you were ready to go even with a simple text editor. Until then I needed FDT and FlexSDK for compiling.

    Being a Linux user, I saw this as an opportunity of removing the dependency that all the web developers have with Windows, MacOS and Adobe and started to spend my time on improving HTML5 development experience. All what was needed was just a bunch of libraries anyway.

    So in 2010 I released the first version of three.js (previously three.as) with DOM, SVG and Canvas renderers. For instance, this was one of the structure changes I wanted to try. Most of the 3D libraries tends to have the renderer as part of the core, but I wanted to make it easy to have any renderers in case any new way of rendering appeared.

    Thanks to that decision WebGL was fairly easy to implement months later 🙂

    So, in short, I just wanted a 3d library that suited my needs and later on I realised that it could be beneficial for more people than not just me.

    What do you think still distinguishes it from the other libraries for WebGL, especially in terms of features and usability?

    I don’t know. I haven’t tried the other libraries :S

    Do you have a sort of target audience or primary design goals that guide your development for the library?

    The goal is basically making the life of developers easier and, at the same time, doing better use of the user system.

Comments are closed.