Introduction
I recently offered my Javascript expertise to help George Hart restore his Virtual Polyhedra pages, which have around 1200 VRML models meant to be interactively viewed in 3D. That has been effectively impossible for about twenty years; you can learn why in the history section below.
When George and I shared the results, a number of authors of other polyhedra sites spoke up, since they were all in similar circumstances. I've started working with those that contacted me, and my progress is captured in the table below. In all cases I'm volunteering my efforts to revive the VRML models on their pages, either as a friend or just as a community member vested in the value of these amazing sites.
For all of the entries in the table that say "POC" or "archive", I have scraped only a handful of pages, so you will find many broken links; don't bother trying to navigate among those pages. In addition, I haven't scraped all the VRML files mentioned, only those that have thumbnail images, so you'll find VRML highlights in the text that won't work.
There are a couple of entries below that link to websites that don't need any help from me; the authors have already found another solution for 3D display of polyhedra. I thought these noteworthy enough to be included here, in the "after" column.
I will continue to update the table with more links, as the work progresses.
Author | Before | After | Status | Notes |
---|---|---|---|---|
George Hart | live | complete | The first engagement, as George is an old friend. This uses my own vrml-viewer, not X_ITE. | |
Jim McNeill | live | complete | ||
Vladimir Bulatov | collaborating | Vladimir already has X_ITE viewers, but he built a dedicated page for each model. We're working together to improve the experience. | ||
Richard Klitzing |
|
collaborating | Richard's VRML was largely generated by Jim McNeill's Hedron, so it should work in X_ITE as well as his files do. | |
Alex Doskey | live | no contact | ||
Roger Kaufman | live | collaborating | Roger already has VRML and OFF viewers, but opening in separate pages. He is working with Wagyx to improve the experience, and I may have something to contribute. | |
Wagyx Xygaw | live | collaborating | Wagyx has built his own OFF viewer, supporting many small viewers on a page! We're going to try to package it as a reusable web component. | |
David McCooey | live | no contact | Wrote his own interactive 3D viewer and data format, directly on WebGL! Has some slick features. |
Technology
First, let's be clear: the real heros here are the members of the X_ITE team, who have put together a component that can apparently consume any VRML 2.0/97 model, and render it faithfully. I did create my own VRML viewer component, still in use for George Hart's pages, as part of my vZome Online effort, but even there I simply fixed a few bugs in the Three.js VRMLLoader code, and wrapped it in a web component. The Three.js loader, and therefore my web component, is only able to handle a common subset of VRML, and would not have been sufficient for most of the pages listed above.
I want to also point out that Glen Whitney has worked hard to create a solution that does not require any modification to existing web pages. His solution, called Archematics, is a browser extension that anyone can install. It necessarily provides a less integrated experience, but it is a good option for any sites like Alex Doskey's that have not been updated. As I understand it, Archematics also unlocks some generation scripts on George Hart's pages that I have not dealt with.
What I have done is produced a simple Javascript script that dynamically processes the HTML on a page, looking for VRML links and restructuring the page if it finds any, in order to add the X_ITE component to display those VRML models. The script is heavily commented, so it is self-documenting.
The other essential part of the solution is a CSS stylesheet that lays out the restructured page, and styles the modified VRML links (text or image) to hint to the user that interaction is possible. I have not documented the CSS, simply because CSS itself is too subtle to document well. The best way to understand the layout and styling, assuming you're already pretty familiar with modern CSS, is to use the browser debugger to inspect one of the polyhedra pages linked above.
These things come together as two or three additional elements in the head of each HTML page. Here is the simplest form:
<head> ... <link rel="stylesheet" href="/vrml-revival/vrml-revival.css"> <script type="module"> import { scanPage } from "/vrml-revival/vrml-revival.js"; scanPage() </script> </head>You can see a slightly more complicated example, with additional CSS and a selector to find the title element, on one of Jim McNeill's pages.
History
VRML was developed in the early 1990s, with a grandiose vision of being the "language of virtual reality". Unfortunately, the vision was ahead of its time; computing hardware of the time was not really sufficient to the demands of 3D graphics as envisioned by VRML. Nonetheless, VRML extensions for web browsers were developed, and saw some adoption.
One community that embraced VRML was polyhedron enthusiasts. As abstract geometrical objects, many polyhedra existed mainly as drawings in books, only occasionally constructed as physical models. They were, and remain, a perfect candidate for computer graphics. The polyhedra enthusiasts listed on this page were therefore drawn to the web, and to VRML.
In the ensuing years, the landscape of 3D graphics changed, particularly in the web. OpenGL became a standard in 2006, and WebGL in 2011. GPUs became common in personal computers in the early 2000s, and in mobile phones much more recently. The original VRML browser extensions were not maintained in the face of all these changes.
VRML survives now as X3D, essentially an XML representation of the same ideas. It may yet succeed in becoming a native web standard, embeddable in HTML alongside MathML and SVG.