A while back I was exploring the viability of three-dimensional websites.
3D on the web has only recently been made possible thanks to stronger devices and a browser feature called WebGL.
WebGL is an experimental technology that taps into the extra processing power of newer devices to render stunning 3D graphics right in your browser!
WebGL itself is a complicated low-level language, and there are few real solutions out there that ease these growing pains.
To me, there were only 2 real choices for utilizing 3D on the web:
The tried and true Three.js
The new yet creative Babylon.js
Although Three.js had everything I needed, Babylon.js had more of what I wanted.
The only problem was it was unnecessarily verbose, which made it unnecessarily complex.
3D Baby is what emerged from the experience
(along with one of my most complicated projects, PROTO).
So what's the deal?
Well, I created some dangerous tech with this one. I wanted to release it just to show off what I could do, but it has the power to really mess some stuff up in existing ecosystems (like a python in the Everglades). At the end of the Alpha, it became clear that I needed to modularize the prototype modifications I did to native primitives (it was so lovely though).
Additionally, there are limits to the viability of 3D on the web:
- Increased load times
- Chance of crashing (with no warning)
- Heavy energy use (a big drawback for mobile devices)
- Incompatible/Unsupported devices/browsers (limits availability)
- 3D is elaborate - it involves a lot of complex mathematics and understanding of 3D worlds (physics, making materials/complex meshes, etc.)
- 3D is expensive (only a very slim portion of developers can even work with it)
On a side note, the developers over at Babylon.js were great the entire time I was developing 3D Baby.
I have nothing but respect for the work they have done. 3D Baby is simply my own interpretation of their system.