home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 8 / CDASC08.ISO / NEWS / 1658 / RTNEWS / RTNV6N2
Internet Message Format  |  1993-10-07  |  59KB

  1. From: erich@eye.com (Eric Haines)
  2. Date: Thu, 1 Jul 93 16:26:57 GMT
  3. Organization: 3D/EYE, Inc. Ithaca, NY
  4. Message-ID: <1993Jul1.122657.27332@eye.com>
  5. Newsgroups: comp.graphics
  6.  
  7.  
  8.  _ __                 ______                         _ __
  9. ' )  )                  /                           ' )  )
  10.  /--' __.  __  ,     --/ __  __.  _. o ____  _,      /  / _  , , , _
  11. /  \_(_/|_/ (_/_    (_/ / (_(_/|_(__<_/ / <_(_)_    /  (_</_(_(_/_/_)_
  12.              /                               /|
  13.             '                               |/
  14.  
  15.                         "Light Makes Right"
  16.  
  17.                            July 1, 1993
  18.                         Volume 6, Number 2
  19.  
  20. Compiled by Eric Haines, 3D/Eye Inc, 2359 Triphammer Rd, Ithaca, NY 14850
  21.         erich@eye.com
  22. All contents are copyright (c) 1993 by the individual authors
  23. Archive locations: anonymous FTP at princeton.edu (128.112.128.1)
  24.         /pub/Graphics/RTNews, wuarchive.wustl.edu:/graphics/graphics/RTNews,
  25.         and many others.
  26.  
  27. Contents:
  28.     Introduction
  29.     New People
  30.     Ray Tracer Races, Round 2, by Eric Haines
  31.     Simple, Fast Triangle Intersection, part II, by John Spackman
  32.     Review: _Photorealism and Ray Tracing in C_ (and others), by Eric Haines
  33.     Comments on Various Ray Tracing Speedups, by Andrew Woo (awoo@alias.com)
  34.     Errata to _Photorealism and Ray Tracing in C_, compiled by Eric Haines
  35.     InterChange Plus Model/Texture Data CD-ROM, by John Foust
  36.     Ray Tracing Roundup
  37.     ==== Net cullings follow ===============================================
  38.     Re: Intersection Between a Line and a Polygon (UNDECIDABLE??), by Allen B
  39.     Obfuscated Postscript Ray Tracer, by Takashi Hayakawa
  40.  
  41. -------------------------------------------------------------------------------
  42.  
  43. Introduction
  44.  
  45. Ugh, what a backlog!  I've tried for a month to find time to catch up with the
  46. deluge but seem to be running on a treadmill (so how many mixed metaphors is
  47. that?).  Anyway, I'm going to put out what I've got - think of this issue as
  48. coming out in April.  The "Roundup" is huge, I tried to whittle what I could,
  49. but there's been a lot of activity out there.
  50.  
  51. SIGGRAPH:  yes, there will be another gathering of the clans, i.e. the
  52. seventh meeting of the Ray Tracing Roundtable.  Sounds impressive?  Well, it's
  53. simply an excuse to have a chance to meet other people interested in ray
  54. tracing and put names to faces.  As usual, I'll give a brief intro, people go
  55. around the room and briefly introduce themselves, then we split up and talk
  56. about whatever.  This year we'll meet as a Birds of a Feather group (BOF), so
  57. look at the BOF sign at Registration for what room we're in.  I plan on a 5:15
  58. pm meeting on Thursday after the papers.  By the way, we're not a SIG this
  59. year because SIGGRAPH is charging $100 or so for setup/cleanup fees or
  60. somesuch from SIGs, but BOFs still seem to be free.
  61.  
  62. ----
  63.  
  64. So who invented ray tracing?  Most people will say Appel in 1968, though
  65. twelve years later Whitted did the paper that brought it all together,
  66. and Doug Kay also was working along similar lines at the time.  On the net the
  67. idea was floated that ray tracing came out of nuclear weapon testing.  True,
  68. rays were used in simulations, but this would be called ray casting at best -
  69. it was not used to render realistic images.  By the same logic, explorers of
  70. analytic geometry and ray/object intersections could be considered the
  71. inventors.  Watt and Watt propose that Descartes was one of the first ray
  72. tracers because of his analysis of the rainbow.  By widening the definition of
  73. ray tracing even more, it's maintained that Durer or one of his contemporaries
  74. was the inventor of ray tracing (you know, all those frustum and vanishing
  75. point drawings from around the Renaissance).
  76.  
  77. This question does bring up another that's a bit more profound:  would
  78. computer science have any existence without computers?  Some universities with
  79. a strong theory department would have us believe that computers are irrelevant
  80. to computer science.  Sure, there was Boolean logic and finite math before
  81. computers, but it's interesting to contemplate how much (data structures,
  82. sorting, networks, languages, you name it...) would not exist if there was no
  83. hardware to make the theory have a point to it.  Computer science would be a
  84. disparate set specialities in mathematics and nothing more.  A lot of computer
  85. graphics would go away, with some linear algebra and analytic geometry being
  86. all that would be of interest.  Certainly the idea of figuring out a pixel's
  87. color would be up there with figuring out the next decimal place of pi as far
  88. as usefulness went.  What would people have thought of Foley & Van Dam &
  89. Feiner & Hughes _Computer Graphics_ if it were sent back 50 years?
  90.  
  91. Anyway, I like the answer that Appel invented ray tracing, then rightly
  92. ignored it as too expensive for the computers of 1968.
  93.  
  94. -------------------------------------------------------------------------------
  95.  
  96. New People
  97.  
  98. # John Foust
  99. # Syndesis Corporation
  100. # PO Box 65
  101. # 235 South Main St
  102. # Jefferson, WI 53549
  103. # (414) 674-5200
  104. # (414) 674-6363 FAX
  105.  
  106. Syndesis Corporation makes InterChange Plus, a system of translators for
  107. exchanging data between 3D modeling programs such as AutoCAD DXF, Wavefront,
  108. Imagine, LightWave, 3D Studio and many others (see announcement in this
  109. issue).
  110.  
  111. -------------------------------------------------------------------------------
  112.  
  113. Ray Tracer Races, Round 2, by Eric Haines
  114.  
  115. Back in RTNv3n1 I timed Craig Kolb's Rayshade, Mark Vandewettering's MTV, and
  116. my own commercial code against each other.  Three years have passed and many
  117. new ray tracers are out there.  I recently received from Eduard Schwan a
  118. modified SPD package, with new code by Alexander Enzmann and him.  SPD stands
  119. for Standard Procedural Databases, and is a set of programs I created for
  120. testing ray tracer efficiency schemes (available at
  121. princeton.edu:/pub/Graphics and other places).  The modified code allows
  122. output in formats other than NFF, such as POV, Vivid, RTrace, QRT, Rayshade,
  123. etc.  I hope to modify this code a little and distribute it with the next SPD
  124. release.  Since these new formats were now available, I decided to have a race
  125. between the various ray tracers for just raw rendering speed.  I did not
  126. bother with QRT because I couldn't easily find it on the net, it's pretty old,
  127. and it does not have any efficiency speedups (so almost everything will beat
  128. it).
  129.  
  130. I ran all tests on an HP 720 RISC workstation and compiled all ray tracers
  131. with optimized and profiler options.  Instead of using Vivid, I used "Bob",
  132. which is essentially Vivid and which had source code available (unlike Vivid,
  133. I believe).  The source code is in _Photorealism and Ray Tracing in C_ (but
  134. not on the net), reviewed elsewhere in this issue.  Rayshade runs fairly slow
  135. if the user does not take any action to improve efficiency.  However, it is
  136. simple enough to add a spatial subdivision grid to the input data.  I added a
  137. grid of resolution == ceil( cube-root( # of primitives ) ) to each database,
  138. but did not include the ground polygon (if present) to the grid.  POV 1.0 has
  139. minimal efficiency support (user defined bounding boxes) which were too much
  140. work to use, so I avoided these.  Vivid and RTrace both have automatic
  141. efficiency schemes (the only way to go, in my humble opinion).  Vivid/Bob and
  142. RTrace are descendents of MTV's efficiency scheme and use Kay-Kajiya space
  143. sorting to get a bounding volume hierarchy.  Note that if you have Bob, you
  144. should definitely get the errata from wuarchive at
  145. graphics/graphics/books/errata, which has code which makes Bob 5% faster than
  146. the original code.
  147.  
  148. Two sets of tests were done:  one with SPD using a size factor of 1, which
  149. creates databases with from 4 to 147 primitives, the other with the default
  150. size factors, which gives 4000 to 10,000 primitives.
  151.  
  152. Small, level 1 databases (from 4 to 147 primitives), times in seconds:
  153.  
  154.                 balls   gears   mount   rings   teapot  tetra   tree
  155.  
  156. POV 1.0         377.32  31609.4  697.62 1853.09 1103.54  62.74  408.01
  157. Rayshade 4.0.6  140.34   2126.6  143.38  472.45  330.24  32.94  116.18
  158. Rayshade w/grid  98.41    380.2  110.00  111.30  112.84  35.26   85.71
  159. Bob (Vivid)      97.16    733.9   88.67  161.76  141.15  30.72   76.56
  160. RTrace          114.55    867.2  141.96  183.59 (no go)  39.77   93.67
  161.  
  162. Notes:  Something screwy happened with converting cylinders for the rings
  163. database for POV (this is probably the converter's fault, not POV's), so this
  164. database did not render correctly.  The cones for the tree database seemed
  165. weird at the ends, too, though they did render.  RTrace did not render the
  166. teapot at size one as it (reasonably enough) balked when it encountered the
  167. degenerate polygons with (0,0,0) normals.  These polygons have no area (so
  168. can't be seen), but their data is indeed bad.
  169.  
  170. POV and ungridded Rayshade can be compared for raw object intersection speed;
  171. Rayshade wins by 2x or more.  Adding the efficiency grid to Rayshade makes
  172. performance increase by up to 6 times, even with these simple scenes (the
  173. exception is tetra, which has only four primitives, and in which the grid
  174. slows down performance).  Bob edges out RTrace by a little bit (maybe 20%),
  175. and is sometimes better, sometimes worse than gridded Rayshade.  I should
  176. mention that I ran Rayshade with all objects casting opaque shadows so as to
  177. be comparable with POV (and Bob and RTrace, near as I can tell).  True
  178. filtered shadows would take awhile longer to compute for the gears database.
  179.  
  180.  
  181. Default size SPD databases, time in seconds:
  182.  
  183.                 balls   gears   mount   rings   teapot  tetra   tree
  184.  
  185. POV 1.0         191000  1775000 409000  260000   45000   31000  250000
  186. Rayshade w/grid 173.04    326.7  158.22  327.38  133.75  54.43  147.05
  187. Bob (Vivid)     398.83   1060.5  224.79  831.71  245.12  48.42  272.87
  188. RTrace          667.25   1488.6  805.65  (fail)  347.15 156.78  371.39
  189.  
  190. Notes:  The POV times are approximate, made by extrapolating the time for an
  191. 8x8 pixel rendering minus the time for a 1x1 rendering (i.e.  minus file
  192. read-in time).  The record for POV goes to gears, which would take about 3
  193. weeks to render.  RTrace had a "runtime - too many SURFACES" on rings and so
  194. did not render it.
  195.  
  196. If you were off the planet for the past decade and didn't think efficiency
  197. schemes would gain you much, these timings would change your mind.  Since POV
  198. 1.0 doesn't have any efficiency scheme, its speed is a tad slow.  A good grid
  199. makes Rayshade run like a speed demon, outperforming almost everything every
  200. time.  Bob outperforms RTrace by a higher margin at this point.
  201.  
  202. Conclusions:  If you are willing to get your hands a little dirty with setting
  203. up the gridding, use Rayshade (I hope Craig will make gridding default in the
  204. next version).  For painless rendering, Bob/Vivid is good, though RTrace is in
  205. the running and supports some interesting primitives and all sorts of other
  206. support (see the Roundup in this issue).  POV is fun but slow.  The good news
  207. is that version 2.0 of POV will have automatic efficiency generation and will
  208. be out in a few months.  It will also fix a shading bug I noticed (strange
  209. bright lines at the light silhouette edges of shiny spheres).  In the meantime
  210. you can add bounding boxes by hand if you want (ugh) - it does make a
  211. significant difference in speed.
  212.  
  213. If anyone else has filters for SPD output for ART or any other competitors,
  214. please do pass them on to me and I'll give them a whirl.
  215.  
  216. -------------------------------------------------------------------------------
  217.  
  218. Simple, Fast Triangle Intersection, part II, by John Spackman
  219.         (spackman@lightwork.co.uk)
  220.  
  221. [This is in response to last issue's article by Chris Green, Steve Worley and
  222. myself on half-plane testing for the inside-outside test for ray tracing
  223. triangles.  John has a good illustration for what the barycentric coordinates
  224. mean - EAH]
  225.  
  226. When the maths are boiled away, the barycentric test IS the half plane test -
  227. with the extra advantage that the half plane 'heights' values are
  228. normalised
  229.  
  230.  o to the range [0,1] over the triangle's extent.
  231.  o to sum to 1 within the triangles supporting plane [ good for interpolation ]
  232.  
  233. Taking a barycentric [alpha,beta,gamma] coordinate system for the triangle T:-
  234.  
  235.  
  236.  
  237.                          beta=0
  238.                             \              gamma=0
  239.          beta=1              \            /
  240.                 \             \          /             gamma=1
  241.                  \             \        /             /
  242.                   \             \      /             /
  243.                    \             \    /             /
  244.                     \             \A /             /
  245.   alpha=1 ___________\_____________\/_____________/________________
  246.                       \            /\            /
  247.                        \          /TT\          /
  248.                         \        /TTTT\        /
  249.                          \      /TTTTTT\      /
  250.                           \    /TTTTTTTT\    /
  251.   alpha=0                  \  /TTTTTTTTTT\  /
  252.    _________________________\/____________\/_______________________
  253.                            B/\            /\C
  254.                            /  \          /  \
  255.                           /    \        /    \
  256.                          /      \      /      \
  257.                         /        \    /        \
  258.                        /          \  /          \
  259.                       /            \/            \
  260.  
  261.  
  262.    T = { [alpha,beta,gamma] :  alpha>0,beta>0,gamma>0 }
  263.  
  264.    eg: A = [1,0,0], B=[0,1,0], C=[0,0,1]
  265.  
  266. Notice that 'alpha' is simply height above the 'alpha=0' half-space plane
  267.              'beta' is simply height above the  'beta=0' half-space plane
  268.             'gamma' is simply height above the 'gamma=0' half-space plane
  269.  
  270.      In effect, the triangle is simply the intersection of [0,1] slabs
  271. in alpha, beta and gamma.
  272.  
  273. Of course, it is true that taking [alpha,beta,gamma] over a projected 2D
  274. space may be faster than in full 3D space - but that's something else again.
  275.  
  276. [in a later note:]
  277. With the Half-spaces you only get an early get-out if alpha < 0.0.
  278.  
  279. With the Barycentric coordinates, you get an early get-out if alpha < 0.0
  280.                                                            OR alpha > 1.0.
  281.  
  282. In other words, the former regards a triangle as an intersection of singly
  283. bounded three half spaces, whereas the second regards a triangle as an
  284. intersection of doubly bounded slabs.
  285.  
  286. --------
  287.  
  288. John also points out:
  289.  
  290. But the half space test is just a homogeneous dot-product:-
  291.  
  292.         height = [x,y,z,1] . [s,t,u,v]
  293.  
  294. for the plane with outward normal [s,t,u] displaced at distance v from the
  295. origin in this direction.
  296.  
  297. Therefore
  298.  
  299.         height = [x,y,z,1] . [s,t,u,v]
  300.         -----    --------------------
  301.         normalise       normalise
  302.  
  303.  
  304.                = [x,y,z,1] . [s',t',u',v']
  305.  
  306.         where s' = s / normalise
  307.               t' = t / normalise
  308.               u' = u / normalise
  309.               v' = v / normalise
  310.  
  311. is the same as the Barycentric test.
  312.  
  313. So just store [s',t',u',v'] instead of [s,t,u,v].  All normalisation is then
  314. precomputed, the Barycentric test becomes as cheap as the half space test, and
  315. the Limeys have saved the world again.
  316.  
  317. --------
  318.  
  319. Eric Haines replies:
  320.  
  321. True that you get an early out with the bounding slab, and I thought this
  322. would be a big win.  [I included a lot of statistics here, which basically
  323. come up with the result that the two tests are pretty similar in performance
  324. under a variety of conditions.  I will not bore you with the minutiae...
  325. However, doing the precomputation is certainly a win, vs. using the straight
  326. barycentric test (see RTNv5n3 for code).]
  327.  
  328. ----
  329.  
  330. One interesting speedup that Steve Worley and I discussed for Chris Green's
  331. method is sorting the edges of each triangle by its length.  Longer triangles
  332. will tend to cut larger parts of the area of the bounding box surrounding the
  333. triangle away, and so will cause earlier rejections of points outside the
  334. triangle.  The long and short of it was that this trick indeed decreases
  335. overall testing time in general and is simple to add to the preprocess for
  336. creating triangle half-plane sets.  Steve points out that just getting the
  337. longest edge first should help a fair bit and be an even faster preprocess,
  338. though I did find that the full sort helped a tad more.
  339.  
  340. Sorting the two edges touching the anchor vertex for the Barycentric test
  341. helps a bit, too.
  342.  
  343. Some interesting related sorting possibilities exist for convex polygon
  344. testing.  If the triangle test is used, then the largest triangles should be
  345. tested first in order to maximize the chance of an early hit.  If the exterior
  346. edge test (test the point against all edges; if it is outside any edge then
  347. you are done) is used then there is an optimal ordering of edges to test in
  348. order to cut off the maximum amount of area per edge tested.  Getting this
  349. optimal ordering looks like an NP-complete kind of a problem, though.  This is
  350. pretty surprising, given that the problem appears fairly simple on the face of
  351. it.
  352.  
  353. -------------------------------------------------------------------------------
  354.  
  355. Review: _Photorealism and Ray Tracing in C_ (and others), by Eric Haines
  356.  
  357. _Photorealism and Ray Tracing in C_ is by Christopher Watkins, Stephen Coy,
  358. and Mark Finlay.  It's available through M&T Books in paperback and comes with
  359. two PC 5 1/4" HD disks of code and data.  482 pages, 48 color plates, $44.95,
  360. ISBN 1-55851-247-0.
  361.  
  362. This book discusses most facets of ray tracing with a hands on perspective.
  363. There are many code fragments scattered throughout, along with a fully
  364. functional ray tracer, Bob, which is a descendant of Vivid.  A simple modeler
  365. and a back end to dither and display images on a PC are also provided.  Though
  366. the code is PC oriented, I had very little difficulty compiling the ray tracer
  367. on my UNIX workstation.  Not a lot of space of the book is devoted to PC
  368. specific topics, maybe 40 pages.
  369.  
  370. The disks include polygon models for a human skull, an egyptian mummy head, a
  371. human face, a heart, a duck, a column, Venus de Milo, some cars, chess pieces,
  372. and other objects.  There are also a bunch of little programs which generate
  373. various procedural models which are enjoyable in their own right.  Also
  374. included are some texture maps.
  375.  
  376. The basics are covered along with some additional topics such as procedural
  377. modeling, color and bump texturing, depth of field effects, soft shadows,
  378. height fields, and others.  There is not much heavy theory presented, as the
  379. book strives to teach the lone hobbyist or student without risking losing
  380. them.  The color plates are a good mixture of educational and just for fun
  381. images, and some of the renderings are excellent.  I believe the data to
  382. render all of the plates is present on the disks.
  383.  
  384. There are a few shortcomings with the book.  One is common to many computer
  385. paperbacks, that of listing pages and pages of uninterrupted code.  This book
  386. is nowhere near the worst offender I've seen, but there are a fair number of
  387. pages of code which have little reason for being on the printed page (e.g.
  388. does anyone really want to read noise function code?).  Sampling every 20th
  389. page (20,40,60...) of the book and seeing what was there, I found 11 out of
  390. the 24 pages were code - a fairly high ratio.  This translates to about 220
  391. pages of code.  Some is useful to publish, the rest is just bulk.
  392.  
  393. Another problem which is more serious is non-standard terminology.  The ones
  394. I noticed:
  395.     - height fields are referred to as "z-buffers".
  396.     - the translation factors in a 4x4 matrix are presented in the first
  397.         column, with W in the top row, instead of last row/column.
  398.     - the function to transform normals, trans_normal(), works, but using the
  399.         transpose of the inverse of the matrix would be faster and more
  400.         readable.
  401. An errata listing for this book is included elsewhere in this issue, and the
  402. most current listing is kept at wuarchive.wustl.edu:graphics/graphics/books.
  403.  
  404. I was dismayed to see under "Where to Now?", a section at the very end of the
  405. book, that the only books listed as places to go next were those sold by M&T
  406. Books.  However, at least there were references to some related papers and
  407. books (though beware of typoes) in the Bibliography.  There are some other
  408. minor problems, but the book seems pretty solid otherwise.  Stephen Coy sent
  409. me a list of corrections which I will try to edit up and get put in the
  410. graphics book errata area at wuarchive.
  411.  
  412. If you wish to understand the basics of ray tracing and quickly get a ray
  413. tracer going on your machine, consider getting this book.  Of the "disk in the
  414. back" trade books out there, this one is reasonable in its approach and covers
  415. a wide range of topics.  From what I can tell, it seems to be the best "with
  416. code" book currently on the market.  BOB/VIVID is the fastest "free" (well,
  417. you have to get the book if you want the source) ray tracer available today
  418. (Rayshade datafiles can be tweaked to be made faster, but this involves
  419. sometimes complicated user intervention).
  420.  
  421. There are a few other trade books on ray tracing.  Roger T. Stevens' _Fractal
  422. Programming and Ray Tracing with C++_ is fairly old and nowhere near as good
  423. (see RTNv4n2 for a brief, scathing review).
  424.  
  425. A book I have not had the opportunity to read (i.e. I don't want to fork
  426. out $$$ for it...) is Craig Lindley's _Practical Ray Tracing in C_ (around
  427. $49.95) from Wiley, which has a disk of software for DKB Trace, the ancestor
  428. of POV.  What little I glanced at was not quite right.  For example, someone
  429. pointed out his ray definition is a little odd.  Indeed, he says the "t" in
  430. point = origin + t * direction stands for "time".  Not really, it's just a
  431. parameter and it certainly does not stand for time (unless your name is
  432. Ping-Kang Hsiung and you're doing relativistic ray tracing).
  433.  
  434. I also have not seen the book _The Image Lab_ from Waite Group Press, so
  435. cannot say much about it.  This book is a collection of shareware/freeware
  436. programs such as the POV ray tracer, the PICLAB image processing program,
  437. CSHOW for viewing graphics files, IMPROCES super VGA paint program, and Image
  438. Alchemy image converter (all of these programs can be found on the net).  It
  439. seems unlikely that the book has much of a chance to go into any detail about
  440. POV's basis given the number of programs included.  As an aside, Bob is faster
  441. than the current POV 1.0 and does not show any serious rendering bugs (see the
  442. timings test article in this issue).
  443.  
  444. For more advanced or textbook type material, there are a few good choices,
  445. though none have any code provided with them.  _An Introduction to Ray
  446. Tracing_ by Glassner et al (including myself) is a bit old but still a
  447. comprehensive overview of the theory, though it is a little disjoint at times
  448. and weak in some areas of interest (e.g.  texture mapping).  I should mention
  449. this book is now in its fourth printing and all the typos and mistakes we know
  450. about have been corrected.
  451.  
  452. Watt & Watt's new book, _Advanced Rendering and Animation Techniques:  Theory
  453. and Practice_, is a good unified guide to advanced rendering in general and I
  454. highly recommend it.  Think of it as a condensed and simplified "Best of
  455. SIGGRAPH" for the past decade and you won't be too far wrong.  I hope to
  456. review it next issue.
  457.  
  458. Foley and Van Dam and Feiner and Hughes' _Computer Graphics_ includes an
  459. overview of ray tracing, if you don't feel like learning too much; other
  460. recent textbooks also include summaries of the algorithms involved.
  461.  
  462. -------------------------------------------------------------------------------
  463.  
  464. Comments on Various Ray Tracing Speedups, by Andrew Woo (awoo@alias.com)
  465.  
  466. With respect to Steve Worley's speedup idea with multiple grid orientations
  467. ["An Easily Implemented Ray Tracing Speedup", RTN v.6 n.1]
  468.  
  469. Our raytracer at Alias raytraces in eye-space (i.e. eye is at (0,0,0),
  470. staring perpendicularly into the scene), Andrew Pearce did this to be
  471. consistent with our non-raytrace renderers.  This requires an initial
  472. transform of everything at the beginning (lights, geometry, etc).  However,
  473. this has turned out to be quite advantageous for our raytracer.
  474.  
  475. Working in eye-space means that most of our primary rays will benefit from
  476. Steve's multi-grid idea (i.e. most primary rays are almost in the grid
  477. orientation).  According to Steve's assumption, working in eye-space is then
  478. most idea for primary rays for orthographic cameras.  However, I have found
  479. little performance increase with this - maybe because our raytracer already
  480. has ray bounding boxes (ala Snyder & Barr, Siggraph 87) and the advantages
  481. of Steve's approach have already been accounted for by the ray bounding boxes.
  482. Maybe not, keep on hacking, Steve - interesting idea you have here.
  483.  
  484.  
  485. Onto the bounding areas for ray-polygon intersection, by Steve Worley and
  486. Eric Haines...  The general ray-polygon process that I find useful is very
  487. similar to yours:
  488.  
  489. 1) back-face culling (same as you suggested).
  490. 2) intersect with the polygon plane and determine a distance value T.  This
  491.    evaluation is simply T = (d - N.O) / N.D, where N, d form the plane
  492.    equation, O = ray origin, D = ray direction.
  493. 3) check that T > epsilon and T < an already hit polygon's T value.
  494. 4) check that the intersection point O + TD is inside the polygon bounding box.
  495. 5) perform the inside-outside test.
  496.  
  497. There is no need to intersect with the ray-intersect the polygon bounding box
  498. - that's too expensive.  And I do step #4 with respect to the 3d polygon
  499. bounding box because I already have those for the ray bounding box approach.
  500.  
  501. [This is actually identical to what I use.  Steve's 2D bounding test is just a
  502. slightly faster way to do step #4 - since you can precompute once which plane
  503. to cast the polygon upon, you can also precompute once which 2D box to use,
  504. and you can combine the two (this is, of course, if you like longwinded,
  505. duplicated code for speed - me, though I can see its use, I haven't
  506. implemented the 2D test since it's just too much hacking).  - EAH]
  507.  
  508.  
  509. Now here's the neat extension to eye-space raytracing (for perspective)
  510. again...  Since the primary rays always have a ray origin at (0,0,0), the
  511. evaluation of T just becomes d/N.D, and the intersection point is now just TD.
  512. This can be advantageous for some traversal schemes as well (where O + TD
  513. needs to be evaluated quite often).
  514.  
  515. I was also hacking with reducing the T evaluation for future generation rays.
  516. I was able to reduce the floating point count, but found little improvement -
  517. sigh.
  518.  
  519. Ok, I will stop shooting off my mouth and get some work done.
  520.  
  521. -------------------------------------------------------------------------------
  522.  
  523. Errata to _Photorealism and Ray Tracing in C_, compiled by Eric Haines
  524. book contact:  Stephen Coy (70413.136@compuserve.com)
  525.  
  526.  
  527. Compiled by Eric Haines (erich@eye.com) from Stephen Coy's notes and my own.
  528. The newest version of this errata listing (with all the code patches) is in
  529. wuarchive.wustl.edu:graphics/graphics/books/errata.
  530.  
  531. version 1.0
  532. date:  6/23/93
  533.  
  534. --------
  535.  
  536. plate 2 : Image should be rotated and returned to correct aspect ratio.
  537. plate 17 : Text should be "Varying texture amplitude on spheres"
  538. plate 18 : Text should be "Varying texture terms on spheres"
  539. plate 34 : "Sphereflake" not "Sphere Lake"
  540.  
  541. pg 124  #define NLAMBDA has the comment "not used anywhere" - true, this
  542.         is just left over from Mark Vandewettering's code, upon which Bob is
  543.         based.
  544.  
  545. pg 157  Equation 6-1 is totally messed up.  Should be:
  546.         REFL_DIR = RAY_DIR + 2*(RAY_DIR _dot_ NORMAL) * NORMAL
  547.  
  548. pg 164 "is simply to cast more than one ray per screen pixel (in other words,
  549.         subsampling)."  should say "supersampling."
  550.  
  551. pg 168  top "...in the code as parallax projection."  should be "flat
  552.         projection."
  553.  
  554. pg 168  Note that most of the samples have up= 0 0 1 not 0 1 0 and the "left"
  555.         vector is calculated from up and the to and from points.
  556.  
  557. pg 168-169 Seems to imply that spherical projection differs from fisheye.  It
  558.         doesn't.
  559.  
  560. pg 169  Replace "Parallax" with "NoParallax"
  561.  
  562. pg 170  The sphere in plates 9 & 10 is reflective not transparent.
  563.  
  564. pg 173  Bob's adaptive supersampling does not cast a ray through the center of
  565.         the pixel.  It first looks at the corners.
  566.  
  567. pg 176  Where it says "Figure 7-3 shows..."  it should say "Plate 20 shows..."
  568.  
  569. pg 221  Replace "baricentric" with "barycentric"
  570.  
  571. pg 230  The reference to figure 8-6 should be 8-5.
  572.  
  573. pg 232  top "For example, a list of 10 requires on average five intersection
  574.         calculations per ray."  WRONG the correct answer is 10 + #lights*5 +
  575.         reflected + refracted...
  576.  
  577. pg 234  paragraph three:  "Now compare the maximum of the tnear values and the
  578.         minimum of the tfar values.  If the ray intersects the volume, then
  579.         tmax is greater than tmin."  No; correct this to:  "Now compare the
  580.         maximum of the tnear values (tmax) and the minimum of the tfar values
  581.         (tmin).  If the ray intersects the volume, then tmax is less than
  582.         tmin."
  583.  
  584. pg 241  2nd paragraph "if the value of t for the bounding volume of the node
  585.         is less that the current tmin value..."  should say "greater than"
  586.  
  587. pg 274  near bottom "The reflecting sphere would be next to impossible without
  588.         great additional cost if solid texturing were not used."  Huh?  What
  589.         sphere?  This sentence looks lost.
  590.  
  591. pg 333  Replace "Kunni" with "Kunii".
  592.  
  593. pg 351  A less overloaded term than "z-buffer" would be "heightfield"
  594.  
  595. pg 473  Replace "Carpender" with "Carpenter"
  596.  
  597. pg 474  Replace "Glasner" with "Glassner", "Peachy" with "Peachey"
  598.  
  599.  
  600. Code patches:
  601.  
  602.         The patches for the code are attached at the end of this file.
  603.         Tokens.c has a fix to correct a bug in the handling of numbers in
  604.         scientific notation.  Inter.c has been optimized in a big way and
  605.         gains an additional 5% overall for the raytracer.  Sponge.zip contains
  606.         the correct version of the program to generate the sponge image in the
  607.         book.
  608.  
  609.         Porting to a unix system is pretty trivial.  A makefile is needed, and
  610.         little in the code needs to be changed.  The delimiter in file.c on
  611.         line 70 may have to be modified.  The code uses <string.h>, so those
  612.         using <strings.h> will have some macro defines ahead of them.
  613.  
  614. [patches are not included here for brevity - if you can't ftp the errata,
  615. I can send them to you. - EAH]
  616.  
  617. -------------------------------------------------------------------------------
  618.  
  619. InterChange Plus Model/Texture Data CD-ROM, by John Foust / Syndesis
  620. Corporation
  621.         (76004.1763@compuserve.com)
  622.  
  623. [Though a tad pricey, I thought this CD-ROM and software was of sufficient
  624. interest to readers here to warrant publication.  Also, note the offer of
  625. "free if you contribute to it".  The text is written by a representative of
  626. the company but sounds reasonable.  BTW, I'm certainly interested in noting
  627. any other commercial products out there that are related to ray tracing and
  628. are affordable by mere mortals (i.e. less than $300 is a good target, less
  629. than $100 even better) - EAH]
  630.  
  631. My company makes InterChange Plus, a system for translating between many
  632. different 3D modeling file formats.  We've been in the Amiga market since
  633. 1987, but we're moving to Windows later this year.
  634.  
  635. The "Syndesis 3D-ROM" is a CDROM collection of more than 500 freely
  636. distributable 3D models, all present in AutoCAD DXF, 3D Studio, Wavefront
  637. .obj, Video Toaster LightWave and Impulse's Imagine PC/Amiga formats.  We
  638. didn't attempt to fix the normals from objects that have random orientation.
  639. (Since InterChange doesn't do that (yet) I didn't want to mislead people about
  640. its abilities.)  It's also got more than 400 tileable, wrappable texture maps.
  641. It includes a fully indexed, cross-referenced catalog of the objects.
  642.  
  643. The disc includes demonstration models from companies such as Viewpoint
  644. Animation Engineering.  All 28 Viewpoint demo models are present, including
  645. the yet-unreleased Siggraph 93 set.  More demo objects were contributed by
  646. Noumenon Labs, VRS Media, Mira Imaging and other commercial modeling
  647. companies.
  648.  
  649. The 3D-ROM is a demonstration of the translation abilities of InterChange
  650. Plus, Syndesis's system for converting between 3D file formats.  InterChange
  651. Plus translates between AutoCAD DXF, 3D Studio, Digital Arts, Wavefront,
  652. Swivel, Sculpt, VideoScape, LightWave, Imagine, CAD-3D, PAGErender and Vista
  653. DEM formats.  Soon to come is support for StereoLithography, Macromedia 3DGF,
  654. Super 3D, Alias StyleGuide, Topas, Softimage, Inventor and Vertigo formats.
  655. All material and hierarchy information is preserved as best as possible.  We
  656. don't sell source, but we do license to several companies in executable form.
  657.  
  658. This ISO-9660 disc is fully accessible from MS-DOS, Macintosh, Amiga and Unix
  659. workstations.  The price is $199.95.
  660.  
  661. If you'd like to find out about this CDROM, we'd be glad to add you
  662. to our mailing list.  See us at Siggraph 93, booth 2244, Hall D.
  663.  
  664. We're not trying to get into the 3D object business, we're trying to tell
  665. people about InterChange Plus, and to get more freely distributable objects
  666. into the hands of artists.  We're going to make more editions of the 3D-ROM
  667. with new objects.  In the newsletter, we'll describe how people can send us
  668. objects and then get a free CDROM that contains their objects.  That's how
  669. we're going to thank everyone who contributed.  I'd really like to flush out
  670. all those nifty university-created and government-created data sets and
  671. objects we're see over the years and convert them into useful, popular 3D
  672. formats.
  673.  
  674. The Internet "avalon" site was kind enough to make me an 8mm Exabyte copy of
  675. the 3D collection there, and I got the DEMs from the Xerox "spectrum" site.
  676. Some of the avalon objects made it to the first disc, and more DEMs will be
  677. present on future discs.
  678.  
  679. Syndesis Corporation
  680. P.O. Box 65
  681. 235 South Main Street
  682. Jefferson, WI 53549
  683. (414) 674-5200
  684. (414) 674-6363 FAX
  685.  
  686. -------------------------------------------------------------------------------
  687.  
  688. Ray Tracing Roundup
  689.  
  690. There are a few things of note in ray tracing software out there.  Rayshade is
  691. getting used more and more on workstations for "serious" rendering (as in
  692. zillions and zillions of polygons, for example).  POV has a ton of people
  693. cranking out utilities and whatnot.  RTrace does not seem to get the attention
  694. it deserves (perhaps because of the sometimes hideous ftp connection to
  695. Portugal - George Kyriazis, any chance of mirroring this site at wuarchive?).
  696. It supports a good set of primitives and has a ton of converters to its format
  697. (including some unique ones like IRIS Inventor, IRIT, etc) - see the RTrace
  698. section below for a diagram of formats supported.
  699.  
  700. --------
  701.  
  702. The site wuarchive.wustl.edu will soon mirror the entire net.  At least that
  703. is how it's starting to look like - if you're having problems getting into
  704. avalon.chinalake.navy.mil or find faramir.informatik.uni-oldenburg.de too far
  705. away, they are mirrored (along with many other graphics hosts) at wuarchive in
  706. mirrors/mirrors/graphics/<hostname>.
  707.  
  708. --------
  709.  
  710. For animation for any ray tracer, there is a utility called Animdat,
  711. freeware/shareware that will replace variable names in a template file and
  712. output a series of data files with the variables incremented in the right
  713. places.  (hed@cats.ucsc.edu)
  714.  
  715. There's also a very useful (and similar) package called RTAG.  It's a PC
  716. binary only, though.  It is ASP software, $20, by P. Sherrod.  It supports
  717. more functions, I believe, than Animdat such as spline curves for animation
  718. paths.  (If Animdat currently supports splines, I apologize.  Last time I saw
  719. it it didn't.)
  720.  
  721. It's worth a look if you have a PC and do animations with any of the popular
  722. raytracers--the Rtag (and Animdat) packages aren't hard-coded to deal with
  723. only POV.  I've uploaded it onto wuarchive.wustl.edu (128.252.135.4) under
  724. /pub/msdos_uploads/graphics/rtag20.zip.  (Russell Webb, rwebb@nyx.cs.du.edu)
  725.  
  726. --------
  727.  
  728. [This commercial program has a large and devoted group of Amiga users out
  729. there, and their mailing list (requests: imagine-request@email.sp.paramax.com)
  730. is quite active. - EAH]
  731.  
  732. There is a new product for the IBM'ers out there.  It is called IMAGINE and it
  733. just started shipping.  I can personally attest that it will blow the doors
  734. off of 3D-Studio.  It is made by IMPULSE, and is in its 3rd version (1st for
  735. the IBM).  It can do morphing, your standard key-framing animation, it is a
  736. raytracer (reflections & shadows), and can do/apply special FX to objects
  737. (like ripple, explode, bounce, things of that nature).  Also it has
  738. algorithmic texture maps and your standard brushmapping also.
  739.  
  740. You can have animated brushmaps (i.e. live video mapped on the objs), also
  741. animated backdrops (i.e. live video backgrounds), also animated reflections
  742. maps.
  743.  
  744. Don't let the low price fool you, this product can do it all when it comes to
  745. 3D-animation and rendering!  (Tony R.  Boutwell, trb3@Ra.MsState.Edu)
  746.  
  747.         I finally received the information about Imagine for the PC.  They are
  748. presently shipping Version 2.0 of the software and will release Version 3.0 in
  749. the first quarter of 1993 (or so they say).  The upgrade from 2.0 to 3.0 is
  750. $100.00.  To purchase Imagine 2.0, it costs $495.00 or if you are upgrading
  751. from another eligible (call them for info) modeler, it is only $200.00 plus
  752. shipping & handling.  It requires a PC with 4 Megs, a math coprocessor, and
  753. DOS 5.0 or up and a Microsoft mouse and SVGA card.  (Scott A Snowiss,
  754. sasst11+@pitt.edu)
  755.  
  756. I work the same hours as Impulse so I had a friend call them for me.  They
  757. told her the price was $495 but I could get it for $200 if I would send in a
  758. photocopy of the manual cover from another ANIMATION program.  She asked them
  759. what animation program would do?  They asked her which animation programs I
  760. had.  She told them Deluxe Paint Animation and Disney's Animation Studio.
  761. They said either one would do.  (Jim Nobles, usenet@ornl.gov)
  762.  
  763.         Impulse Inc.
  764.         8416 Xerxes Avenue North
  765.         Minneapolis, MN 55444
  766.         1-800-328-0184
  767.  
  768. --------
  769.  
  770. The ray tracing and radiosity bibliographies that I maintain were updated
  771. around January of 1993 with the previous year's new references.  See the
  772. computer graphics FAQ for more info, or just get them at princeton.edu:
  773. /pub/Graphics. (EAH)
  774.  
  775. The 5th (and perhaps final) release of the collection of ray tracing abstracts
  776. is ready.  I've put it in several ftp sites [the usual, such as princeton.edu:
  777. /pub/Graphics - ask Tom if you need one near you].  Get rtabs.4.93.shar.Z The
  778. abstracts (RTabs.tex) are only available in Latex form now.  Significant
  779. changes have been made.  A second file (RTnew.tex) contains just the abstracts
  780. added since the last release if you don't want to print the whole thing again.
  781.  
  782. Version 5 - April 1993
  783. Number of printed pages: RTnew - 11, RTabs - 95
  784. Number of abstracts: RTnew - 34, RTabs - 334 (+ 45 non-unique refs)
  785. (Tom Wilson, wilson@forest.dab.ge.com)
  786.  
  787. --------
  788.  
  789. In addition to the cyberware_demo.tar.Z file mentioned last issue, there is a
  790. new addition to the FTP site taurus.cs.nps.navy.mil:/pub/dabro.  The file
  791. cyber.tar.Z contains some ASCII translations of a few of the 3D data sets that
  792. I did for someone who wanted a lower resolution data base.  It contains
  793. several polygonal descriptions of a head, face, skull, vase, etc.  The format
  794. of the files is a list of vertices, normals, and triangles.  There are various
  795. resolutions and the name of the data file includes the number of polygons, eg.
  796. phred.1.3k.vbl contains 1300 polygons.  (George Dabrowski, Cyberware Labs,
  797. dabro@taurus.cs.nps.navy.mil)
  798.  
  799. --------
  800.  
  801. Polyray is a ray tracing program written by Alexander Enzmann It is at
  802. uni-oldenburg (it's also mirrored at wuarchive in
  803. mirrors/mirrors/graphics/...).  It only comes in executable form for the PC
  804. but has some neat features that PoV does not have.  It also supports animation
  805. within the script file for the scene.
  806.  
  807. --------
  808.  
  809. There is a utility called KALEIDO which generates the coordinates/edge and
  810. face lists for 80 different objects.  My favourites are the dodecahedron,
  811. icosahedron, soccer football and other exotic polyhedra made from the
  812. combination of triangles, squares, and hexagons(#18 and #33).  It also
  813. includes the basic objects like the tetrahedron, cube and hexahedron.
  814.  
  815. The author is Dr. Zvi Har'El (rl@gauss.technion.ac.il).  KALEIDO is available
  816. from:  wuarchive.wustl.edu:graphics/graphics/kaleido and at
  817. gauss.technion.ac.il.
  818.  
  819. One slight problem is that the polygon vertex lists are not ordered for
  820. polygon rendering/Gouraud shading.  I had to write a utility to do this
  821. automatically.  (Michael S. A. Robb, michaelr@spider.co.uk)
  822.  
  823. --------
  824.  
  825. Rayshade related:
  826.  
  827. A font consisting of upper and lowercase letters and numbers formed from
  828. cylinders, spheres and torii is available, font.rh.  There are no restrictions
  829. on its use.  There is also a program, text_to_rayshade.c.  (Paul Chamberlain,
  830. tif@austin.ibm.com) (Daniel Peisach, peisach@hydra.rose.brandeis.edu)
  831.  
  832. ----
  833.  
  834. I have placed the new rsdefs (v2.0) on weedeater.math.yale.edu in the incoming
  835. directory.
  836.  
  837. Changes include new objects (chessboards; text characters (font.rh); rounded
  838. boxes, cylinders, and discs; bathroom objects -- soap, soap-dish, drinking
  839. glass, toothbrush, and glass holder; jewels), a better interface for using
  840. objects and surfaces in scene files, and more example files.
  841.  
  842. For those who have never heard of the rsdefs package -- the package is a group
  843. of files for use with rayshade that are #included into a scene file.  The
  844. files define commonly used settings, constants, macros, surfaces and objects
  845. inorder to make them commonly accessible to the user and to help reduce the
  846. amount of work necessary for creating new scenes.
  847.  
  848. There are also several example files that show the use of the predefined
  849. "creations" that also serve as general examples for the use of rayshade.
  850.  
  851. The "creations" have been defined so that they impart no extra overhead in the
  852. way of memory to rayshade unless specifically invoked in a scene file.  The
  853. creations only exist in the C-preprocessor's memory.
  854.  
  855. Objects and surfaces can be used either as instances or as named objects (the
  856. "name" declaration for objects and "surface" declaration for surfaces).  The
  857. objects can also be used inside aggregates (CSG, list, grid) and can be
  858. followed by transformation calls that will transform the whole object.
  859.  
  860. Currently there are 57 surfaces, 184 superprimitives, 29 constants, viewing
  861. parameters for several different output media and several macros and textures
  862. defined.  (Larry Coffin, lcoffin@clciris.chem.umr.edu)
  863.  
  864. ----
  865.  
  866. By request, I have placed the source for the stereo image pairs I generated a
  867. while back on weedeater.math.yale.edu in the "incoming" directory.  The file
  868. is called "ster.src.tar.Z" and contains the source for the "subs", "pipes",
  869. "chains" and "view" images.  (Stuart Warmink, sw@groucho.att.com)
  870.  
  871. ----
  872.  
  873. Joy over joy:  there's a new Inetray version out.  Apart from fixing a few
  874. un-niceties it has one major advantage over version 1.0.1:  it can be used in
  875. pipes and with stdin redirection.  This means that access to .ray files is no
  876. longer necessary in the normal case.  Everything which is presented to inetray
  877. on stdin is automatically sent to all worker machines.  That means that
  878. something like this works:
  879.  
  880. $ echo "sphere 2 0 0 0" | inetray > sphere.rle
  881.  
  882. Again, NO remote file access is required!!!
  883.  
  884. Inetray is an application allowing you to concurrently raytrace an image using
  885. a lot of machines.  The task is dynamically distributed to all machines
  886. offering this service.  Inetray is based on the Rayshade 4.0 libraries.  It
  887. does not require any modification to the rayshade source and is compatible
  888. with all patches (known to me).
  889.  
  890. As usual, I uploaded inetray.1.1.0.tar.Z to maggia.ethz.ch where it can be
  891. collected by anonymous ftp.  If you have any questions and/or comments please
  892. send mail to Andreas Thurnherr (ant@bernina.ethz.ch).
  893.  
  894. ----
  895.  
  896. The February '93 issue of National Geographic Magazine features a 3 page
  897. foldout generated with Rayshade.  The image shows the surface of Venus near a
  898. large double-vented volcano named "Sappas Mons."  The picture was generated
  899. from NASA Magellan radar and altimetry data using Rayshade.4.0 modified to
  900. deal with large (~256Meg) heightfields and image files.
  901.  
  902. The May issue of Scientific American has a short article on pp 26-27 which
  903. includes one of our Venus Landscapes.
  904.  
  905. The cover of the April 23 issue of Science Magazine features yet another Venus
  906. landscape generated with Rayshade.  The image shows the surface of Venus near
  907. a large circular feature called "Miarlaidji Corona."  The rayshade heightfield
  908. used is 3556x3556 by 32 bit floats and an 8bit SAR radar image the same size
  909. was texture mapped onto the surface.  This was done on a 4 headed SPARC 6/40
  910. with 64Meg of RAM and a couple Gig of disk space, and took about 6 hours to
  911. render at size of 2200 by 2800 pixels.  (David P. Anderson,
  912. dpa@io.isem.smu.edu)
  913.  
  914. ----
  915.  
  916. Check out the June issue of Omni Magazine, page 52.  The "computer-generated
  917. image of HIV created on a Cray Super Computer" was done with Rayshade.  It
  918. really looks much larger in person :-):-).  A larger version of this image may
  919. be found on fconvx.ncifcrf.gov in tmp/rayshade as virion.rle.Z.
  920.  
  921. For more info you can contact me at mcgregor@ncifcrf.gov or Connor McGrath at
  922. mcgrath@ncifcrf.gov.  (Please see the acknowledgment.txt file for a few more
  923. details).  (George McGregor, mcgregor@ncifcrf.gov)
  924.  
  925. ----
  926.  
  927. SCO Open Desktop has been using Rayshade rendered images in their
  928. demonstrations. (Robert Walsh, robertwa@sco.COM)
  929.  
  930. ----
  931.  
  932. The following files are (temporarily, at least) available for
  933. anonymous ftp at ftp.ncsa.uiuc.edu in /outgoing/marca/natural-textures:
  934.  
  935. NTRL-TXTRS.README  grass-rocks.rle.Z  grass02.rle.Z      ivy-rocks02.rle.Z
  936. bark.rle.Z         grass01.rle.Z      ivy-rocks01.rle.Z  ivy-stucko.rle.Z
  937.  
  938. (David DeBry, ddebry@dsd.es.com)
  939.  
  940. --------
  941.  
  942. Vivid/BOB and POV related:
  943.  
  944. I have a new modeler out called Sculptura that you might want to try.  It has
  945. Vivid and POV output, and it can read in DXF files, so you can use it to model
  946. new shapes, or you can use it as a pathway for DXF to POV or Vivid.  There is
  947. a demo version at wuarcive.wustl.edu in /mirrors /mirrors/win3/demo/demo3d.zip
  948. (Michael Gibson, gibsonm@stein.u.washington.edu)
  949.  
  950. --------
  951.  
  952. POV related:
  953.  
  954. POVCAD and PV3D are two modelers for POV.  faramir.informatik.uni-oldenburg.de
  955. is a good site for both (this site is mirrored at wuarchive - see note at the
  956. beginning of the roundup).  The newest PV3D tends to be in
  957. /pub/dkbtrace/incoming as file pv3dv100.zip.  There also exist a GUI called
  958. aewire, by Alexander Enzmann.  Contact him (70323.2461@compuserve.com) for
  959. more information.
  960.  
  961. ----
  962.  
  963. Ville Saaris expression evaluator code for PoV allows very easy animation
  964. generation using formulas on framenumber or time.  Another but more
  965. complicated solution is Rayscene.  (Andre Beck, beck@irzr17.inf.tu-dresden.de)
  966.  
  967. ----
  968.  
  969. The Graphics Alternative BBS (510-524-2780) carries many POV related software
  970. packages, etc.
  971.  
  972. ----
  973.  
  974. I wrote a PM (for IBM's OS/2) interface for DKB.  The file is dkbpm.zip or
  975. dkbpm2.zip and is available at hobbes.nmsu.edu, in a graphics directory
  976. somewhere, sorry I can't remember the exact path.  It has a statistics window
  977. with time stats, a bitmap image viewing window and a transcript window for
  978. progress reporting.  Menus and dialogs to set all the options.  Source is also
  979. included.
  980.  
  981. I'm working on the next release of POV for PM and NT.  The beta I have for
  982. OS/2 is pretty similar to the DKB version.  The NT beta I have has a
  983. quantization thread that constantly quantizes the image and adjusts the
  984. palette accordingly.  It also can launch multiple render threads if you have a
  985. multiprocessor NT machine.  I'm in the process of migrating the quant and
  986. palette stuff back to OS/2.  I'll let you know when povpm and povnt are
  987. available.  (Michael Caldwell, mcaldwel@netcom.com)
  988.  
  989. ----
  990.  
  991. Daniel Gross <entropy@Panix.Com> writes:
  992.  
  993. I gave up on the Transputers -- sent 'em back -- and am now building a new
  994. parallel processor based on 386 motherboards.  Cheaper, better performance,
  995. easier to port software.  Plus, in a pinch, if I get lazy, I could just run
  996. Win4Workgroups or NT on each of 'em and get no-code concurrent
  997. multiprocessing.  For now, though, I'm still trying the harder way -- i.e.
  998. modifying PoVRay code to optimize for parallel execution.
  999.  
  1000. ----
  1001.  
  1002. One of the best utilities I've found for POV it called SP - Dave's Spline-
  1003. Path Generator.  You can find this on the You Can Call Me Ray BBS.  Basically,
  1004. you make a data file of a number of points and some other information, and SP
  1005. will calculate position and rotations for your camera.  You can do
  1006. acceleration/deceleration, etc...  with it as well.  Its downfall (at least as
  1007. of version 0.3) is that it only does one frame at a time (you tell it which of
  1008. the N frames to compute).  It's relatively easy to make a batch file for this,
  1009. though.  (Jason Barile, barilejb@ctrvax.vanderbilt.edu)
  1010.  
  1011. ----
  1012.  
  1013. I produce POV 3D fonts and have a range of about 500 so far.  Price is about
  1014. 65 UK pounds or 90 for two.  The data is about 3-4 meg uncompressed for each
  1015. font and each letter has to be #included and assigned a texture, details and
  1016. examples are included with the font.  The level of detail is very high, and
  1017. looks good even when flying through the bowl of a "P" for example.  I decided
  1018. on a standard where the baseline of the font is at zero, with the leading
  1019. height at 1, with the font being 1 unit deep.  This makes changing fonts
  1020. easier, though still a little fiddly adjusting kerning...  There is as yet no
  1021. easy way of making them - the process takes several hours of hard work with
  1022. W4W macros.  Available in Vivid format too.  (Andrew Haveland-Robinson,
  1023. andy@osea.demon.co.uk)
  1024.  
  1025. --------
  1026.  
  1027. RTrace related:
  1028.  
  1029. There is a new version of the RTrace ray-tracing package (8.2.0) at
  1030. asterix.inescn.pt [192.35.246.17] in directory pub/RTrace.  Check the README
  1031. file.  [Most, perhaps all, of this is mirrored at wuarchive in
  1032. graphics/graphics/ray/RTrace.  - EAH]
  1033.  
  1034. The MAC RTrace 1.0 port is in directory pub/RTrace/Macintosh Thanks to Reid
  1035. Judd (reid.judd@east.sun.com) and Greg Ferrar
  1036. (gregt@function.mps.ohio-state.edu).
  1037.  
  1038. For all the Mac users of RTrace, there is a Compact-Pro HQX file called
  1039. movies.cpt.hqx in pub/RTrace/Macintosh, at asterix.inescn.pt [192.35.246.17].
  1040. In this file I've put 2 small animations to be played with SimplePlayer or any
  1041. similar program (in the Mac, of course).
  1042.  
  1043. For all the users of RTrace, there is a specification of the format RTrace
  1044. uses in a Postscript compressed file called sffv8.ps.Z.  [SFF is something
  1045. like NFF, vastly extended to handle splines, textures, etc.  - EAH]
  1046.  
  1047. There is also a 3D Studio 1.0 file converter in pub/RTrace/scene-conv called
  1048. 3ds2scn.awk.  You must have a reasonably good AWK program (preferably gawk
  1049. 2.14) to process the ASCII files that 3D Studio creates and convert them to
  1050. SCN format.
  1051.  
  1052. RTrace now can use the SUIT toolkit to have a nice user interface.  Compile it
  1053. with -DSUIT or modify the Makefile.  SUIT is available at
  1054. suit@uvacs.cs.virginia.edu I have binaries of RTrace with SUIT for SUN Sparc,
  1055. SGI Indigo and DOS/GO32.  Please contact me if interested.
  1056.  
  1057. Here goes a short description of current converters from
  1058. CAD/molecular/chemistry packages to the SCN format.  The package programs are
  1059. related as below (those marked with * have been modified)
  1060.  
  1061.                irit2scn
  1062.      IRIT ----------------|
  1063.                           |               NFF (nffclean, nffp2pp)
  1064.                 sol2scn   |                |
  1065.     ACAD11 ---------------|                | nff2sff
  1066.                           |                |
  1067.                 mol2scn   v    scn2sff*    v    rtrace*
  1068.    ALCHEMY  -----------> SCN -----------> SFF ----------> PIC or PPM
  1069.                           ^      cpp                           |
  1070.                 pdb2scn   |                                 picmix
  1071.      PDB -----------------|                                 picblend
  1072.                           |                                 ppmmix*
  1073.                chem2scn   |                                 ppmblend*
  1074.    CHEMICAL --------------|
  1075.                           |
  1076.                 3ds2scn*  |
  1077.   3D STUDIO --------------|
  1078.                           |
  1079.                 iv2scn*   |
  1080.  IRIS Inventor -----------|
  1081.  
  1082.  
  1083. The DOS port of RTrace is in pub/RTrace/PC-386 (rtrac820.arj, utils820.arj and
  1084. image820.arj).  See the README file there.  Requires DJGPP GO32 DOS extender
  1085. (version 1.09 included), which can be found in directory pub/PC/djgpp (and in
  1086. many sites around netland).  There are also demo scenes, manuals and all the
  1087. source code...
  1088.  
  1089. (Antonio Costa, acc@asterix.inescn.pt)
  1090.  
  1091. ======== USENET cullings follow ===============================================
  1092.  
  1093. Re: Intersection Between a Line and a Polygon (UNDECIDABLE??), by Allen B
  1094.         (ab@nova.cc.purdue.edu)
  1095.  
  1096. Curiously, in modern PostScript, the point in a polygon problem can
  1097. be solved even more easily.  To wit:
  1098.  
  1099. %!
  1100. %%Title: Point in Polygon
  1101. %%Creator: Allen B (ab@cc.purdue.edu)
  1102. %%For: the amusement of comp.graphics regulars
  1103. %%LanguageLevel: 2
  1104. %%DocumentNeededResource: humor sense thereof
  1105. %%EndComments
  1106.  
  1107. % This program will test whether a point is inside a given polygon.
  1108. % Currently it uses the even-odd rule, but that can be changed by
  1109. % replacing ineofill with infill.  These are Level 2 operators,
  1110. % so if you've only got Level 1 you're out of luck.
  1111. %
  1112. % The result will be printed on the output stream.
  1113. %
  1114. % Caution: only accurate to device pixels!
  1115. % Put a huge scale in first if you aren't sure.
  1116.  
  1117. % Point to test
  1118. % PUT X AND Y COORDINATES HERE
  1119.  
  1120. 50 75
  1121.  
  1122. % Vertices of polygon in counter-clockwise order
  1123. % PUT ARRAY OF PAIRS OF COORDINATES HERE
  1124. [
  1125. [   0   0 ]
  1126. [ 100   0 ]
  1127. [ 100 100 ]
  1128. [  67 100 ]
  1129. [  67  50 ]
  1130. [  33  50 ]
  1131. [  33 100 ]
  1132. [   0 100 ]
  1133. ]
  1134.  
  1135. dup 0 get aload pop moveto dup length 1 dup 3 1 roll
  1136. sub getinterval { aload pop lineto } forall closepath
  1137. ineofill { (Yes!) } { (No!) } ifelse =
  1138.  
  1139. -------------------------------------------------------------------------------
  1140.  
  1141. Obfuscated Postscript Ray Tracer, by Takashi Hayakawa
  1142.         (h-takasi@isea.is.titech.ac.jp)
  1143.  
  1144. [This was an entry in the Obfuscated Postscript contest some time back.  A
  1145. pretty minimal piece of work and the image looks decent, too. - EAH]
  1146.  
  1147. # This is a shell archive.  Remove anything before this line,
  1148. # then unpack it by saving it in a file and typing "sh file".
  1149. #
  1150. # This archive contains:
  1151. #       Tiny_RayTracing.HINT    Tiny_RayTracing.ps
  1152. #
  1153.  
  1154. LANG=""; export LANG
  1155. PATH=/bin:/usr/bin:$PATH; export PATH
  1156.  
  1157. echo x - Tiny_RayTracing.HINT
  1158. cat >Tiny_RayTracing.HINT <<'@EOF'
  1159. Tiny_RayTracing.ps by Takashi Hayakawa (h-takasi@isea.is.titech.ac.jp)
  1160. is a ray tracing program in only 762 bytes (plus header)!
  1161.  
  1162. BEST OBFUSCATED ARTWORK -- 1st prize
  1163.   -- The 2nd most coveted prize. These combine obfuscation with great artwork.
  1164.  
  1165. Don't send this one to a printer. It will take too long. Display it
  1166. on the screen and be ready to wait a while. The picture is well worth it.
  1167.  
  1168. If you want to print the picture much faster, use this version:
  1169.  
  1170. %! Tiny RayTracing by HAYAKAWA,Takashi<h-takasi@isea.is.titech.ac.jp>
  1171. /p/floor/S/add/A/copy/n/exch/i/index/J/ifelse/r/roll/e/sqrt/H{count 2 idiv exch
  1172. repeat}def/q/gt/h/exp/t/and/C/neg/T/dup/Y/pop/d/mul/w/div/s/cvi/R/rlineto{load
  1173. def}H/c(j1idj2id42rd)/G(140N7)/Q(31C85d4)/B(V0R0VRVC0R)/K(WCVW)/U(4C577d7)300
  1174. T translate/I(3STinTinTinY)/l(993dC99Cc96raN)/k(X&E9!&1!J)/Z(blxC1SdC9n5dh)/j
  1175. (43r)/O(Y43d9rE3IaN96r63rvx2dcaN)/z(&93r6IQO2Z4o3AQYaNlxS2w!)/N(3A3Axe1nwc)/W
  1176. 270 def/L(1i2A00053r45hNvQXz&vUX&UOvQXzFJ!FJ!J)/D(cjS5o32rS4oS3o)/v(6A)/b(7o)
  1177. /F(&vGYx4oGbxSd0nq&3IGbxSGY4Ixwca3AlvvUkbQkdbGYx4ofwnw!&vlx2w13wSb8Z4wS!J!)/X
  1178. (4I3Ax52r8Ia3A3Ax65rTdCS4iw5o5IxnwTTd32rCST0q&eCST0q&D1!&EYE0!J!&EYEY0!J0q)/V
  1179. 3 def/x(jd5o32rd4odSS)/a(1CD)/E(YYY)/o(1r)/f(nY9wn7wpSps1t1S){[n{( )T 0 4 3 r
  1180. put T(/)q{T(9)q{cvn}{s}J}{($)q{[}{]}J}J cvx}forall]cvx def}H K{K{L setgray
  1181. moveto B fill}for Y}for showpage
  1182.  
  1183. You can change the "3" in "3 def/x" on line 10 to be 1 for more resolution
  1184. (but a much slower print) or "6" for a faster print (your printer might
  1185. be able to handle this) with less resolution.
  1186. @EOF
  1187.  
  1188. chmod 644 Tiny_RayTracing.HINT
  1189.  
  1190. echo x - Tiny_RayTracing.ps
  1191. cat >Tiny_RayTracing.ps <<'@EOF'
  1192. %!OPS-1.0 %%Creator: HAYAKAWA,Takashi<h-takasi@isea.is.titech.ac.jp>
  1193. /A/copy/p/floor/q/gt/S/add/n/exch/i/index/J/ifelse/r/roll/w/div/H{{loop}stopped
  1194. Y}def/t/and/C/neg/T/dup/h/exp/Y/pop/d/mul/s/cvi/e/sqrt/R/rlineto{load def}H 300
  1195. T translate(V2L&1i2A00053r45hNvQXz&vUX&UOvQXzFJ!FJ!J!O&Y43d9rE3IaN96r63rvx2dcaN
  1196. G&140N7!U&4C577d7!z&&93r6IQO2Z4o3AQYaNlxS2w!!f&nY9wn7wpSps1t1S!D&cjS5o32rS4oS3o
  1197. Z&blxC1SdC9n5dh!I&3STinTinTinY!B&V0R0VRVC0R!N&3A3Axe1nwc!l&993dC99Cc96raN!a&1CD
  1198. E&YYY!F&&vGYx4oGbxSd0nq&3IGbxSGY4Ixwca3AlvvUkbQkdbGYx4ofwnw!&vlx2w13wSb8Z4wS!J!
  1199. c&j1idj2id42rd!X&4I3Ax52r8Ia3A3Ax65rTdCS4iw5o5IxnwTTd32rCST0q&eCST0q&D1!&EYE0!J
  1200. &EYEY0!J0q!x&jd5o32rd4odSS!K&WCVW!Q&31C85d4!k&X&E9!&1!J!v&6A!b&7o!o&1r!j&43r!W)
  1201. {( )T 0 4 3 r put T(/)q{T(9)q{cvn}{s}J}{($)q{[}{]}J}J cvx}forall 270{def}H
  1202. K{K{L setgray moveto B fill}for Y}for showpage
  1203. @EOF
  1204.  
  1205. chmod 644 Tiny_RayTracing.ps
  1206.  
  1207. exit 0
  1208.  
  1209. -------------------------------------------------------------------------------
  1210. END OF RTNEWS
  1211.