The Project

Our goal was to create a portage between Syzygy and Mathematica. A portage translates code written in Mathematica to a working Syzygy application. We use a future version of Matematica's Kernel in the distributed graphics system, Syzygy. The new adaptive mesh feature would have been suitable for animating classic homotopies, like the Morin-Apéry sphere eversions, and Dalbec's contraction of Zeeman's Duncehat, in cluster based virtual environments such as the CUBE, CAVE and CANVAS at UIUC.

We started by rendering the homotopies in Mathematica. François Apéry's RomBoy homotopy is quite famous. Some years ago, Donna Cox created an artistic variation on this homotopy creating the Classic Etruscan Venus homotopy. John Dalbec's contraction of E. Christopher Zeeman's Duncehat is in three phases. The duncehat is a triangle turned into a cone by connecting two sides and finally taking those same two sides and connecting them to the third side (i.e., wrapping them around the base of the cone). The contraction begins by moving the points of the duncehat up disappearing off the sides of the triangle and reappearing on the bottom. The second phase collapses the triangle, mapping a free edge to a unique edge of the duncehat. In the third phase, the edge moves up the triangle to the vertex. The Gastrula sphere eversion can be viewed from different angles. These and other homotopies are available here.

A Mathematica-Python interface called PYML was developed some years ago which was formatted for Mathematica 3.0 and an old version of Python. Mathematica has changed significantly since the earlier version requiring us to make major modifications to the PYML code. Making these necessary changes requires significant expertise in the C language and Python language, and a thorough understanding of Mathlink. Moreover, our attempts to use the new Mathematica functions were unsuccessful. We tried to use a function which allows the user to manipulate the parameters to render real-time images. The surface rendering for complicated surfaces, such as those in our homotopies, causes tremendous lag on the beta version and is unsuitable for adaptation into Syzygy. Another function ran faster than the first, but it will only animate the change to one parameter, which will not be a problem for Gastrula and Duncehat, but the surfaces on the latter are more complicated, again creating lag. We have also experimented by storing a succession of single frames and running them on yet another function, however, this function is unable to render the images quickly enough to reach animation quality.

An endeavor to create this Mathematica portage for Python in such a short time is impossible and it seems that real-time calculations in the Mathematica kernel will take too much time. A more realistic goal for this project is to put prerendered animated images into the CUBE. Still VRML images have been in the CUBE and CAVE. The VRML files are created by Mathematica via an Export function which Syzygy reads to place those images into the CUBE. We animated the homotopies by creating a .mov file which plays in Syzygy as an AVN using Exported OOGL files.