vZome Web Experiments
For many years, I have wanted to port vZome to the web. The primary reason for this is that the web browser is now the truly universal platform, and an increasingly capable and standardize one, at that. A secondary reason is the steady erosion of the viability of Java desktop applications, for various reasons.
This document captures my history of experimentation with web technologies, always with the goal of porting vZome. A strong requirement has always been to continue to support opening existing vZome files, even if the web version of vZome adopts a very different user experience.
3D in the Web
My earliest efforts, starting in 2012, focused on learning about
WebGL, the browser standard for 3D graphics.
One of my first attempts just uses bare WebGL JavaScript code to
render a Zome ball or any of several other
vZome shapes exported as JSON, such as a short purple strut.
I don’t seem to have any source code for this app saved anywhere, except where it is served on vzome.com
.
My next attempt, in 2015, used TDL, a wrapper library around WebGL created by Gregg Tavares. The source code for this application is available in GitHub. Here the data is a collection of JSON files exported from vZome. This application includes some primitive user interface elements, buttons to navigate between designs, and one button that opened a DropBox chooser to load additional designs.
As early as 2014, three.js had come to my attention, having already gained a high degree of adoption in the WebGL community. I was also starting to think about replacing desktop vZome, looking into Electron, a framework for building cross-platform desktop apps using web technologies. In 2017 I created this application, a fairly simple first effort with three.js.
The source code for this application is also available in GitHub. This project started as a fork of sample code by Jerome Etienne.