webVR workshop at Illustrating Mathematics

webVR workshop at Illustrating Mathematics

I recently spent a week in Providence attending the “Illustrating Mathematics” conference at ICERM. Per the workshop description, “The goal of this conference is to bring together mathematicians from a range of fields, and practitioners from the digital arts (animation, 3D printing, laser cutting, CNC routing, virtual reality, computer games, etc). The attendees will share their expertise in mathematics and with the procedural tools used to illustrate mathematics.” This makes it sound a bit like there were two distinct subsets of participants, but, in practice, all participants had previous experience using digital tools to illustrate mathematics.

An objective of the conference was to share knowledge of how to use different tools to illustrate mathematics. To that end, I ran a workshop on the first day with the aim of introducing conference participants to VR and enabling them to make their first VR content.

In the interest of skipping to the “fun” part, workshop participants were provided with a pre-setup webVR boilerplate. I’ve found that it’s helpful to provide both an entirely “blank slate” version of the boilerplate that participants can add things to and a “demo” version that participants can reference. As an experiment for this workshop, I tried using the new Mozilla boilerplate rather than our usual eleVR homebrew one (link to old version, new version not yet online). This had mixed results, a lot of people wanted features that are standard in the eleVR boilerplate, but missing in the Mozilla one. On the other hand, the Mozilla boilerplate has features that the eleVR boilerplate lacks as well, so it likely ended up being a wash. If I were to run the workshop again, I would probably spend some time creating a boilerplate that took the best from both. As it was, I actually spent some time helping a workshop participant who really needed it, add in a feature to the Mozilla boilerplate that is standard in the eleVR version after the workshop.

We focused on putting objects into the space, coloring them, and rotating/moving them using threeJS. The demo code included three types of objects – a simple cube, an object group of tetrahedra (five intersecting tetrahedra), and an obj of an icosidodecahedron. I chose the objects both for mathematical interest as well as variety. The cube made for a nice basic example, while the group of tetrahedra demonstrated how objects can be combined. Many of the people attending the workshop already do 3D computer modeling, and the example of the obj loading enabled people to upload their own pre-existing models into VR for the first time.

After introducing webVR and working through some of the basic examples in the demo code, I spent most of the workshop walking around helping people with their own webVR projects.

I knew the workshop had been a success when several different people continued to ask me for help with their projects throughout the week of the conference. During the optional show and tell hour, when people showed off relevant work they had done (almost all from before the conference), I was delighted to discover that one participant, Ken Baker, had gone so far as to upload his webVR experiments of the week onto a website and had been pleased enough with them to show them off to the whole group. (If you attended my workshop and made something based on it that you’ve put on the internet, please let me know – I’d love to see it!)

You can check out his three “plane fields” of circular discs here: http://www.math.miami.edu/~kenken/planesight.html



While the workshop mostly went well, there were still some things that I would do differently were I to run it again. As mentioned previously, I would use a modified version of the webVR boilerplate from both the current eleVR standard and the Mozilla boilerplate. Secondly, I would set the demo content to be the default rather than the blank page. There were quite a few confused people who thought that the provided code didn’t work because it looked “blank”. Thirdly, I would include examples of loops and if statements in Javascript – somehow it failed to occur to me that knowledge of how to make a “for loop” in Javascript wouldn’t be common knowledge. Finally, I had an embarrassing error early on where it turned out that I had deleted some necessary code from the blank file while blanking it and had to walk through adding it back in (fortunately, this turned out to be short and straightforward). This could have been avoided with just a really cursory test workshop run through beforehand, so I felt pretty silly about it, although people didn’t seem to mind too much.

Overall, the Illustrating Mathematics conference was really relevant and educational for me, and I’m really glad that I was able to attend. There were some awesome lectures and workshops from other participants, and a neat exhibit of various people’s work.