Isosurface Tutorial

© Mike Williams 2001,2002,2003,2004


Isosurfaces are a feature of version 3.5 of POV-Ray. This tutorial assumes that you have some basic knowledge of isosurfaces.

General Points

Because of my mathematical background, I prefer to express my surfaces with zero threshold. E.g. I think of a sphere as x2 + y2 + z2 - R2 = 0 rather than x2 + y2 + z2 = R2.
So I express my isosurfaces like
function {x*x + y*y + z*z - 1}
threshold 0

But some people might prefer to write the same isosurface as
function {x*x + y*y + z*z}
threshold 1

I've given almost all the images in this tutorial a visible indication of the object that the isosurface is contained_by. This is particularly useful in those images where the isosurface touches the container, so you can clearly see which features are caused by intersections with the container and which are a natural feature of the isosurface.

Hint I find it useful to add such visualisations of the container when developing surfaces. It helps avoid confusion that may arise if the isosurface accidentally touches the container. It also helps me spot situations in which the container is excessively large, wasting lots of rendering time. I comment out the sphere {0,R pigment {rgbt <1,0,0,0.9>}} once I'm happy with the behaviour of the isosurface.

The source files for the examples on each page are available as ZIP files.

The tutorial is split into the following sections:

  1. Isobar Analogy
  2. Simple Surfaces
  3. Syntax Subtleties
  4. Differences between MegaPOV and POV 3.5
  5. Variable Substitution
  6. Combining Functions
  7. Pigments as Functions
  8. Functions as Pigments
  9. Parametric Equations
  10. Ingo Janssen's
  11. Kevin Loney's Approximation Macro
  12. New Tricks
  13. Parametric spline functions
  14. Patterns and Noise
  15. Built In Functions
  16. Standard Built In Functions
  17. Inside Out
  18. i_algbr Library part 1
  19. i_algbr Library part 2
  20. i_algbr Library part 3
  21. i_nfunc Library part 1
  22. i_nfunc Library part 2
  23. Other Built In Functions
  24. Variable Parameters
  25. Using arrays
  26. Steiner Surfaces
  27. Mathematical Zoo
  28. "Realistic" Surfaces
  29. Seashells
  30. Things That Don't Work
  31. Alphabetical index

Printer Friendly Version

By popular request, there's now a "printable" version of this tutorial. It's considerably more printer friendly than the main text, but probably not perfect. By request, the whole tutorial is in one HTML file, so it's a bit big. Avoid it unless you're really determined to print it. There's over 100 pages (it varies depending on your browser settings). Expect it to take about 15 minutes to load on a 56k dialup line (unless you've already got the images in your browser cache from looking at the main text).
Alternatively, you could use a printer friendly browser, such as Firefox. I suggest going into the FireFox Print Preview Page Setup to set all the margins to zero and all the headers and footers to --blank--, then select "Shrink to Fit. This allows you to print these (and just about any other) printer-unfriendly pages nicely.

Belorussian Translation

click here to read Belorussian translation


Back to Mike's Homepage
Poser 3 to POV 3.5 tutorial