[comp.graphics] Ray tracing Superquadrics

ojt@cs.brown.edu (Oren J. Tversky) (10/28/90)

To whom it may concern-

     I have been thinking over ways to ray trace super quadrics (including
super-toroids).  Despite possessing an implicit form, I couldn't come up
with any obvious method for doing this.  I would be interested in any method
anybody has of accomplishing this.

If anyone has any ideas, please mail me at:

ojt@cs.brown.edu
______________________________________________________________________________
Oren Tversky            "Tastes great, less filling"
ojt@cs.brown.edu                    -Miller Brewing Company
..!brunix!ojt                     

speer@boulder.Colorado.EDU (Rick Speer) (10/29/90)

In Article 14754 of comp.graphics, ojt@cs.brown.edu (Oren J. Tversky)
writes-

    ----------------------------------------------------------------
    From: ojt@cs.brown.edu (Oren J. Tversky)
    Newsgroups: comp.graphics
    Subject: ray tracing super quadrics
    Date: 28 Oct 90 01:21:00 GMT

    To whom it may concern-

     I have been thinking over ways to ray trace super quadrics (including
    super-toroids).  Despite possessing an implicit form, I couldn't come up
    with any obvious method for doing this.  I would be interested in any method
    anybody has of accomplishing this.

    If anyone has any ideas, please mail me at:

    ojt@cs.brown.edu
    ----------------------------------------------------------------

I've sent mail to Oren but am posting my reply too in case others are
interested.

---------------------------------------------------

Oren,

Here's some material that may be of assistance. The following paper-

  "An Introduction to Ray Tracing", by Roman Kuchkuda, pp. 1039-60 in
  Theoretical Foundations of Computer Graphics and CAD, R. A. Earnshaw,
  Ed., Springer-Verlag, 1988.

is a good introduction to the tracing of superquadrics. In addition to
the usual overview material it gives actual source code, in C.

This paper-

  "Robust Ray Tracing with Interval Arithmetic", by Don Mitchell, pp.
  68-74 in the Proceedings of Graphics Interface '90, Canadian Infor-
  mation Processing Society (Toronto), 1990.

focuses in particular on root-finding when intersecting a ray with an
implicit surface. Mathematical and pictorial examples of tracing super-
quadrics are given, along with data on the time-cost of intersections
(when run on a SPARCstation). There's also some discussion of using the
method for CSG.

Finally, this thesis-

  "Implementation of a Ray-Tracing Algorithm for Rendering Superquadric
  Solids", Bruce Edwards, Masters Thesis and Technical Report TR-82018,
  Rensselaer Polytechnic Institute (Troy, NY), December 1982.

probably goes into more detail than either of the papers mentioned
above.

Hope this helps.

------------------------------------------------------------------------------
| Rick Speer               | "Can I try another world?" - Question overheard |
| speer@anchor.colorado.edu|  from a guy trying out the system at the VPL    |
|                          |  Research (virtual reality) booth at Siggraph.  |
------------------------------------------------------------------------------

erich@eye.com ( Eric Haines) (10/29/90)

Rick gave a good answer to a request for information on how to ray trace
superquadrics.  Here are some comments on his references.

In article <28825@boulder.Colorado.EDU> speer@boulder.Colorado.EDU (Rick Speer) writes:
>
>  "An Introduction to Ray Tracing", by Roman Kuchkuda, pp. 1039-60 in
>  Theoretical Foundations of Computer Graphics and CAD, R. A. Earnshaw,
>  Ed., Springer-Verlag, 1988.
>
>is a good introduction to the tracing of superquadrics. In addition to
>the usual overview material it gives actual source code, in C.

    This code can be found in electronic form in Craig Kolb (& Roman
Kuchkuda's and others) RayShade ray tracer.  It works for the simple test
cases I tried, but I wouldn't bet my life on its stability for concave
superquadrics.  The site weedeater.math.yale.edu [130.132.23.17] has RayShade
available via anonymous FTP.


>  "Robust Ray Tracing with Interval Arithmetic", by Don Mitchell, pp.
>  68-74 in the Proceedings of Graphics Interface '90, Canadian Infor-
>  mation Processing Society (Toronto), 1990.

    Interesting paper, though I admit to not having tried its method yet.
Looks like a great general method for superquadrics and whole families of
surfaces.  My favorite paper of this proceedings.


>Finally, this thesis-
>
>  "Implementation of a Ray-Tracing Algorithm for Rendering Superquadric
>  Solids", Bruce Edwards, Masters Thesis and Technical Report TR-82018,
>  Rensselaer Polytechnic Institute (Troy, NY), December 1982.
>
>probably goes into more detail than either of the papers mentioned
>above.

    My recollection of this thesis (I wanted to add superquadrics to the ray
tracer when I first got to Cornell in 1983) is that there is less than a page
on actually intersecting the beasts!  Essentially, it says something like "use
Newton's method to find the roots" and gives a reference.  The reference says 
"private discussions with Al Barr".  Not exactly revealing.

Eric Haines, erich@eye.com

markv@gauss.Princeton.EDU (Mark VandeWettering) (10/30/90)

>>  "Robust Ray Tracing with Interval Arithmetic", by Don Mitchell, pp.
>>  68-74 in the Proceedings of Graphics Interface '90, Canadian Infor-
>>  mation Processing Society (Toronto), 1990.
>
>    Interesting paper, though I admit to not having tried its method yet.
>Looks like a great general method for superquadrics and whole families of
>surfaces.  My favorite paper of this proceedings.

	Very interesting paper, but I believe that the convergence of the 
	method is quite slow, even slower than bisection.  I coded up 
	a version of it for the MTV raytracer, and was testing it out when
	it was clear it was converging VERY slowly.  If anyone has some
	hints, or wants to discuss this further, send me some email.

	The reason I was interested in this scheme is that it would allow
	you to trace non-linear rays (rays could be generalized to space 
	curves) which would allow more generic transformations of objects
	(ala Al Barr).

	You can use geometrical properties of the superquadric to figure
	out intersections.  There can be at most two intersections in any 
	octant of the superquad, so a primitive method would be to handle
	each octant separately and then use some favorite numerical method
	(Newtons or bisection) to home in on the roots.

Mark (markv@acm.princeton.edu)
Mark VandeWettering
markv@acm.princeton.edu

carter@IASTATE.EDU (Carter Michael Brannon) (10/31/90)

     I was just digging through my literature and finally came up with
the reference that was
stuck in the back of my mind.  I cannot vouch for the speed of this
method, but here's the ref.

Kalra, Devendra, and Alan H. Barr, "Guaranteed Ray Intersections with
Implicit Surfaces,"
  Computer Graphics, Vol. 23, No. 3, July 1989.

This method uses Lipschitz conditions to intersect ANY implicit surface.
It always finds the
closest (or subsequent) intersection points -- even in badly behaved
functions.  There are
also some really neat pictures of blended objects in the paper.

--
Michael B. Carter