Contents
Sage 3D
Scope
3D is 1 more D. More is better.
Full 3D gets nasty very quickly. Actually, full 2D is pretty nasty so most of us stick with 1D projections onto 2D (graphs etc) and occasionally dabbling with extensions like color, flow fields etc.
In the fullness of time, Sage should probably include a range of packages simply because there's a lot of very good work thats been done and it is "relatively" straightforward to incorporate. However, making 3D useful to the Sage community will likely be tricky.
2.5D
2.5D spans the trivial to the nasty as well but lets start with the trivial. Generally, one starts with a grid where the grid coordinates map to 2D coordinates and the values are the 3'rd D. One typical projection is color which leads to contour maps and currently exists in sage through matplotlib.
Next is, generally, a surface using the coordinates... And away we go.
3D surfaces are triangles in hardware or are "renderings" onto 2D images. If we do the trivial projection of gridded data to a surface, we're already "deciding" what that means. Perhaps we split along the diagonal and spit triangles to the 3D card. Maybe we "smooth" the surface using NURBS and render.
But we're math guys right? So, lets abstract a bit to consider utility for Sage's user base. A very useful projection is "Parametric" meaning we define a function Z=F(u,v) and display that...
Ugh... turns out this gets nasty quickly... F tends to behave badly and is certainly not uniform. So, how do we wiggle through (u,v) and not miss critical points. Exhaustive searching is computationally expensive (impossible?).
Fortunately, this problem isn't unique and many packages exist which do "pretty well"
more co come...
3D
In its most general form, 3D requires a "Scene Graph" which is nothing more than a tree maintaining transformations and descriptions of aggregations of primitives and transformations. Many packages exist (list to be compiled... OpenSceneGraph, Coin3D)
Then we have the "specialized" 3D packages which abstract some of this into a more useful space. VTK is one such package, but one doesn't "dabble" with VTK (nor 3D for that matter)
More 3D Issues
While managing scenegraphs can be daunting, it gets uglier when considering the non-geometric aspects such as lighting, surface characteristics (specularity, luminosity) etc. As above, there are often ways to pick a reasonable default which makes most happy yet allows for tweaking later.
4D
Well, we need a place to stick animation stuff.
Time
Time is a special case unless you're into subatomic physics... in which case you're probably too "warped" to be reading this... due to causality. Causality is typically handled at the mathematics level so for a 3D system, what we're really interested in is dynamics.
From a design perspective, dynamic 3D rendering used to be hard. In a strange way, its now harder to build systems which aren't 3D at the infrastructure level. The Compiz desktop is a 3D infrastructure with 2D projections of the tools we all know and love... with a few lines of code to nail X-windows to the projections.
Abstractions which use 3D
3D Graphs - a good example that we can't use is: UBIGRAPH
List of Pages in Category3d
Category3d