On Friday, September 13, 2013 7:10:16 PM UTC+1, Greg Laun wrote:I have a student who specializes in 3d graphics (in particular writing very fast physics and game engines) who has expressed interest in contributing to Sage. From the sound of it, it would be very simple for him to implement fast, responsive interactive 3d graphics, which I for one would definitely like to see. I realize we have jmol, but it currently has a long load time.
The only issue is I don't know enough about the status of sage's 3d graphics to know where to start. Is there a 3d graphic wish list, or any tickets that describe what features a 3d graphics system needs? Are separate native implementations in Windows, OSX and Linux okay, or do we need something like Java that is truly platform agnostic?
Writing a cross-platform opengl viewer with some controls to rotate is the easy part. For really smooth 3d animations/interacts you need a different way of plotting than what we do now. Instead of plot3d() spitting out a 3d screne every time you call it, you need to once generate the 3d scene and then progressively update the existing OpenGL objects as you animate (or change the interact).
What about using Blender ? It is a mature free and open-source 3d/4d graphics software of professional level. Moreover, it has a Python API (Python 3 however, while Sage is still in Python 2). The 3d rendering and animation of Sage objects in Blender scenes would allow one to explore geometric objects in a way far beyond what Mathematica or Maple can offer.
For more complicated things, e.g., providing an interact to plot x^2+y^2-z^2-t=0, with a slider for t, I don't immediately see how you can do significantly better than just shipping a new scenery to the renderer.
I'm surprised no one's yet mentioned
https://plus.google.com/115360165819500279592/posts/WkY7mQ6ju2u which
is extremely relevant