home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / code / graphics / rtnews / rtnv5n1 < prev    next >
Encoding:
Text File  |  1995-05-19  |  32.2 KB  |  721 lines

  1.  
  2.  _ __                 ______                         _ __
  3. ' )  )                  /                           ' )  )
  4.  /--' __.  __  ,     --/ __  __.  _. o ____  _,      /  / _  , , , _
  5. /  \_(_/|_/ (_/_    (_/ / (_(_/|_(__<_/ / <_(_)_    /  (_</_(_(_/_/_)_
  6.          /                               /|
  7.         '                               |/
  8.  
  9.             "Light Makes Right"
  10.  
  11.               July 10, 1992
  12.             Volume 5, Number 1
  13.  
  14. Compiled by Eric Haines, 3D/Eye Inc, 2359 Triphammer Rd, Ithaca, NY 14850
  15.     erich@eye.com
  16. All contents are copyright (c) 1992 by the individual authors
  17. Archive locations: anonymous FTP at princeton.edu (128.112.128.1)
  18.     /pub/Graphics/RTNews, wuarchive.wustl.edu:/graphics/graphics/RTNews,
  19.     and many others.
  20. UUCP archive access: write Kory Hamzeh (quad.com!avatar!kory) for info.
  21.  
  22. Contents:
  23.     Introduction - SIGGRAPH roundtable, etc
  24.     New People, New Addresses, etc
  25.     Texturing Parameterization, by Haakan "Zap" Andersson
  26.     NuGrid results, by Mike Gigante
  27.     Recursive Ray Traversal, by Erik Jansen and Wim de Leeuw,
  28.     Response by Kelvin Sung
  29.     Ideal Grid/Object Densities, by Dan Gehlhaar, Marc Andreessen
  30.     BVH Traversal Results, by Nicholas Wilt
  31.     Ray Tracing Roundup, by Eric Haines
  32.     Mail Based 3D File Server, by Bob Lindabury
  33.     Imagine That, by Steve Worley
  34.     Correct Roots for Torus Intersection, by Haakan "Zap" Andersson
  35.     Information on Taos Parallel Processor, by Paul Wain
  36.     The Glazing Trick, by Haakan "Zap" Andersson
  37.     Bug in Ray-Convex Polyhedron Intersector in Graphics Gems II, Eric Haines
  38.  
  39. -------------------------------------------------------------------------------
  40.  
  41. Introduction
  42.  
  43. As usual, I've organized a "ray tracing roundtable" for this year's SIGGRAPH.
  44. This is about the sixth year we've done this.  What normally happens is 50-100
  45. people show up, we go around the room introducing ourselves and saying a
  46. little about what we've done lately, then break up and schmooz.  During intros
  47. you can say things like "RayShade hackers, let's meet in this corner of the
  48. room after intros" or somesuch.  It's fun to finally attach faces with names,
  49. and I've found it gets my brain hopping to exchange ideas with like-minded
  50. souls.
  51.  
  52. I've got a confirmed room in the Convention Center during the dead time
  53. between when the sessions end and the technical reception begins.  Look for an
  54. announcement of the location wherever "Special Interest Groups" are listed
  55. (I'll probably also list it under "Birds of a Feather", if like last year they
  56. don't post where the SIG meetings are located (The difference between a "BOF"
  57. and a "SIG" meeting?  All I know is I can reserve a room if it's a "SIG"
  58. meeting)).
  59.  
  60. Official time:  5:15-6:15 pm Thursday, July 30th
  61.  
  62. No guarantees about the shape of the table...
  63.  
  64. --------
  65.  
  66. It's a bit embarrassing putting this issue together, reading the backlog of
  67. notes ending in phrases like "have a nice Xmas".  What can I say, I've been
  68. busy...  Culling through all this stuff has been pleasant.  There are some
  69. nice new ideas and interesting research results.  I've tried to minimize
  70. the endless stream of announcements about some of the new free software (geez,
  71. don't these people know the rest of us are trying to make money selling this
  72. stuff?!) by summarizing these in an article called "Ray Tracing Roundup".
  73.  
  74. By the way, if you're reading this on comp.graphics, don't ask to subscribe -
  75. "The RT News" is always posted to comp.graphics.  If you think you missed an
  76. issue, check the princeton.edu archive site (assuming you have FTP).
  77.  
  78. There is a lot more stuff to wade through, a few articles I want to pass by
  79. the authors again, etc, but for now I thought the amount of material was
  80. enough to make an issue.  Enjoy, and see you at SIGGRAPH.
  81.  
  82. -------------------------------------------------------------------------------
  83.  
  84. New People, New Addresses, etc
  85.  
  86. Steve Worley - solid texturing, ray tracing efficiency (mostly statistical)
  87. Apex Software Publishing
  88. 405 El Camino Real #121
  89. Menlo Park CA 94025
  90. alias steve_worley   worley@cup.portal.com
  91.  
  92. I have become very involved in developing algorithms for ray tracing,
  93. especially in statistical analysis and "smart" ray-tree pruning and
  94. antialiasing.  I am also working on a method of "on-demand modelling" where a
  95. ray tracer might not even compute an object's polygons unless its bounding
  96. volume is pierced.  Thus, forests of millions of trees are possible with
  97. modest memory requirements:  distant trees are never even synthesized.  (This
  98. is one algorithm where true ray tracing is orders of magnitude faster than a Z
  99. buffer or scanline algorithm...  a scary thought!)  I have also written code
  100. for over 100 (!) Perlin-style solid textures as a commercial product.
  101.  
  102. --------
  103.  
  104. Manoj Patel           - stereo, motion blur
  105. Computer Science Department
  106. North Carolina State University
  107. Raleigh, N.C. 27695-8206
  108. (919) 515-3271
  109. e-mail: mp@adm.csc.ncsu.edu
  110.  
  111.    I am a lowly graduate student at North Carolina State University.  I am
  112. working on combining motion blur and stereo (using a modified version of
  113. Rayshade).  My speciality is staying incredibly busy 24 hrs a day but getting
  114. very little done :-).
  115.  
  116.    I would be interested in hearing from people that have implemented motion
  117. blur.  I have been assuming that most people use supersampling or stochastic
  118. sampling (across about 8 - 24 time frames), but have few sources to back this
  119. up (i.e please tell me know what is done "in the real world").
  120.  
  121. --------
  122.  
  123. Laurie Gerholz
  124. Unisys Corporation
  125. 3199 Pilot Knob Road, M.S. F2L09
  126. Eagan, MN 55121
  127. (612) 687-2913
  128. vlad@moria.sp.unisys.com
  129.  
  130. My interests in computer graphics currently include ray tracing techniques,
  131. radiosity techniques, and methods of building scene models which can be
  132. rendered via ray tracing or radiosity.  I am currently working on a ray
  133. tracing scene renderer which will run under Microsoft Windows.  This is
  134. a part-time hobby effort, not at all related to my real job (too bad!).
  135.  
  136. --------
  137.  
  138. Antonio Costa - ray tracing, visualization, modeling
  139. INESC - North
  140. Largo Mompilher 22
  141. 4100 Porto Portugal
  142. (351 2) 321006 ext. 329
  143. alias antonio_costa     a_costa@inescn.rccn.pt
  144. # alias antonio_costa   acc@asterix.inescn.pt
  145.  
  146. I have developed my own extensible ray tracer in the past 2 years for U*ix,
  147. VMS, DOS and Transputers.  I am very interested in texturing (2D and 3D) and
  148. better ray tracing...  I am also doing some things in scientific visualization
  149. applied to medicine.  I am looking for a subject to start my PhD work next
  150. year.  [The ray tracer is at asterix.inescn.pt [192.35.246.17].  It does
  151. bicubic patches and other interesting things.  -EAH]
  152.  
  153. --------
  154.  
  155. Brian Corrie
  156.  
  157. I am moving to the land down under, to work on the Visualization project at
  158. the Australian National University in Canberra.  Interests are the same as
  159. before, roughly, Realistic Rendering, Shading Languages, and Parallelization.
  160. They have some interesting hardware down there.  I will be working on a 128
  161. node Fujitsu AP1000, a MIMD parallel machine, parallelizing algorithms for
  162. visualization.  My new email address is bcorrie@cs.anu.edu.au.  G'day.
  163.  
  164. -------------------------------------------------------------------------------
  165.  
  166. Texturing Parameterization, by Haakan "Zap" Andersson (zap@lage.lysator.liu.se)
  167.  
  168. * Texturing:
  169.   I had a smelly problem with the AutoCAD entity "polyface" (= a bunch of
  170.   vertices and then a bunch of 3angles or 4angles referring to those by index)
  171.   since AutoCAD don't know a THING about texturing, it naturally does not
  172.   include texturing coordinates.  And by default, RayTracker did texture EACH
  173.   LITTLE POLYGON separately, yielding VERY ugly results.
  174.  
  175.   What I *did* was simple, but (semi) effective:  Look at ye normal vector.
  176.   If Z component is largest, texture in XY space, if Y is largest, texture in
  177.   XZ space, and if X is largest in YZ space!  That created good results as
  178.   long as the objects depicted were boxes and such, a brick texture was
  179.   correctly oriented automatically on the faces and so on.  Curved surfaces
  180.   Weren't that good (I used the pre-smoothing normal, so each polygon had its
  181.   own texturing at least, i.e.  no change of texture-space over the polygon).
  182.   But what the heck, it look quite alright, and actually, some of the funnier
  183.   effects of the weird texturing on curved objects looked like some kind of
  184.   inlaid material (like inlaid wood) or so where texture space just happened
  185.   to swap.  Perhaps you have thought of some similar criteria?
  186.  
  187. [Indeed I have - I independently invented this method a few years back, and
  188. I've found it useful since then.  It's particularly good with textures like
  189. carpet or iron or suchlike:  there is little distortion and you usually can't
  190. see the discontinuities when things flip from one "face" to another.  Even
  191. when there is some "grain" to the texture, it usually looks pretty cool. - EAH]
  192.  
  193.   Another idea I had was to average ALL NORMALS in any given polysurface,
  194.   weighted by area, and that would give me a "normal" to the objects "most
  195.   flat" orientation...  then one would texture in the plane orthogonal to that
  196.   normal...  The problem is that one most often want the X direction of a
  197.   texture to follow the horizon (not to get rotated textures)...
  198.  
  199. -------------------------------------------------------------------------------
  200.  
  201. NuGrid results, by Mike Gigante (mg@godzilla.cgl.citri.edu.au)
  202.  
  203. [Mike wrote of some results from his efficiency scheme:
  204.  
  205. %A Michael Gigante
  206. %T Accelerated Ray Tracing Using Non-Uniform Grids
  207. %J Proc. of Ausgraph '90
  208. %C Melbourne, Australia
  209. %D Sept. 1990
  210. %P 157-63
  211.  
  212. - EAH]
  213.  
  214. As I made the claim that NUgrid would "just take care of the SPD balls
  215. example automatically", I thought I would followup on some results.
  216. These results are using rayshade 4.0.2 for which we have added NUgrid
  217. as well as the existing uniform grid. This model is exactly as
  218. generated by your SPD program (i.e. no hand tweaking to remove the
  219. ground plane from the uniform grid):
  220.  
  221. Resolution    Grid Method    NuGrid Method
  222.  8           7810.45       850.94
  223. 10           7083.62       647.86
  224. 12           7248.39       574.53
  225. 14           6477.42       518.00
  226. 16           5759.92       540.98
  227. 18           5000.04       532.22
  228. 20           4235.32       567.90
  229. 22           3407.94       558.84
  230. 24           2837.32       552.42
  231. 26           2544.04       537.30
  232.  
  233. note that NUgrid is far less sensitive to grid resolution and of course is
  234. significantly faster :-)
  235.  
  236. NUgrid doesn't always win as much, but it is always less sensitive to picking
  237. the "right" grid resolution.
  238.  
  239. [I would like to see how these results compare to two level gridding (i.e.
  240. complicated objects get their own grid - see next article).  An automatic way
  241. to implement this is if a box contains more than so many items, nest a gridded
  242. box in it.  This is one of David Jevans & Brian Wyvill's ideas in "Adaptive
  243. Voxel Subdivision for Ray Tracing," Proceedings of Graphics Interface '89, and
  244. has evidently been used by Alias Inc, to good effect.  I wish some Rayshade
  245. hacker would go and implement this method (hint hint). - EAH]
  246.  
  247. [Mike wrote about some interesting new results he's found that's made NuGrid
  248. even faster; hopefully more about these in the next issue. - EAH]
  249.  
  250. -------------------------------------------------------------------------------
  251.  
  252. Recursive Ray Traversal, by Erik Jansen and Wim de Leeuw
  253.     (fwj@dutidh.tudelft.nl), TU Delft
  254.  
  255. Spatial subdivision for ray tracing has been a popular subject over the last
  256. decade, but unfortunately even after all these years there is still a lot of
  257. confusion about what can be considered the best spatial subdivision method
  258. (grid or adaptive) and the best ray traversal method (sequential, bottom-up, or
  259. recursive-top-down).  Regularly, papers appear with a comparison between a
  260. 'new' (read:  a small variation on an existing) method and a standard (read:
  261. naive) method, being always favourable for the first one.
  262.  
  263. In the mid eighties I did some experiments comparing a sequential ray
  264. traversal with a recursive ray traversal for an adaptive spatial subdivision
  265. (Excell).  See also the discussion in the RTnews issues of March 26, 1988, Jim
  266. Arvo:  Linear-time voxel walking for BSP and April 7, 1988, Erik Jansen:  Re:
  267. Linear-time voxel walking for BSP.  I did not found a clear difference in
  268. performance between the two methods (of course the Excell spatial directory is
  269. an efficient index, not requiring any tree traversal), as reported in the
  270. above mentioned issues of RTnews.
  271.  
  272. Nevertheless, papers are still appearing in conferences and journals that
  273. either prove that recursive traversal is performing worse than a newly
  274. proposed method or performing better in those cases where it is proposed as a
  275. 'new' method.  This is reason enough to do a new comparison.
  276.  
  277. As part of a master's thesis project Wim de Leeuw first did some experiments
  278. with recursive traversal on an adaptive binary space subdivision, comparing it
  279. with the DDAOCT algorithm of Kelvin Sung (Eurographics'91).  The DDAOCT did
  280. certainly not do better than the recursive method.  Furthermore the DDAOCT
  281. method is very sensitive to the size of the hashtable.
  282.  
  283. Secondly, the recursive traversal/adaptive subdivision algorithm was
  284. implemented in Rayshade, a very fast ray tracer using a sequential grid
  285. traversal algorithm (see RayShade 4.0 and RayShade timings in RTnews Nov, 20,
  286. 1991).  The uniform grid method of RayShade is very sensitive to the 'teapot
  287. in stadium' problem and therefore RayShade provides a two-level grid option:
  288. a grid for the whole scene and separate grids for complex (sub)objects.  The
  289. adaptive subdivision/recursive ray traversal was implemented with only minor
  290. modifications to RayShade.  The recursive traversal uses a stack and
  291. alternatively halfs the xmin-xmax, ymin-ymax, zmin-zmax ray intervals as
  292. described in RTnews April 7, 1988.
  293.  
  294. Here are the timings for the two/three methods (in seconds on a HP-700):
  295.  
  296. model      grid   grid/subgrid  recursive/bsp
  297.  
  298. balls      942       156        366
  299. gears      977       857       1155
  300. mount      214                  263
  301. rings      307       299        441
  302. teapot     154                  171
  303. tetra       39                   84
  304. tree      2246       134        278
  305. conf.room  283                  269
  306.  
  307. Conf. room is the room by Greg Ward that was converted from Radiance format
  308. to RayShade format.
  309.  
  310. As you see RayShade (with two-level grid) is indeed very fast, mainly because
  311. of the additional raybox test within each cell.  The raybox test is not of
  312. much use in an adaptive subdivision because the cells are already tight
  313. enough.
  314.  
  315. Of course there are always ways to improve the recursive version by making
  316. larger changes to RayShade, for instance by inputting polygons not by their
  317. enclosing box but by their own extent, but that would not really change the
  318. picture, we think.
  319.  
  320. These have been our experiments so far.  The code for the recursive ray
  321. traversal and the model data of the conference room can be obtained from us
  322. (fwj@duticg.tudelft.nl).
  323.  
  324. --------
  325.  
  326. [I received this from Kelvin Sung (ksung@sherman.cs.uiuc.edu) in response.
  327. - EAH]
  328.  
  329. I hope I have pointed this out in comp.graphics, but in [the Eurographics '91]
  330. paper when I say "ARVO", I was referring to Glassner's Tree Coherence (Re:
  331. SIGGRAPH 90 Advance Ray Tracing Course Notes).  It was my mistake.  In that
  332. paper, I did not actually compare DDAOCT with Arvo's linear tree walking or
  333. Eric Jansen's recursive algorithm.  I agree 100% with their claim.  In fact,
  334. after realizing my mistake during the September Eurographics '91 conference,
  335. in November Peter Shirley and I implemented Arvo's linear tree walking
  336. algorithm and tested things out and we realized that linear tree walking is a
  337. better algorithm (independently from Jansen).  We wrote up our experience as a
  338. Gem (which will appear in Graphics Gems III, as "Ray Tracing with the BSP
  339. Tree").
  340.  
  341. [Note that the code for Graphics Gems III is now available on princeton.edu in
  342. pub/Graphics.  The book itself will be out at SIGGRAPH from Academic Press.]
  343.  
  344. -------------------------------------------------------------------------------
  345.  
  346. Ideal Grid/Object Densities, by Dan Gehlhaar, Marc Andreessen
  347.  
  348. [From the Rayshade mailing list]
  349.  
  350. From Dan:
  351.  
  352. I am rendering large protein structures with overlapping reflective spheres.
  353. 'Engridding' the primitives speeds the rendering considerably, as might be
  354. expected for a big conglomerate of 2000 spheres.  My choice of grid size has
  355. been made mostly through trial-and-error, though.
  356.  
  357. So here's my question:  Assuming a near-uniform density of primitives, what
  358. primitive/voxel ratio will result in optimal performance?  Or does it vary a
  359. lot from one case to another?  My trials (however limited) suggest a ratio of
  360. about 4 or 5 primitives/voxel.  Does anyone have any suggestions?
  361.  
  362. From Marc:
  363.  
  364. That's about what I settled on a while back (again through trial and
  365. error), something like a 10x10x10 grid for 5000 spheres.  It would
  366. sure be nice if Rayshade could compute an optimum grid size based on
  367. primitive distribution.
  368.  
  369. -------------------------------------------------------------------------------
  370.  
  371. BVH Traversal Results, by Nicholas Wilt (npw@coos.dartmouth.edu)
  372.  
  373. [excerpts from email by Nicholas]
  374.  
  375. I just finished an undergraduate thesis in ray tracing.  I implemented a
  376. ray tracer in C++ and compared a number of optimization strategies.  I
  377. thought you might be interested in some of the results I ran into.
  378.  
  379.     - Bounding volume hierarchies generated by the technique of Goldsmith and
  380.       Salmon yield huge speedups over naive ray tracing (obviously).  I'd
  381.       guess 10-20X.
  382.  
  383.     - You go slower if you combine with Snyder-Barr ray boxes because the ray
  384.       box rejection rate is small (45%) and you have to recompute the ray box
  385.       every time the ray hits a bounding volume (which is frequently when the
  386.       BVH was generated automatically).
  387.  
  388.     - Kay-Kajiya BVH traversal reduces the number of intersections, but not by
  389.       much in my experience.  In fact, only the Sphereflake image (modified
  390.       from the SPD) saw a big enough reduction for the priority queue to be
  391.       worthwhile.  A 20% reduction in intersections resulted in a <4% speedup
  392.       over the naive traversal.  In the other test images, naive traversal was
  393.       faster.
  394.  
  395. [I asked what "Snyder-Barr" boxes were in this context. -EAH]
  396.  
  397. Snyder-Barr boxes:
  398.  
  399. When you hit a bounding volume, enclose the ray's traversal of the bounding
  400. volume in a "ray box."  This is an axis-aligned bounding box using the two
  401. points where the ray enters and exits the bounding box.  An object cannot
  402. intersect the ray unless its bounding box intersects the ray box.  If the
  403. bounding box for each object is precomputed, it costs you at most six
  404. comparisons to reject the intersection, or after six comparisons you have to
  405. do the intersection calculation after all.  And since most ray boxes only
  406. enclose a small fraction of the bounding box's volume, the rejection rate
  407. should be high.
  408.  
  409. Also, if you find an intersection you can make the ray box smaller ("restrict"
  410. it?)  because you know that a closer intersection isn't going to be found
  411. beyond the one you just found.  This is done using the ray's direction
  412. cosines.
  413.  
  414. If you have a super-naive BVH (example:  one root bounding volume), this works
  415. great.  The ray hits the root, you enclose its traversal of the root bounding
  416. volume in a ray box.  The ray box encloses a tiny fraction of the root
  417. bounding volume, so you get 95-99% rejection rate, i.e.  almost all
  418. intersection calculations end after <=6 comparisons.  The problem is that it
  419. doesn't reduce the number of intersection tests, just makes them a lot
  420. cheaper, so using a G-S hierarchy is much better.  And when you combine the
  421. two, you hit so many bounding boxes (which requires you to compute the points
  422. where the ray enters and exits the bounding box, then do a bunch of
  423. comparisons so the ray box is defined by min/max vectors) that it's not worth
  424. the trouble.
  425.  
  426. -------------------------------------------------------------------------------
  427.  
  428. Ray Tracing Roundup, by Eric Haines
  429.  
  430. This column is meant to quickly summarize new versions, features, and tools
  431. available for various ray tracers and related products.
  432.  
  433.  
  434. TTDDD:  these programs convert 3D objects in the binary TTDDD format into
  435. either OFF, NFF, Rayshade, or vort format.  There is also a Postscript object
  436. viewer (very handy - I can quickly preview objects using GhostScript), and it
  437. also outputs Framemaker MIF files.  These programs are SHAREWARE.  Registered
  438. users also get code to automatically convert text strings into 3D objects
  439. using any TeX font.  This package and many objects are available at
  440. wuarchive.wustl.edu, in /graphics/graphics/objects/TDDD.  Some of the objects
  441. are excellent:  one of my favorite test objects is the Star Wars "Imperial
  442. Scout Walker."  Contact Glenn Lewis (glewis@pcocd2.intel.com).
  443.  
  444. There are a number of new VORT input files from Italy.  (Contact Alessandro
  445. Villani (raytr@astrpi.difi.unipi.it)).  They are available for anonymous ftp:
  446.  
  447.     pub/contrib/artscenes/room.tar.Z on gondwana.ecr.mu.oz.au (128.250.1.63)
  448.     pub/graphics/room.tar.Z on munnari.oz.au (128.250.1.21)
  449.  
  450. The models are mainly objects in a room:  clock, ashtray, bed, lights,
  451. television, etc.  Contact Eric H. Echidna (echidna@ecr.mu.oz.au)
  452.  
  453. RayShade is now in version 4.0.6 at princeton.edu:pub/Graphics.  There is an
  454. active, helpful mailing list for this group - contact
  455. rayshade-request@cs.princeton.edu to get put on it.
  456.  
  457. Inetray is a network version for running Rayshade 4.0.  FTP it from
  458. maggia.ethz.ch (directory pub/inetray).  It allows parallel calculation of
  459. rayshade pictures for multiprocessing machines and over a network of machines.
  460. You need SUN RPC 4.0 or newer.  Contact Andreas Thurnherr (ant@ips.id.ethz.ch)
  461. for more information.
  462.  
  463. There is an X window fonts converter into Rayshade 3.0 polygons, by Ron Sass
  464. (sass@cps.msu.edu).  Anonymous ftp from acs.cps.msu.edu in the file
  465. pub/sass/gentxt.c.  There is also a tool for Rayshade animation here.
  466.  
  467. The code for a recursive ray traversal efficiency scheme for RayShade and the
  468. model data of Greg Ward's conference room can be obtained from Erik Jansen
  469. (fwj@duticg.tudelft.nl).  Hopefully this will be made available via FTP some
  470. time soon.  See the related article in this issue.
  471.  
  472. Radiance is going great guns.  There's now even an Amiga port of Radiance 2.0.
  473. Check hobbes.lbl.gov (128.3.12.38) /pub/ports/amiga or osgiliath.id.dth.dk
  474. (129.142.65.24) /pub/amiga/graphics/Radiance.  Contact Per Bojsen
  475. (bojsen@ithil.id.dth.dk).
  476.  
  477. The IRIT solid modeler 3.0 is now available at an ftp site near you, e.g.
  478. ftp.uu.net (192.48.96.2):/graphics/irit, among others.  This is an X-based CSG
  479. modeller which now includes freeform surfaces, and it runs on a large number
  480. of platforms.
  481.  
  482. At asterix.inescn.pt [192.35.246.17] is a ray tracer by Antonio Costa.  I
  483. haven't played with it, but it evidently renders bicubic patches and other
  484. interesting things.
  485.  
  486. POV (aka Son of DKBTrace, done by people on CompuServe) still seems to be in
  487. beta test or somesuch.
  488.  
  489. Studio Amiga is a 3D modelling and ray tracing specific BBS, (817) 467-3658.
  490. 24 hours, 105 Meg online.
  491.  
  492. The Utah Raster Toolkit version 3.1 should be out of testing some time after
  493. SIGGRAPH.  There are a number of bug fixes and so on - worth getting if you
  494. use it.  Harass Spencer Thomas for when it'll be out (spencer@med.umich.edu)
  495.  
  496. If you are interested in Greg Turk's work on reaction-diffusion textures
  497. (SIGGRAPH '91), he's placed C code for generating these in the anonymous ftp
  498. directory at UNC.  Connect to ftp.cs.unc.edu and grab the files in the
  499. directory pub/reaction_diffusion.
  500.  
  501. Greg notes an implementation detail accidentally left out of the paper:  The
  502. value of chemical "b" should not be allowed to go below zero.  While I'm on
  503. the subject, I noticed a minor typo in the Witkin/Kass paper on the topic:
  504. the center term in equation four should be "-4 * a^2 - h^2 * b".  Also, their
  505. reference #2 has incorrect page numbers - should be 363-385.
  506.  
  507. Graphics Gems III code is available via anonymous FTP at princeton.edu in
  508. /pub/Graphics/GraphicsGems/GemsIII.  Have fun puzzling it out (since the book
  509. itself is not out quite yet).  There are some nice bits, like Ben Trumbore's
  510. bounding volumes (I *think* I know what he's doing...) and Kelvin Sung's new
  511. BSP code.
  512.  
  513. -------------------------------------------------------------------------------
  514.  
  515. Mail Based 3D File Server, by Bob Lindabury (lightwave-admin@bobsbox.rent.com)
  516.  
  517. A mail based file server for 3D objects, 24bit JPEG images, GIF images
  518. and image maps is now online for all those with Internet mail access.
  519.  
  520. The server is the official archive site for the Lightwave 3D mail-list.
  521.  
  522. Besides the above mentioned image-based files, the server contains many
  523. PD and Shareware graphics utilities for several computer platforms
  524. including Amiga, IBM and Macintosh.
  525.  
  526. Some samples include:
  527.  
  528. DKBTRACE    - Raytracer for IBM, Amiga and Mac
  529. RAYSHADE    - Raytracer for the Mac
  530. QRT        - Raytracer for IBM, Amiga and Mac
  531. [...]
  532. Objects     - Objects for Imagine, Videoscape, Lightwave and others
  533. Demos        - ImageCels, Caligari, Autodesk 3D Studio and others
  534.  
  535. Plus much more!  And many more to come!
  536.  
  537. The server resides on my BBS called "The Graphics BBS".  The BBS is
  538. operational 24 hours a day 7 days a week at the phone number of +1
  539. 908/469-0049.  It utilizes a Hayes V-Series 9600 V.42 modem. (soon to
  540. upgrade to a V.32 modem)
  541.  
  542. If you would like to submit objects, scenes or images to the server,
  543. please pack, uuencode and then mail the files to the address:
  544.  
  545.     server@bobsbox.rent.com
  546.  
  547. For information on obtaining files from the server send a mail message
  548. to the address:
  549.  
  550.     file-server@graphics.rent.com
  551.  
  552. with the following in the body of the message:
  553.  
  554. HELP
  555. /DIR
  556.  
  557. and a help file describing how to use the server and a complete
  558. directory listing will be sent to you via mail.
  559.  
  560. -------------------------------------------------------------------------------
  561.  
  562. Imagine That, by Steve Worley (worley@cup.portal.com)
  563.  
  564. Imagine is a commercial program that runs on Amiga computers which is in
  565. the process of being ported to SGI's.  It has a complete modeller,
  566. layout editor, and renderer built in, and is one of the two most popular
  567. 3D programs on that platform.
  568.  
  569. I actually use it since I do a lot of mathematical/parametric modelling using
  570. C code.  Since I have an Amiga at home and a Sun at work, I can output
  571. rayshade objects and render them at work, or Imagine objects and render them
  572. at home; very convenient.  In fact, I got started with parametric modelling
  573. about a year and a half ago by tearing apart your "tree" program you wrote for
  574. the SPD package; now I'm working on exploding objects, and breaking them in
  575. "reasonable" places when they are subjected to stress.  Lots of fun!  I also
  576. worked with Glenn to try to produce an algorithm to morph different objects
  577. into one another.  It wasn't a dismal failure, but it is nothing I want to try
  578. to sell to ILM...  I also enjoy playing with building new Perlin-style solid
  579. textures.  That's ALWAYS a lot of fun.
  580.  
  581. -------------------------------------------------------------------------------
  582.  
  583. Correct Roots for Torus Intersection, by Haakan "Zap" Andersson
  584.     (zap@lage.lysator.liu.se)
  585.  
  586. When using the torii-intersector you gave me [I sent the code from Graphics
  587. Gems II, Joseph Cychosz's torus intersector, I believe.  - EAH], we have the
  588. trouble of getting the wrong side when rmajor < rminor and above all when
  589. rmajor < 0, which are both quite valid and well defined torii shapes.
  590.  
  591. Ok, here's what you do:
  592.  
  593. Check if rmajor > rminor.
  594.  
  595. If so, hit is OK as is.
  596.  
  597. If not, calculate the distance between the hit you got and torus center.
  598. We will be needing the distance SQUARED, so no need for a square root.
  599. Put the distance squared in variable SqrDist.
  600.  
  601. If rmajor < rminor && rmajor > 0
  602.    if SqrDist < (rminor*rminor - rmajor*rmajor)
  603.       then discard the hit, it's on the wrong surface.
  604. If rmajor < rminor && rmajor < 0
  605.    if SqrDist > (rminor*rminor - rmajor*rmajor)
  606.       then discard the hit, it's on the wrong surface.
  607.  
  608. Voila!
  609.  
  610. --------
  611.  
  612. Joe Cychosz (3ksnn64@ecn.purdue.edu) responds:
  613.  
  614. I did test the case where the torus was degenerate, however I did not
  615. consider the application sense of it not really being a wanted surface.
  616. I will study this further and incorporate your suggestion.
  617.  
  618. Also, not include in the GEM is the following code which compensates for
  619. the order of the roots being transposed.  I didn't include it since it
  620. would make the GEM dependent on the behaviour of the root solver.
  621.  
  622. Insert after the call to SolveQuartic:
  623.  
  624. /*    SolveQuartic returns root pairs in reversed order.        */
  625.     if  ( *nhits > 1 )
  626.         m = rhits[0]; u = rhits[1]; rhits[0] = u; rhits[1] = m;
  627.     if  ( *nhits > 3 )
  628.         m = rhits[2]; u = rhits[3]; rhits[2] = u; rhits[3] = m;
  629.  
  630. -------------------------------------------------------------------------------
  631.  
  632. Information on Taos Parallel Processor, by Paul Wain (ee89psw@brunel.ac.uk)
  633.  
  634. [edited from bits and pieces by Paul. - EAH]
  635.  
  636. I am after any info on the Taos parallel processor raytracing stuff.
  637.  
  638.     The reason I sat up and paid attention when I read about Taos was only
  639. because of the way it handles code from a programmer's point of view.
  640.  
  641.     Apparently it doesn't link the program at the compilation stage but
  642. rather downloads the objects as and when they are needed, and destroys them as
  643. they are finished with (how quickly depends on their priority).  Also, if one
  644. branch calls an object which is already resident on another node rather than
  645. load dwon from the data store it loads in from the other node.
  646.  
  647.     Also, the programmer doesn't need to allocate them to the nodes and
  648. ensure that all the node loads are balanced.  Indeed Taos does this for the
  649. programmer to supposedly ensure optimum performance.
  650.  
  651.     It can apparently do a 790x400 24bpp colour raytrace on
  652. 256 compound objects in under 15 minutes. And supposedly a 50x50 array of em
  653. can do real-time raytracing....
  654.  
  655. -------------------------------------------------------------------------------
  656.  
  657. The Glazing Trick, by Haakan "Zap" Andersson (zap@lage.lysator.liu.se)
  658.  
  659. [This is an excerpt from a longer document by Zap - more later.  It's one of
  660. those tricks that many people know, but if you don't know it then it's worth
  661. knowing.  Or something. - EAH]
  662.  
  663.    Next "bad" thing with standard Phong is the inability to get really shiny
  664. surfaces.  Pumping up the specular exponent makes the shiny spot SMALLER, not
  665. (as it should) SHARPER.  So it might look pretty shiny on a sphere, but use it
  666. on a cube, the chance of you ever SEEING that tiny little specular spot is
  667. very small, unless the light is positioned just right in respect to the viewer
  668. and some cube surface.
  669.  
  670.    There is a nice and simple trick for this, used frequently by Pixar in
  671. their little movies:  You simply threshold the specular light instead of
  672. feeding it directly to the output light.  Let's assume we have a function
  673. similar to the Renderman (tm) function SmoothStep() that work like this:
  674.  
  675.     Smoothstep(a,b,x)
  676.  
  677.     if (x < a) return 0.0;
  678.     if (x > b) return 1.0;
  679.     if  (x  >  a and x < b) return a smooth gradation between 0.0 and
  680.                 1.0 (Pixar uses a hermite spline I think)
  681.  
  682.   Then let our "all new" specular highlight be...
  683.  
  684.   OLD specular formula: Ks * (cos b ^ Ke)
  685.  
  686.   NEW specular formula: Ks * SmoothStep(0.4,0.5,cos b ^ Ke)
  687.  
  688.   ...where the numbers (here 0.4 and 0.5) could be anything you wish.  This
  689. gives the surface a "glazed" appearance and may be useful modelling glass and
  690. similar.
  691.  
  692. -------------------------------------------------------------------------------
  693.  
  694. Bug in Ray-Convex Polyhedron Intersector in Graphics Gems II, by Eric Haines
  695.  
  696. This bug was found by Peter Flatau.  The test for my polyhedron intersector
  697. was (p. 576, middle of the page):
  698.  
  699.     if ( t < 0.0 ) return ( MISSED ) ;
  700.     if ( t < tfar ) {
  701.         /* hit near face, update normal */
  702.  
  703. It should be:
  704.  
  705.     if ( t < tnear ) return ( MISSED ) ;        <-- 0.0 to tnear
  706.     if ( t < tfar ) {
  707.         /* hit far face, update normal */        <-- near to far
  708.  
  709.  
  710.     Also, the text in Graphics Gems II has the same bug.  The last
  711. sentence on page 249 should be:
  712.  
  713.     "If the compute t is less than tnear, then the polyhedron is ..."
  714.                        ^
  715.                        +--was "0"
  716.  
  717. -------------------------------------------------------------------------------
  718. END OF RTNEWS
  719.  
  720.  
  721.