home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / info / rtnews / rtnv6n2 < prev    next >
Encoding:
Text File  |  1994-10-16  |  54.6 KB  |  1,205 lines

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