Ray Tracing News

"Light Makes Right"

October 13, 1994

Volume 7, Number 5

Compiled by Eric Haines erich@acm.org . Opinions expressed are mine.

All contents are copyright (c) 1994, all rights reserved by the individual authors

Archive locations: anonymous FTP at ftp://ftp-graphics.stanford.edu/pub/Graphics/RTNews/,
wuarchive.wustl.edu:/graphics/graphics/RTNews, and many others.

You may also want to check out the Ray Tracing News issue guide and the ray tracing FAQ.


Contents:


Introduction

Another SIGGRAPH has come and gone, and it was a pretty fun one. Getting soaked time and again along with other allegedly intelligent people by the whales at the SeaWorld reception was definitely memorable. In many ways this conference was better than previous years. The proceedings and course notes were also provided on CD-ROM (some headaches on some machines, but that's the norm). Being able to move course to course was wonderful (even with the headache of getting to and from Stouffer's, which was no fault of the conference organizers). The addition of the technical sketches sessions and parallel paper sessions were both plusses to me. Note that there are a number of great resources on the various CD-ROMs, e.g. the latest release of Radiance (since there was a paper on the system in the proceedings this year).

The most noticeable technology for me was Apple's QuickTime VR. Nothing earth-shattering, but something which looks to be popular. Essentially you can move from view to view of an environment. You have a panoramic view of wherever you're located, so you can turn your head, zoom in on something, and even look up and down a bit: there's a nice illusion that you're interacting with the environment but without having more than a single panoramic view for a location. The software does all the distortion correction on the fly. The first product that is out using this technique is a tour of the Enterprise (TNG) on CD-ROM, and I suspect you'll see a lot of Apple's technique in upcoming CD-ROM tours and adventure games (e.g. rumor has it the Myst guys were looking at the technique).

So what's this have to do with ray tracing? Well, ray tracing is a natural for rendering panoramic views (Ken Musgrave has a Gem on how to do this in "Graphics Gems III"). Scanline images can be used and glued together and then warped, but ray traced images give you the distortion you need for free and at the sampling rates you need where you need them.

This is yet another catch-up issue, where the bits and pieces left in the queue since April are gathered up and spewed out now. If anything, have the material molder in my files for a few months meant I've culled a bit more than usual, leaving a denser filling with a firm yet flakey crust. Food imagery aside, there *are* some worthwhile bits in this issue: AERO, a demo of Microcosm, a new z-buffer renderer, and so on. Next issue will have more juicy stuff (and I really do hope to get it out before the Millenium arrives), including an announcement of a non-Pixar-produced shareware RenderMan implementation!

back to contents


New People

# Werner Purgathofer - radiosity, ray tracing, visualization, color
# Technical University of Vienna
# Institute of Computer Graphics
# Karlsplatz 13 / 186-2
# A-1040 Wien / Austria
# +43 (1) 58801 4548
alias purgathofer@cg.tuwien.ac.at

I am a professor of computer graphics, my main job consisting of teaching, administration and research. My group consists of about 12 people, including a technician and a secretary. We did a lot of ray tracing some years ago, including distributed ray tracing (see e.g. Eurographics 86), now we are concentrating on radiosity issues. As (forward) ray tracing becomes more and more important here, we are almost back where we started!

back to contents


Ray Tracing Roundup

Thought folks might be interested in the On-Line Ray-Tracing Bibliography, available over the World Wide Web via URL:

        http://www.cm.cf.ac.uk/Ray.Tracing/

Even those without Web clients like Mosaic can check this out by telneting to one of these sites:

        If you're near:         Telnet to:

        Switzerland:            info.cern.ch or 128.141.201.74
        Kansas, USA:            ukanaix.cc.ukans.edu  (login as www)
        New Jersey, USA:        www.njit.edu  (login as www)
        Israel:                 vms.huji.ac.il or 128.139.4.3 (login as www)
        Slovakia:               sun.uakom.cs (slow link; use only from nearby)
        Hungary:                fserv.kfki.hu (slow link, login as www)
        Finland:                info.funet.fi or 128.214.6.100

Mark Maimone (Mark.Maimone@A.GP.CS.CMU.EDU)

[This is Ian Grimstead's doing, and "bibliography" is a misnomer - it's a great place to start looking for all sorts of ray tracing and rendering resources, with links to just about everywhere. Really, I could just list this site each issue and not have to list most of the other resources that I do. -EAH]

________

The FAQ for comp.graphics.algorithms are available at:

http://www.cis.ohio-state/hypertext/faq/usenet/graphics/algorithms-faq/faq.html ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/graphics/algorithms-faq

Also available at: ftp://wuarchive.wustl.edu/graphics/graphics/mail-lists/comp.graphics.algorithms

FYI, all usenet FAQ's are available with Mosaic via: http://www.cis.ohio-state/hypertext/faq/usenet/top.html

Jon Stone (jdstone@ingr.com)

________

A computer graphics related FTP list [maintained by Nick Fotis and myself. -EAH] is kept at:

wuarchive.wustl.edu: /graphics/graphics/ray/GraphicsFTP.txt

George Kyriazis (kyriazis@esd.sgi.com)

________

I've been playing around with HTML and the World-Wide Web lately, and I have created hypertext versions of the three latest RTNews issues, with more to come when I get the time and energy to do it...

RTNews is at

        http://www.lysator.liu.se:7500/users/ture/rtnews.html

I also have some general graphics stuff att .../graphics.html, and my own presentation at .../ture.html

Ture P\aa{}lsson (ture@lysator.liu.se)

________

Texture Collections

: I'm looking into different texture collections on CD-ROMs. Are
: there any that are absolutely awesome, or others that should be
: avoided (i.e. not worth the money)? "Accents" looks pretty nice
: (in reviews, etc), and also Pixar's $99 offer for "One Twenty Eight"
: CD-ROM texture collection looks good.

I just finished writing an article on this very topic for Digital Video Magazine. It should be in the September issue, and it covers about twenty or so packages for the Amiga, Mac and PC, most of them on CD-ROM. The Pixar set you mentioned is very good, as are Autodesk's Texture Universe and Texture City. Check the article out for more info on a bunch of packages. Hope this is helpful.

[Digital Video Magazine is at 603-924-0100 in Peterborough, NH. -EAH]

Dave Thomas (dthomas@bbx.basis.com)
Moving Pixels
(Client, looking at image of a sphere on a monitor: "Can we make it rounder?")

________

Recent Uploads to ftp.cica.indiana.edu

File: desktop/gcad110.zip Date: 940311 Desc: GammaCAD v1.10 - Full featured

File: programr/3dlib30a.zip Date: 940315 File: programr/3dlib30b.zip Date: 940315 Desc: C++ & Pascal 3D graphic animation

________

As a new feature, the fractal FAQ has some links for use with the World Wide Web. It can be accessed with a program such as xmosaic at http://www.cis.ohio-state.edu/hypertext/faq/usenet/fractal-faq/faq.html

Ken Shirriff (shirriff@sprite.berkeley.edu)

________

New version of RTrace 8.4.0

There is a new version of the RTrace ray-tracing package (8.4.0) at asterix.inescn.pt [192.35.246.17] in directory pub/RTrace. Check the README file.

Antonio Costa, Comp. Graphics/CAD (cgcad@bart.inescn.pt)

________

New Game Programming FTP-Place

I have the great pleasure to officially announce the new (pc) game programming oriented ftp-place teeri.oulu.fi. It's currently an old sun3, has max 20 user limit, is located in Finland (Europe) and has about 40M more or less game programming oriented material online + lots more to come.

        teeri.oulu.fi:/pub/msdos/programming
        (uploads to teeri.oulu.fi:/incoming with a .txt file, please)

There are graphics libs, sound libs, hardware tech specs, file format specs, drawing utils, music composing utils, sample game source, some carefully selected FAQs, file format converters, all 3 known Game Programmers Magazines, is the official home && dist site for Game Programmers Encyclopedia etc. etc.

The PC Games Programmers Encyclopedia 1.0 (PC-GPE) is in /pub/msdos/programming/gpe/pcgpe10.zip

Jouni Miettunen (jon@stekt.oulu.fi)

[Another place to look for PC related graphics source code is: ftp.uwp.edu: /pub/msdos/demos/programming/source -EAH]

________

PCFormat (UK) RTPics on cover CD

Just thought UK readers might like to know that this month, PC Format magazine have launched a copy which comes with a CD rather than the usual disks. On it are over 150 ray-traced images, most of which are pretty stunning and in at least 640x480 (GIFs though :-(, so only 256 colours). The ray-traced trees generated with LParser are particularly gobsmacking! Even 'Frosty' is on there, but compared to the rest, I found it to be pretty average (sorry Dan, but I think some of your others are MUCH better).

IMHO, it's well worth a look, and Pc Format can be reached at format@compulink.cix.co.uk if you want to try & persuade them to put more ray-tracing stuff on the disc in future (such as source files, image data etc).

PS: The Bowling.GIF has incredible motion blur (dunno what it was done on though!)

William Turner (wturner@acorn.co.uk)

________

Geombib Reminder

Otfried Schwarzkopf has set up an experimental server on the world-wide web for the geometry biblio; you can try it by pointing your browser (e.g. mosaic for xwindows) at

        http://www.cs.ruu.nl/people/otfried/html/geombib.html

The server can be used to do remote searches on the bibliography (it has biblook under the hood). When the entry has been annotated with the new URL field, the server will recognize this and allow you to download the network object pointed to, e.g. a Postscript copy of a techreport. (You can find some examples by looking for "ftp" in "any" field.) If you have comments or suggestions regarding the server, please send them to otfried@cs.ruu.nl.

If you wish to join the computational geometry bibliography mailing list, send email with body of "subscribe geombib" to majordomo@cs.usask.ca. Beware that mail sent to geombib-request@cs.usask.ca gets a form letter from majordomo but not a subscription.

[You can FTP the bib from cs.usask.ca: /pub/geometry/geombib.tar.Z -EAH]

Bill Jones (jones@skdad.usask.ca)

________

Animation FTP Site

toe.cs.berkeley.edu in directory /pub/multimedia/mpeg/movies

has some quite good mpeg streams including the morphing sequence from Michael Jackson's 'Black and white' video.

Jim Marsden (ee_c456@vulture.dcs.kingston.ac.uk)

________

I have recently completed version 1.1 of RenderCAD-PRO, a modeling and ray-tracing application for the Macintosh. Its easy graphic user interface can be used to generate photo-realistic single images and multi-image animations. A free demo (requires Mac w/ FPU co-pro) of this $45 package is available. Please send info requests to...

Paul Rybarczyk (prybarc@heartland.bradley.edu)

________

If you have direct Internet access, you can learn about BRL-CAD via:

ftp to ftp.arl.mil, directory /brl-cad

Mosaic/WWW to the following URL:

        http://www.brl.mil/software/brlcad/index.html

Lee A. Butler (butler@ARL.MIL)

________

The current version of the Stereogram FAQ is in the HTML file at http://www.cs.waikato.ac.nz/~singlis/sirds.html or can be FTPed from: katz.anu.edu.au [150.203.7.91] : /pub/stereograms (which also has a lot of other SIRDS related information)

[Stereograms are those things you see in the mall (trade name "Hollusion") that you try to stare at and defocus and see the dinosaur or whatever in 3D. I could never see the effect until I learned about the techniques listed in the FAQ. Fun illusion, and it turns out to be very easy to implement as a post process to a ray tracer - I believe people have already done it for POV and Rayshade. Also, at the listed FTP site there is a ray tracer called raysis which is devoted to this task. To do this stuff yourself you can try to decode the FAQ (it's a tad cryptic when it comes to actually saying what to do for SIS), buy the new book _Create Stereograms on Your PC_ by Dan Richardson, Waite Group Press, or wait an issue: I hope to write up the 20-30 lines of code I used to add it to my renderer for the heck of it. -EAH]

________

Raytech is a BBS specialising in ray tracing. It is located in northern Scotland, and their telephone number is 44-862-832020.

Adam Fulcher (afulcher@cix.compulink.co.uk)

________

Just about everything that always gets asked over and over again on rec.games.programmer is covered in the latest Dr. Dobbs: circle, ellipse, line, texture mapping, landscape generation, and even ray-tracing. So before you ask get that episode (#216 July 1994 ddj).

Ben (sbc5a@helga6.acc.Virginia.EDU)

________

RT Ray Tracer

I have implemented a CSG Ray Tracer with lots of primitives, textures, bounding volumes in C (but I've no multi-processing/wire-frame stuff).

My Ray Tracer is called RT and is available on ftp-os2.nmsu.edu:os2/2_x/graphics/rt.zip. It comes with full portable C source and uses the GBM module for file I/O (found in same directory as gbmsrc.zip). I will refresh it with a version less sensitive to rounding errors sometime soon.

Andy Key (ak@hursley.ibm.com)

________

Equation for a Cow, er Frog

There are some datasets at:

        http://george.lbl.gov/ITG.html

including a rasterization of a frog that was made by freezing, slicing, and scanning. (They planned to do an MRI scan, but frogs don't scan well.)

There's also MRI data for an orange, a tomato, a pumpkin, and a rat.

Roger Critchlow (rec@arris.com)

________

The WorldToolKit User's Group (SIG-WTK) electronic archive is located at

        artemis.arc.nasa.gov: /sig-wtk

This anonymous ftp site serves as the software and documents library for the SIG-WTK. It is intended to serve the needs of active WTK users and other parties interested in WorldToolKit.

The site is organized within the ~ftp/sig-wtk as follows:

        incoming/       for anonymous contributions
        models/         3D objects in various formats (NFF, DXF, etc.)
        textures/       textures in various formats (SGI, Targa, etc.)

[Note that the NFF format referred to is Sense8's NFF format, not mine. -EAH]

Terry Fong (terry@ptolemy.arc.nasa.gov)

________

Wavefront site:

    http://wavefront.wti.com

(WWW only?)

Kevin Bjorke (bjorke@pixar.com)

________

The author of TextureSynth (Joshua Jeffe) has written a new texture generating application called TextureScape, which uses postscript shapes as the basis of really cool, resolution-independent textures. It can also be used to create animated textures for use in multimedia. TextureSynth is published by Specular International (call 1-800-433-SPEC for more info).

Peter E. Lee (lee@cs.umass.edu)

________

3D Studio utils uploaded to Avalon

I have uploaded 3D Studio IPAS routines and utilities to avalon.chinalake.navy.mil (129.131.1.225) /pub/utils/3ds/

Each file is accompanied by a .txt file. I didn't write, haven't used, don't know anything else about these utilities. Just passing them on.

Pat Kane (prkane@nyx.cs.du.edu)

________

Also at avalon.chinalake.navy.mil, in the pub/misc directory, are all sorts of interesting PC software, including the fabled TrueSpace Caligari demo version (doesn't save/restore; ts_demo.zip), a Real3D demo (which is supposed to be tough to use without the documentation), and other interesting things.

________

Acoustic Simulation

Renkus-Heinz, a speaker manufacturer from California, distributes EASE (Electro Acoustic Simulation for Engineers), and EASE Jr. Both run on MS-Dos systems. Ease also supports aurilization using a companion program called EARS and a DSP board. Ease allows you to calculate reverb time, impulse response, frequency response of systems, ray tracing, and perform sound system design. Ease Jr allows reverb time and sound system design calculations. Both programs allow wireframe room models to be built in the program, or importation of 3-D DXF files.

Jay Paul (jaypaul1@aol.com)

[it had the magic words "ray tracing" in there, so I included it. -EAH]

________

Blob Sculptor Update

We have released Blob Sculptor for Windows 1.0. It has the same functionality as the DOS version. Ron Praver ported the DOS version to Windoze. [look around on ftp.povray.org, I think it's in there somewhere. -EAH]

Blob Sculptor, ver 2.0 for _DOS_ is almost ready to be released. The new functionality includes:

        * better user interface
        * camera can be interactively located
        * support for multiple blobs, i.e. components within a blob interact
          with each other but blobs don't interact with each other
        * sphere, cones and cylinder shaped components
        * faster preview mode

Version 2.0 has been beta tested for some time and already has produced some awesome images. For example, Edgar L. Ibarra has produced various images including cartoon-like characters: dog, candle holder (a la Beauty and the Beast), and a baby. You can find these at CompuServe's GraphDev forum. He renders the objects with Imagine 3.0.

I've been working on a spline blob component. The component consists of 3 points which are created in 3D space. A spline is used to interpolate them and a radius is defined to give the object a bent cylinder look. The component also permits the modification of a tension parameter which gives the user more versatility without the need to use more points. Uses for this, you ask? well, if you want to create the fingers in a hand you don't need to use spheres or 2 or more cylinders to do the job...just 1 spline blob will do the job. Think of a spline blob as a generalized cylinder or playdough in the shape of a cylinder which can be bent.

Alfonso Hermida (AFANH@STDVAX.GSFC.NASA.GOV)

________

Radiance Related
================

SIGGRAPH Proceedings Distribution

Other than a paper about the Radiance system in the SIGGRAPH '94 Proceedings, the entire Radiance system is included on the Proceedings CD ROM. It's in /papers/ward/rad2r4.tz (uncompress and read .tar, I assume).

Eric Haines

____

Radiance vs. POV

I have found Radiance to be comparable in speed to POV. Once the octree is generated the tracing times are even shorter than POV. It has very efficient pruning and the tracing times go up less than linearly with the increase in the number of polygons in a scene. And besides - the results are MUCH better in terms of realistic-looking lighting and better-looking surfaces. In my opinion Radiance is the best ray-tracing package on any platform - I use it on an Amiga. The main problem with Radiance is lack of a good modeler and the many other support programs that are available for POV.

Alison Colman (acolman@magnus.acs.ohio-state.edu)

________

POV Related
===========

Andy Wardley (abw@dsbc.icl.co.uk) notes:

I've just uploaded geodome1.zip to uniwa which is the utility for creating the geodome data models.

Non-PC users will be glad to hear that it *does* include source.

--

Harry Rowe (Harry.Rowe@wedowind.meaddata.com) comments:

Like others, I would just like to say GREAT scene! The sky is one of the best I've seen. I scarfed the GIF and your utility from uniwa and placed it on my BBS (Rowe's Ray Tracing World BBS (513) 866-8181). It will be on my custom 600 meg Ray Tracing/Graphics CD coming this fall

____

The POV-Utilities 2.0 for the Mac have hit the streets. The package is now available on CompuServe, Go GRAPHDEV, Lib 8, POVUTL.SIT. It is also available via anonymous ftp on the internet, from the Australian secondary official POV-Ray site, ftp.uwa.edu.au (and ftp.povray.org for N.American users, I assume), under pub/povray/utilities/. As always, feedback and bug reports are encouraged.

Also look for my shareware System 7 "MooVer" utility, that converts a series of (POV-Ray animated?) PICT files into a QuickTime movie with a simple drag-n-drop. It should also be showing up on uniwa, and is on CIS/GRAPHDEV/Lib 6/MOOVER.SIT.

Eduard Schwan (71513.2161@CompuServe.COM)

____

New Povray Clipart Available

I've uploaded Povray V2.0 files to avalon.chinalake.navy.mil. They can be found at pub/objects/pov. They were all converted from *.obj files found on avalon.chinalake.navy.mil in pub/objects/obj.

Keith D. Rule (keithr@tekig7.pen.tek.com)

[many are the free Viewpoint models, plus a few Star Trek thingies. -EAH]

____

POV Utility Information on the WWW

I have just set up a WWW page for POV utilities, containing information about a few popular ones, and also allowing you to download them directly from the page. For most people that should be faster than the various ftp sites, as well as having the advantage that you actually get some info on what the utility is about.

The URL is http://www.ifi.uio.no/~mariusw/pov/utilities.html

Please give me feedback and point me to utilities you think should be on the pages.

Marius Ibenhardt Watz (mariusw@ifi.uio.no)

____

Some utilities of note: MORAY (1.5 of course !), SUDS, CTDS, POVCAD, TGA2GIF, TTG, DXF2POV and RAYLATHE, just to mention a few.

[from the POV newsletter]

____

Faces for POV (Frosty):

There was a thread a while back about Dan Farmer's Frosty picture and how we wanted the .POV file. I think in fact most people wanted the face data, and on someone's advice on this group I got hold of the face1.3ds, face2.3ds and face3.3ds files from avalon.chinalake.navy.mil and converted them into .pov form with a utility also on that ftp server. The utility for conversion is something like 3dspov18.zip [source for conversion from 3DS is included. -EAH]

The results are good, although they come out as 230-320k files that might fill up too much space, and take a while to parse. The face are more like masks than real faces, but do the job so long as expressions aren't needed.

Mr. Jonathan H. S. Peterson (zctyjhp@ucl.ac.uk)

____

Parallel POV-Ray using PVM

I have written such a thing (somehow). It works like this:

A server is started, that takes all parameters and stuff. The server divides the final picture in several stripes. The server spawns some children, that each calculate one stripe (10 pixels high). For this, each child starts povray with +SL and +EL and writes the result to a file. This file is passed back to the server. The server collects all files.

After all stripes have been calculated (a list of calculated stripes is maintained, so you can abort and restart the process), all stripes are collected into a final picture.

The results are impressive. texture1.pov-demo is rendered in 1-2 minutes at 1280x1024 pixels.

Aaron Digulla ([sorry, no address])

________

Rayshade Related
================

Craig Kolb has moved to Stanford, following his advisor Pat Hanrahan, and so has pretty much bowed out of maintaining Rayshade. In his place others are attempting to glue together all the additions and bug fixes over the years and get out a Rayshade 4.1. More news as it happens. Other than this effort, there has been an explosion of WWW stuff for Rayshade.

____

Scattered notes from Craig Kolb:

There's an experimental version of a rayshade homepage available on the Web:

        http://www.cs.princeton.edu/grad/cek/rayshade

Thanks to Jelle van Zeijl and Stuart Warmink for providing documents, images, and encouragement to set this up.

As some of you might have noticed, I've reorganized and expanded the rayshade FTP archive a bit. If you have anything that you'd like to add (new primitives, textures, whatever), drop me a line.

Hundreds of surface definitions for Rayshade are available in: ftp://ftp.princeton.edu/pub/Graphics/rayshade/Contrib/Libraries/surfdefs.rh.Z

Stephen Peter's excellent notes on using rayshade are now available via the rayshade homepage (http://www.cs.princeton.edu/grad/cek/rayshade/), and in source form on the rayshade FTP archive as Contrib/Docs/raynotes.tar.gz.

Craig Kolb (cek@Princeton.EDU)

____

Z Buffer (Range Map) Extension

To get this extension, ftp vacation.venari.cs.cmu.edu (128.2.209.207), don't chdir, and use binary mode and download zbuf.tar. You can get documentation updates (a patch file and a new file) in the same place: file zbuf-doc.tar.

Mark Maimone (Mark.Maimone@A.GP.CS.CMU.EDU)

____

The RayShade docs done by Jelle are up as URL:

        http://www.msi.umn.edu/miscdocs/Rayshade/index.html

-- Matt Hughes (hughes@msi.umn.edu)

The Rayshade users' manual can now be reach at MIT via two URLs: http://web.mit.edu/afs/athena/activity/c/cgs/lib/html/rayshade/index.html and http://www.mit.edu:8001/activities/cgs/rayshade/index.html

-Fred, Director, MIT Computer Graphics Society
         (http://www.mit.edu:8001/activities/cgs/mitcgs.html)

____

For what it's worth, I've included a pointer to Rayshade in the Computer Vision Home Page: http://www.cs.cmu.edu:8001/afs/cs/project/cil/ftp/html/vision.html

Mark Maimone (Mark.Maimone@A.GP.CS.CMU.EDU)

____

I've made a sample page of the standard Rayshade images (and just a few more :-) available to the Net. There are several ways to get at them:

AFS filesystem: cd /afs/cs.cmu.edu/misc/rayshade/all_mach/omega/doc/Examples/

WWW with icons: http://www.cs.cmu.edu:8001/afs/cs/misc/rayshade/all_mach/omega/doc/Examples/ rayimages.html

WWW without icons: http://www.cs.cmu.edu:8001/afs/cs/misc/rayshade/all_mach/omega/doc/Examples/ rayimgtxt.html

anonymous FTP: ftp ftp.cs.cmu.edu login: anonymous passwd: email cd /afs/cs/misc/rayshade/all_mach/omega/doc/Examples/

back to contents


Recent Ray Tracing Papers

[This is a list of some recent research papers related to ray tracing from some of the lesser known conferences and journals. -EAH]

____

[This paper is interesting in that it is the first independent testing of Arvo and Kirk's 5D space subdivision ray tracing scheme. -EAH]

G. Simiakakis and A. Day
Five-dimensional Adaptive Subdivision for Ray Tracing
Computer Graphics Forum, volume 13, number 2
(Special Issue: Rendering), pp. 133-140, June 1994.

[George Simiakis can be reached at gns@sys.uea.ac.uk]

____

Fifth Eurographics Workshop on Rendering
13-15 June 1994
Darmstadt, Germany

RAY TRACING (Chair: Erik Jansen (fwj@duticg.twi.tudelft.nl)) [Summaries courtesy of Erik Jansen] [Really this session is more for global illumination via rays. There were many other global illumination papers here. -EAH]

Adaptive Splatting for Specular to Diffuse Light Transport
        Steve Collins

For a two-pass algorithm an adaptive light pass is used that deposits the power carried by rays as 'splats' of energy flux on the surfaces using a Gaussian distribution kernel. The kernel of the splat is adaptively scaled according to the 'ray wavefront' convergence or divergence, thus resolving sharp intensity gradients in regions of high wavefront convergence and smooth gradients in areas of divergence.

Rayvolution, An Evolutionary Ray Tracing Algorithm
        Markus Beyer, N. Sander, Brigitta Lange

In order to increase the statistical efficiency of Monte Carlo integration of the rendering equation, evolutionary algorithms are applied to optimize the sample distribution. An initial population of rays evolves towards an optimal sample ray distribution by application of generic operators and selection mechanisms. As a result we achieve an implicit stratification and a better convergence towards the actual value.

Bidirectional Estimators for Light Transport
        Eric Veach, Leonidas Guibas

Monte Carlo methods do not suffer from the artifacts and limitations that standard radisoity methods have to address, but have another well-known artifact: noise. A major source of noise is bright indirect light. We can construct different light paths between the light sources and the eye either starting from the eye or from the light sources, or starting from both meeting halfway. The different paths leads to a partitioning of the rays. Each partition gives us a different unbiased estimator. Combining these estimators may lead to near-optimal variance reduction.

A New Raytracing Architecture Robert E. Bacon, John A. Gerth, V. Alan Norton, James Kajiya

[withdrawn, unfortunately; mentioned because it sounded interesting. -EAH]

____

Computer Graphics International '94
Royal Melbourne Institute of Technology
 Melbourne, Australia, June 27 - July 1, 1994

Rendering and Display
    Kenjiro Takai Miura
        Ray Tracing Gregory-type Patches
    W. Lamotte, K. Elens, F. van Reeth and E. Flerackers
        A Parallel Ray Tracing Algorithm Using Hierarchical Bounding Volumes

Kerry Gigante (kerry@cgl.citri.edu.au)

____

The Fourth Eurographics Workshop on Animation and Simulation was held in Barcelona, Spain September 4-5, 1993.

[This workshop had many papers with interesting titles, but here's the one with those magic words "raytracing":]

Combining computer animation and video using bluebox raytracing M. Zeiller Technical University of Vienna - Austria.

Sabine Coquillart (Sabine.Coquillart@inria.fr)

____

Abstract from the Sharp Technical Journal, #57 Nov 1993.

The Sharp Technical Journal is a Japanese language publication which contains English abstracts for most of the articles.

Optimization of Illumination System for LC Projector Using Newly Developed "Reverse Ray Tracing Method"

Takashi Shibatani, Hiroshi Nakanishi, Hiroshi Hamada

A new illumination simulation technique using "Reverse ray tracing method" has been developed as a design tool for an illumination system of an LC projector with a microlens array. In this method, rays are traced from an illuminated plane to a light source in opposite direction compared to the conventional method. This method have an advantage that the numbers of rays to be traced is much smaller than in the case of conventional method for required accuracy, and it presents 2-dimensional angular distribution of the incident rays, which affect the efficiency of the microlens array.

An illumination system for a single-panel LC projector with microlens array with a newly developed correction lens and an aspherical mirror is optimized to improve brightness of a screen employing this simulation method.

Dr. David K. Kahaner (kahaner@cs.titech.ac.jp)

[Copies of previous reports written by Kahaner can be obtained using anonymous FTP from host cs.arizona.edu, directory japan/kahaner.reports.]

back to contents


Rumor Mill

[A new feature - this is simply snippets of tantalizing information from the net that I saw no follow-up about. If anyone has any details about these items, let us all know. -EAH]

John T. Chapman (jtc1@cornell.edu) notes:

By the way - there's a CD-ROM rendering/ray-tracing tutorial offered through Tiger Software and others. It supposedly has stuff on Ray Dream Designer, along with other programs. Has anyone seen this? Is it for RDD 3.0 or earlier? Is it worth the money? (There is apparently two versions - a 'sampler' at about $19 or so and the full version at about $90 or so.)

____

Vareck Bostrom (bostrov@CSOS.ORST.EDU) says:

Didn't they have a Intel Paragon doing 1 frame/sec 1024x768 or so ray tracing at supercomputing '93? I didn't see it myself, but my friends that did said it was impressive.

____

NURBS Rendering, by Henrik Wann Jensen

Jouko Vuoskoski (jvuoskos@suca01.cern.ch) wrote:
: 1) What is the "normal" method to do ray-tracing with
: B-splines (or NURBS)?

: 2) How can I do it fast (with less accuracy)?

: I was thinking to ray-trace with facets from the control
: polygon of the B-spline. Halving the knot intervals I could
: get more accuracy. Is this right approach?

You are right. The easiest way and also fastest (often stated) is to created a facet representation of the NURBS-surface and halving the knot intervals is the way to do it. I know there is some source-code floating around - try archie and search for nurbs.

[I vaguely recall there being some spline surface intersection code around and about, but does anyone have any hard info? -EAH]

back to contents


AERO Animation/Simulation System version 1.5.1, by Thomas Braeunl (braunl@hermes.informatik.uni-stuttgart.de)

AERO is an X-window based tool for simulation and visualization of rigid-body systems. AERO contains a 3D scene editor for designing simple blocks world scenes. Objects may be placed in space, linked to each other, and forces may be exerted onto them.

In animation mode, the simulation of the scene entered is carried out in real time (depending on scene complexity) displaying 3D wire frames. Also, a flag can be set to generate scene description files for each time point as input files for a ray tracing program, producing photorealistic output.

In both modes, wire frame and ray tracing scenes, the generation of stereo images is possible. In the case of real time wire frames a red-green representation of the scene is rendered, which can be viewed with red-green glasses. For the ray tracing output, a binocular pair of scene descriptions is generated for each time step.

AERO can be used for exploring the physical laws of mechanics and also for generating realistic computer animations. AERO is available free of charge as public domain software. Software and documentation can be copied via "anonymous ftp" over the Internet.

The address of our server is:
        ftp.informatik.uni-stuttgart.de  (currently 129.69.211.2)
The directory is:
        pub/AERO

[Note that AERO 1.5.1 now outputs POV-Ray 2.2 format. I believe AERO is mirrored on wuarchive, though check version numbers with archie. This system looked to be pretty cool - you can simulate physically based phenomena. There's also a paper about the system and the algorithms used. Admittedly the primitive set is limited (spheres and boxes), but Olli Vinberg (vinberg@cc.helsinki.fi) pointed out that you can run the simulation, output the results, and substitute the primitives with your own complex objects. -EAH]

back to contents


A Brief Review of [an old] AERO, by Dave Negro (dln2@cornell.edu)

My room-mate is running Linux and I learned about AERO last [school] year and made him install it. Haven't had any time to play with it this year, though. I can tell you some of the things that I remeber from last year.

1) The simulations were great! I found the emulation of real life was great and could be used to make some great animations.

2) Editing was a little awkward but then again I wasn't able to fully get accustomed to it myself. There was of course the standard primitives (Sphere, Cone, box etc)

3) Textures were lacking. The selection and editing of textures left a lot to be desired.

4) A separate .pov file is created for each frame! There is no way to make an include or anything for static objects. Thus editing the files would be nearly impossible to do with each frame!

5) Adding things to the scene but not with the tools in the AERO editor would again be extremely difficult.

6) There were still some things that needed to be worked on like the open dialog and save. Biggies in my opinion.

Well, that is all I can remember for the moment. But let me remind you that I have not touched the program in a year, so I don't know if has changed at all, and I wouldn't totally trust my memory either.

back to contents


Photon Tracing, by Chris Thornborrow (ct@opal.epcc.ed.ac.uk) and Greg Ward (greg@pink.lbl.gov)

Chris Thornborrow writes: OK onto the questions. I am writing a raytracer which does the following:

  a) Ordinary raytracing
  b) Distributed raytracing for lighting
  c) Path tracing (Kajiya)
  d) Photon tracing

Now I need to be able to bias random vectors to do these *efficiently* but I am unsure how to do this. First off then, to generate a random direction vector from a point, I generate a random vector in the unit cube and reject those that lie outside the unit sphere. This has a 50rejection rate. Can I do better without approximations (I know about generating a 0..1 element and then a random angle).

The problem above appears compounded for a random vector within some solid angle of another vector. Currently I generate a random vector (as above) and then reject ones out with the solid angle (using a dot product). This is awful. Very small angles can be approximated by generating within a cone but larger (say 20 solid degrees) give obviously biased distributions this way.

Now my real problem. Given an incident angle of a photon (ray) and the surface normal and the BRDF, how can I generate a random reflection/refraction angle that done many times would give the proper distribution defined by the BRDF. In other words, how can I bias the angle of perfect reflection in some pseudo-random manner, so that a great number of samples of those directions have the same distribution as the BRDF ?

Obviously this is trivial for perfectly diffuse surfaces, its the others I worry about :-). I'd like to do this without rejection testing - is this even possible without rejection testing ?

____

Greg Ward answers:

Let me start by saying that I'm not the world's foremost expert on Monte Carlo sampling, but I have written a ray-tracer that does some of what you're asking. I assume you have read some books on Monte Carlo sampling already, such as Rubenstein's 1981 treatise, "Simulation and the Monte Carlo Method" (Wiley, NY). Professor Pete Shirley of Indiana University has also written a fair amount on Monte Carlo methods in ray tracing, though all I have in front of me is something from his 1992 course notes on Global Illumination (course 18 that year), which I'm not sure you can find easily. (I seem to remember that someone put a bunch of Monte Carlo examples in a Graphics Gems book. It would have to be GG III, since that's the only one I don't have.)

The trick is to compute a cumulative probability function and invert it. In many cases, this can be done analytically. In the case of the random direction vector, it can even be solved by inspection. You need only generate two random angles, altitude and azimuth, and convert it back to a Cartesian vector. Rejection sampling is unnecessary. Likewise, for the vector in the solid angle of another vector, you can limit your polar angle to the cone you have selected, 20 degrees in your example.

Arbitrary BRDF's are another matter. Rejection sampling is the most general method, but there is a more efficient way to go. As you probably know, many BRDF's are highly peaked, and using rejection sampling means you may have to test hundreds of ray directions before you get one that isn't rejected. The more efficient approach is to generate a cumulative distribution table and invert it. I haven't done this myself, so excuse me if I'm a little foggy on the details:

1.  Select a resolution limit for the polar and azimuthal angles in your ray
        direction calculation, somewhere around 5 degrees should be good.
        (This is the only real limitation to this technique.)

2.  Create a 3-dimensional table of real numbers.  The first dimension is the
        number of polar angles, the second dimension is the number of
        azimuthal angles, and the third dimension is the product of the two,
        i.e.  float cuml_prob[N][M][N*M];

3. For each reflected polar and azimuthal angle, do the following:

        3a. For each incident polar and azimuthal angle, compute the BRDF
                times the cosine of the polar angle times the sine of the
                polar angle and add it to a running total.  Store this sum at
                the appropriate point in the table created in step 2.

        3b.  Once done, your sum should equal the total reflectance, which
                should be less than one (but greater than 0!)  if you have a
                valid BRDF.  If it doesn't, you might want to report an error,
                but you can proceed with the calculation regardless.

4.  You have now filled a 6.5 Mbyte table, and this completes the
        initialization phase.  (Storing this sucker to disk wouldn't be a bad
        idea.)

Now, when you have to compute a ray direction, you look up the appropriate table for this reflection angle, and:

5.  Compute a uniformly-distributed random number between 0 and 1 or 0 and the
        maximum value in this cumulative table, depending on whether the
        distribution is properly normalized and if you are accounting for
        reflectance with a multiplier or with pure Monte Carlo.

6.  Perform a binary search to find the value in the table that is closest to
        your random number, and determine the corresponding polar and
        azimuthal incident angles.  (This is the inversion step in this
        algorithm.)

7.  Jitter your sample uniformly within your 5 degree tolerance (or whatever
        you picked in step 1) to get the final ray direction.

8.  Trace that ray!

Obviously, the above algorithm could benefit from some refinement. Firstly, the precomputed table ends up being quite large. The bigger your angle tolerance, the smaller it will be, but I can never see it being very compact. You can store the whole thing to disk, and just read in the section appropriate to the reflection angle in hand when the time comes, and this will save on your memory costs at the expense of one or two disk accesses. Also, the binary search (step 6) is fast but not free, and it may pay to invert your table directly by computing azimuth and altitude angles corresponding to two random variables. This would require a little more thought, but I think it could solve both of these problems. The only catch is that you still want some way of jittering the final result so as to avoid sampling a discrete set of directions, and the distance between adjacent points in the table will vary with such a scheme. (Shouldn't be a problem, though.)

Has anyone implemented something along these lines who could help us out? Pete?

back to contents


Faster Than POV-RAY 2.1, by Dieter Bayer (dieter@cip.e-technik.uni-erlangen.de)

[This bent my mind: someone actually implemented my light buffer algorithm? Astounding! -EAH]

A modified, sped-up and unofficial version of the
Persistence of Vision Ray-Tracer Version 2.2.

Faster than POV-Ray (FTPOV-Ray) speeds up calculation of images by using some kind of direction cubes for primary rays (the vista buffer) and shadow rays (the light buffer) at the cost of additional preprocessing time and greater memory usage. The bounding slab hierarchy used by POV-Ray is projected onto the viewing plane and each point light source a priori. Thus the number of ray/slab-tests is reduced. Furthermore some modules have been modified to eliminate unnecessary calculations and automatic bounding has been improved.

The modified source code in the archive FTPV21S.ZIP may only be distributed together with this text and the file POVLEGAL.DOC that is part of the official POV-Ray package. To use the source code you'll need the original POV-Ray 2.2 distribution.

WARNING!!! If you use FTPOV-Ray you'll do it at your own risk! And don't forget that the POV-Ray team isn't responsible for this version.

I have uploaded the source code and executables for MS-DOS and OS/2 2.x to ftp.informatik.uni-oldenburg.de and wuarchive.wustl.edu (/pub/graphics/graphics/ray/pov/pov-dkb-archive/incoming).

back to contents


Z Buffer Based Rendering Program, by Raghu Karinthi (raghu@cerc.wvu.edu)

[I tried this out and got some funky lighting problems (perhaps fixed by now), but it seemed essentially sound. It's nice to see a z-buffer for a switch (lots harder to write than a basic ray tracer). Hey, it reads NFF files, so I like it ;-> -EAH]

We have developed a Z bufffer based rendering program in the West Virginia University. The key features of this program are:

(a) Reads a variant of the standard Neutral File Format (NFF) as input (b) Outputs a 24 bit color TARGA file (c) Uses accurate fixpoint arithmetic in all its calculations (d) Works in X windows environment. We have tested it on Sun Sparc machines.

This software is available via anonymous ftp. The software includes two sample files, including the teapot. We would appreciate any feedback you can give us on this software. We are quite impressed by the quality of the images produced. Enjoy the use of this utility!

FTP from 157.182.44.36: pub/sources/ZRendv1.tar.Z

Below is a short description of the software.

Raghu Karinthi
Department of Statistics and Computer Science
Concurrent Engineering Research Center
West Virginia University
Morgantown, WV 26506-6506
Voice: (304) 293-7226
Fax:   (304) 293-7541
Email: raghu@cs.wvu.edu OR raghu@cerc.wvu.edu

Description:

Often times, I have seen a question on the net for an accurate Z buffer rendering implementation producing 24 bit color output along with facilities for viewing the same. We needed one ourselves as a benchmark for our work on parallel rendering. This document describes a program that we developed for this purpose. We have leveraged a number of public domain utilities and defacto standards in our development, and hence this program does not have any fundamental algorithms, it integrates existing ones effectively.

This describes briefly our implementation of the Z buffer rendering algorithm. The rendering pipeline has the following steps:

1. Reading the input file.
2. Computing the light intensity at the vertices.  Later, Gouraud
   shading is used for interpolating the light intensity.
3. Computing the view transformation matrix.
4. Applying the view transformation to all the vertices
5. Rasterization, and writing to framebuffer.
6. Writing framebuffer to a TARGA file.

Subsequently, one can display the TARGA file, by invoking a separate utility (included with this package).

This rendering program leverages of several public domain utilities. The matrix library is from the SPHIGS package from Brown University. The view transformation matrix also is computed using the code from the SPHIGS package. Rasterization is based on fixed point arithmetic. Fixed point arithmetic library is from the directory "accurate_scan" from Graphics Gems III contributed by Kurt Fleischer. The rasterization code used in this program is a modification of some code from the same source. We compute 24 bit color (R,G,B) at each pixel and write it to a TARGA file. The functions to do write in TARGA file format are from the "LUG" library due to Raul Rivero. The program "sx11" to display a TARGA file is also from the same library. We have extracted these two utilities from the LUG library and provided them in the subdirectories "tga" and "sx11".

Input File Format: The file format we use is a modification of the Neutral File Format (NFF) described in the Standard Procedural Database (SPD) of Eric Haines. The modified NFF is described in the file called NFF in this directory. One can also look at the sample files. In the NFF file format, perspective projection is assumed.

back to contents


Gossamer, a Free Macintosh VR/3D Renderer, by Jon Blossom (jonbl@microsoft.com)

Gossamer 2.0, a real-time 3D walkthrough engine for the Macintosh, is now available - for FREE!

Gossamer is a very fast, general 3D polygon rendering engine. This version radically improves speed over version 1.1, fixes a number of bugs, and focuses on a more coherent user interface for "experimenters."

Version 2.0 also supports object and world files based on the Rend386 PLG and WLD formats. The Gossamer 2.0 package includes a number of sample worlds and objects ported directly from the PC to the Macintosh, and there are others available on bulletin boards, electronic services, and ftp sites all over.

The package is available for anonymous ftp from ftp.apple.com in the pub/VR/graphics.systems directory.

If you have a Macintosh and are interested in 3D graphics, this will be well worth your time.

The system requires a 68020 or better processor Mac running system 7 or system 6.x with 32-bit color QuickDraw. A color display is nice but not necessary.

If you like Gossamer 2.0, please let me know!

back to contents


Antialiasing Issues, by Arijan Siska (arijan@kette.fer.uni-lj.si)

I want to get some attention to the (in my opinion) a very serious issue: antialiasing.

When a raytracer with a finite resolution (obviously a resolution cannot be infinite) renders an image jagged edges appear in picture (or in case of an animation, when difference between two consecutive frames is large (when objects move fast), animation tends to flicker).

These type of problems can be solved by two approaches:

- supersampling: is a very very expensive method, since it involves much extra (often unneeded) calculation, but generally it gives very good results (image quality).

- adaptive sampling: implies that there exists some criterion function, upon which you can decide whether you should subdivide further to gain a more precise answer or you should be satisfied with the approximation you already have. Note that in general there is no way to make this decision function absolutely correct. The best counterexample that I can think of is a thin wire fence in front of uniform background. If you use textures with rapid changes it can happen that you subdivide (to the maximum level) 80% the pixels, which is effectively supersampling, but slower (you need to evaluate criterion function all the time). I don't see how some kind of preprocessing could help you with criterion function, since all those reflections refractions .... are there.

____

Steven C. Demlow (demlow@cis.ohio-state.edu) replies:

I played around with a variety of AA approaches in both my own ray tracer and the public domain POV ray tracer. I tried various derivations and combinations of supersampling, stochastic jittering, adaptive methods, and filtering. For the animation project I was working on I ended up using 4x4 stochastically jittered grids on each pixel and a tent filter that extended into the (cached, of course) grids of neighboring pixels. I've been working on using a hexagonal grid instead of a rectangular one (this gets tricky when you try to overlap the arbitrarily-sized filtering grids of adjacent pixels). The hex grid supposedly provides close to an optimal ray distribution for AA purposes.

It sounds like you would do well to add filtering to your ray tracer - it can help a lot.

The conclusion I came to, after eight months of rendering on a bunch of HP7?0s, was that ray tracing is not the way to go to generate a lot of high- quality images. :) I love ray tracing but there are reasons that it sees little use in production environments.

____

Andy Key (ak@hursley.ibm.com) replies:

I implemented Whitted Adaptive Supersampling as my anti-aliasing mechanism. Really, the test of seeing whether to subdivide is tiny compared to the cost of spawning a ray. I support un-anti-aliased, and whitted. I was going to add unconditional-supersampling to improve the case when I have fine detail textures, but I am not sure it will buy me a noticeable difference if I do.

back to contents


Microcosm, by Abe Megahed of Cosmic Software (cosmic@world.std.com)

[I include this here as there is a free demo and images available. It's a nice system, allowing a wide range of interactive techniques with ray tracing, and last I heard they were adding support for native graphics packages (e.g. Starbase on HP's), multiple windows, and picking - they're up to version 1.4 or so by now.

This package was also the easiest system I ever dealt with for rendering on a network (not that I've dealt with a lot, but...): I simply started up the daemons, let the software know which computers to use (HP workstations, in my case), and let the software suck up resources and render at great speeds. Impressively painless. -EAH]

Microcosm, Version 1.2, New Product Announcement / Free Demonstration Version

A new version of Microcosm is being released for many popular platforms including:

*  IBM PC / MS-DOS
*  DEC / Alpha
*  DEC / MIPS
*  HP 9000 Series 700 (Snake)
*  Sun Sparkstation
*  IBM RS 6000

Microcosm offers the highest quality rendering features such as ray tracing, texture mapping, bump mapping, and Phong shading as well as interactive animation capabilities. A free demo version and over 100 example description files of animations, simulations, interactive environments, objects, and pictures is available via anonymous FTP.

What is Microcosm?

The Microcosm system is composed of a set of advanced 3D graphics routines which is controlled by a simple, high level interpreted programming language called SMPL for 'Simulation / Modeling Programming Language'.

This gives even the novice programmer the power and flexibility to easily create graphics applications which could only previously be done with great difficulty and expense in low level languages such as C. Since the language is interpreted, you may change things and immediately re-run your graphics program without waiting for the computer to re-compile it. It's fun and easy - like programming an Apple II on steroids!

Most computer graphics intensive programs spend at least 95% their time in the rendering, so using the interpreter to control the renderer doesn't slow the graphics down by more than 50ver a fully compiled program.

Features of Microcosm

Microcosm incorporates a number of totally new and innovative rendering algorithms in a well integrated system. Some interesting features are as follows:

Rendering Features:
*       Shading Language
*       Surface Mapping
*       Procedural Textures
*       Real-Time Soft Shadows, Reflections, and Transparency / Refraction
*       Interactive Coarse Ray Tracing
*       Clean Line (Silhouette) Rendering Modes
*       Shaded Rendering Modes
*       Ray Tracing
*       A Choice of Projections
*       Hierarchy
*       Stereo Rendering

Modeling Features:
*       Procedural Modeling
*       Fractals
*       Variety of Primitives
*       Extensibility

Programming Features:
*       Easy-to-Read Syntax
*       Procedural, Block Structure
*       Flexible Parameter Passing
*       Built-in Data Types
*       Smart Arrays
*       Nested Comments

The demonstration version of Microcosm can be obtained by anonymous ftp at: dpls.dacc.wisc.edu: pub/graphics/mcm/mcm_demo.zip. The demo version runs for 1 minute before quitting and also is unable to save files, so it can be used only to preview simple renderings or animations. A number of finished renderings are available in mcm/images to illustrate the advanced rendering capabilities of Microcosm. Also provided free are about 100 example description files to demonstrate the capabilities of Microcosm.

Please contact us for specific details about these or other platforms. Any other information, including price and/or ordering information can be obtained as follows:

Cosmic Software Corp.
1413 Mound St.
Madison, Wisconsin
53711
cosmic@world.std.com
Tel: (608) 259-1776
FAX: (608) 233-4995

back to contents


Fisheye Lens Distortion, by Greg Ward (greg@pink.lbl.gov)

Almost all wide angle photographic lenses have a bit of this, but in a rendering program it is easier to avoid.

In a perfect perspective image, straight lines will always be straight, no matter how wide the viewing angle becomes. Viewing angles can never be equal or greater than 180 degrees, however, because the arc tangent blows up. A full view angle close to the maximum will cause the center of the image to all but disappear, and the view will be dominated by what surrounds the viewpoint. (Try it, I guarantee you won't like it.)

In order to get a view of 180 degrees or greater, it is necessary to adopt some sort of perspective distortion. Most commercial fisheye lenses use a distortion that causes distances from the center of the image to be proportional to the geometric angle from the central line of sight. Another type of lens creates a view equivalent to taking a hemispherical image and projecting it onto a plane, those such lenses are much harder to come by.

Another poster (Benjohn Barnes) mentioned that these effects are easier to achieve in a ray tracing program, and he's probably right. I didn't have too much trouble implementing these view types in Radiance, and they come in quite handy. I can even render a 360 degree fisheye view, where the surround of the circular image is actually a single point. Neat trick.

P.S. When it comes right down to it, we all have eyes evolved from fishes.

back to contents


Optical Ray Tracers

[A common question on sci.optics is what ray tracers there are for lens design. Here are some cullings. -EAH]

Mark Butterworth (markb@hpcss01.cup.hp.com - address now invalid)

Instead of driving this subject in to the ground, try the library at your university and see if they have:

Modern Optical Engineering by Warren J Smith (he taught me) Applied Optics and Optical Engineering by Kingslake volume 3 and volume 8 are good for this subject

Warren Smith just published a new one (1992) that is a collection of lens designs. I forget the title, something like Optical Engineering: a resource manual. Published by McGraw Hill.

The lenses in this book are also available on a disk library for the Genesee ray tracing program. Warren designed alot of the lenses used by Panavision, just to mention one.

____

On the commercial side, an excellent package is ORA's CODE V (that's a Roman numeral 5). It's highly regarded and we've been happy with it. They'll let you have a free trial account on their dial-up VAX.

Optical Research Associates is in Pasadena,CA at (818) 795-9101

J. Sallay (sallay@scubed.com)

____

In article (ps7Mmch.argil@delphi.com), argil@delphi.com says:
>Can anyone suggest a good commercial ray tracing program for general
>optical design. We are planning on spending a reasonable amount, like
>up to $1500. We have only experience with much more expensive packages.

I don't think you can beat Zemax in this price range. See their ad in Photonics Spectra (p. 19 of the May '94 issue) or Laser Focus World (p. 7 of May). You can also send email to focusoft@crl.com They will send a free demo disk which is fully functional except that it won't save lenses. They plan to post it to ftp servers as soon as they get a readme done. Caution: Focusoft is moving to Arizona and turning into Focus Software. They hope to be operational by 1 June. The new phone numbers are: voice: 602/749-5646 fax: 602/749-0987. (Ken got tired of the California government.)

Steve Eckhardt (skeckhardt@mmm.com)

____

If you have access to Mathematica (Wolfram Research Inc), there is a Notebook called LensLab, available at MathSource.wri.com in directory pub/Applications/Engineering/Other, with the item # 0204-343. It is a decent ray tracing program with an extensive set of functions for lenses, mirrors, prisms etc.. It is relatively slow, unless you run Mathematica on a fast Workstation, Quadra, Pentium,... machine.

Rudolf Oldenbourg (rudolfo@mbl.edu)

____

A good optical tracer is the new Mac version of Beam, from Stellar Software, PO Box 10183, Berkeley, CA 94709, Fax 510-845-2139. I helped with the beta testing, so I know it's good.

A. David Beach (d.beach@irl.cri.nz)

____

For a freeware optics ray tracer, try irt52.zip in /pub/irt at herx1.colorado.edu. Use anonymous ftp to get this software. It is written for MS-DOS window and you need an unzip program to unzip it.

Djamshid Navabi (djamshid@lasa.com)

I've tried it: can't get past the demo example without a GPF that causes Windows to quit to DOS the next time I try to run irt. If I then try to run Windows it tells me something gruesome like "invalid command processor" or some such. I'm trying to compile a more responsible set of actions to send to the author but I wanted to mention it here to see if any one else has had the experience or if it may be my system.

Neal E. Tornberg (tornberg@netcom.com)

back to contents


Correcting Normal Direction, by Gavin Bell (gavin@krypton.engr.sgi.com)

[There are a lot of polygonal models out there with inconsistent surfaces. The problem is this: you're given some random set of polygons and you want to consistently orient them outwards so that your ray tracer or z-buffer can use backface culling (i.e. ignore visible backfaces) and so speed performance. Consistent orientation, that is, getting all the faces to be in clockwise orientation, is fairly simple: once you have the mesh of the object, each shared edge must be traversed once in both directions. So if two polygons share an edge and traverse it in the same direction, then the order of vertices of one of the polygons is reversed. Continue the process until all shared edges are traversed in both directions or until you get stuck (e.g. a moebius strip doesn't work). The next part is to know which side of the polygon set is the outside. This can certainly be done manually, but here's a method of doing it automatically. -EAH]

[someone (sorry, the name was deleted in the posting) writes:]
>> The user picks
>> a "Seed polygon" and I recursively "grow" a surface starting at
>> that polygon, a neighboring (child) polygon is considered to be flipped
>> if the child traverses the two shared vertices in the same
>> direction as the parent.

[someone else (sorry, name deleted) writes:]
>If you are not able to interactively pick such a seed polygon, there is an
>automatic way, but it takes time to write. The idea is an extension of a
>point in polygon algorithm. Basically, to find if a point is within a
>polygon, you can extend a ray from that point to infinity, if the ray crosses
>an even number of edges of the polygon, the point is outside (where 0 is
>defined to be even). If it crosses an odd number, it is inside.
[I think the concept here was to take a vertex and see which side was outside
by ray tracing. -EAH]

A better method:

Consistently orient all of the polygons (you need to know which edges are shared to do this, and this isn't possible for some objects-- e.g. mobius strips, Klein bottles, etc).

Now, choose the point 'P' in the middle of the bounding box of the object. For each triangle in the object, compute a signed volume for the tetrahedron formed by the triangle and P. Arrange your calculation so that the area will be positive if P is left-hand-side of the triangle and negative if P is on the right-hand-side of the triangle. (if your triangle is ABC, then doing (AB.cross.BC).dot.P will have this property).

Add up all of the volumes. If the result is positive, then the normals are oriented 'outside'. If the result is negative, then the normals are oriented 'inside'. If the result is zero or very close to zero, then the object is flat or has just as many concave parts as convex parts.

This will always work for completely enclosed objects, and does the right thing for surfaces-- it chooses the orientation that marks the surface 'most convex'. It works for self-intersecting objects.

Here's the code I use:
(If you have Inventor 1, this is in the 'ivnorm' code:)

    int i, j;

    int total_v = 0;
    SbVec3f average(0.0, 0.0, 0.0);

    for (j = 0; j < length(); j++)
    {
        Face *f = (*this)[j];
        if (f->degenerate) continue;

        for (i = 0; i < f->nv; i++)
        {
            average += verts[f->v[i]];
            ++total_v;
        }
    }
    average /= (float) total_v;

    float result = 0.0;

    for (j = 0; j < length(); j++)
    {
        Face *f = (*this)[j];
        if (f->degenerate) continue;

        for (i = 1; i < f->nv-1; i++)
        {
            SbVec3f v1 = verts[f->v[0]] - average;
            SbVec3f v2 = verts[f->v[i]] - average;
            SbVec3f v3 = verts[f->v[i+1]] - average;

            float t = (v1.cross(v2)).dot(v3);
            if (f->orientation == Face::CCW)
            {
                result += t;
            }
            else if (f->orientation == Face::CW)
            {
                result -= t;
            }
            else
            {
                assert(0);
            }
        }
    }
    return result > 0;

back to contents


Graphics Gems IV Table of Contents, by Paul Heckbert (ph@cs.cmu.edu)

[I trimmed out the author names for the sake of space. Incidentally, I've found Gems IV to be subtly useful - don't judge the articles just by their titles! For example, "Detecting Intersection of a Rectangular Solid and a Convex Polyhedron" by Ned Greene is actually about a method for determining if a bounding box is visible within a viewing frustum, a very handy tool. -EAH]

Below is the table of contents for "Graphics Gems IV". This table also serves as an index to the code in the FTP collection. Note that every article has text that appears in the book but not in the FTP archive, and some articles contain no C or C++ code.

file or         book    chapter title and author
directory      chapter
------------------------------------------------------------
                I       POLYGONS AND POLYHEDRA
centroid.c      I.1     Centroid of a Polygon
convex_test/    I.2     Testing the Convexity of a Polygon
ptpoly_weiler/  I.3     An Incremental Angle Point in Polygon Test
ptpoly_haines/  I.4     Point in Polygon Strategies
delaunay/       I.5     Incremental Delaunay Triangulation
vert_norm/      I.6     Building Vertex Normals from an Unstructured Polygon
                        List
                I.7     Detecting Intersection of a Rectangular Solid and a
                        Convex Polyhedron
collide.c       I.8     Fast Collision Detection of Moving Convex Polyhedra

                II      GEOMETRY
                II.1    Distance to an Ellipsoid
dist_fast.c     II.2    Fast Linear Approximations of Euclidean Distance in
                        Higher Dimensions
outcode/        II.3    Direct Outcode Calculation for Faster Clip Testing
sph_poly.c      II.4    Computing the Area of a Spherical Polygon
                II.5    The Pleasures of `Perp Dot' Products
                II.6    Geometry for N-Dimensional Graphics

                III     TRANSFORMATIONS
arcball/        III.1   Arcball Rotation Control
                III.2   Efficient Eigenvalues for Visualization
inv_fast.c      III.3   Fast Inversion of Length- and Angle-Preserving Matrices
polar_decomp/   III.4   Polar Matrix Decomposition
euler_angle/    III.5   Euler Angle Conversion
                III.6   Fiber Bundle Twist Reduction

                IV      CURVES AND SURFACES
data_smooth/    IV.1    Smoothing and Interpolation with Finite Differences
                IV.2    Knot Insertion using Forward Differences
                IV.3    Converting a Rational Curve to a Standard Rational
                        Bernstein-Bezier Representation
curve_isect/    IV.4    Intersecting Parametric Cubic Curves by Midpoint
                        Subdivision
patch_conv.C    IV.5    Converting Rectangular Patches into Bezier Triangles
nurb_polyg/     IV.6    Tessellation of NURB Surfaces
                IV.7    Equations of Cylinders and Cones
implicit.c      IV.8    An Implicit Surface Polygonizer

                V       RAY TRACING
                V.1     Computing the Intersection of a Line and a Cylinder
ray_cyl.c       V.2     Intersecting a Ray with a Cylinder
vox_traverse.c  V.3     Voxel Traversal along a 3D Line
multi_jitter/   V.4     Multi-Jittered Sampling
minray/         V.5     A Minimal Ray Tracer

                VI      SHADING
                VI.1    A Fast Alternative to Phong's Specular Model
                VI.2    R.E versus N.H Specular Highlights
                VI.3    Fast Alternatives to Perlin's Bias and Gain Functions
                VI.4    Fence Shading

                VII     FRAME BUFFER TECHNIQUES
                VII.1   XOR-Drawing with Guaranteed Contrast
                VII.2   A Contrast-Based Scalefactor for Luminance Display
dyn_range/      VII.3   High Dynamic Range Pixels

                VIII    IMAGE PROCESSING
emboss.c        VIII.1  Fast Embossing Effects on Raster Image Data
coons_warp.c    VIII.2  Bilinear Coons Patch Image Warping
convolve.c      VIII.3  Fast Convolution with Packed Lookup Tables
thin_image.c    VIII.4  Efficient Binary Image Thinning using Neighborhood Maps
clahe.c         VIII.5  Contrast Limited Adaptive Histogram Equalization
mrsfoley.im     VIII.6  Ideal Tiles for Shading and Halftoning

                IX      GRAPHIC DESIGN
                IX.1    Placing Text Labels on Maps and Diagrams
graph_layout/   IX.2    Dynamic Layout Algorithm to Display General Graphs

                X       UTILITIES
trilerp.c       X.1     Tri-linear Interpolation
interp_fast.c   X.2     Faster Linear Interpolation
vec_mat/        X.3     C++ Vector and Matrix Algebra Routines
GraphicsGems.c  X.4     C Header File and Vector Library
                V       RAY TRACING

back to contents


Beyond Graphics Gems, by Paul Heckbert (ph@cs.cmu.edu)

[From the Preface of Gems IV, which Paul posted to the net. -EAH]

In addition to the "Graphics Gems" series, there are several other good sources for practical computer graphics techniques. One of these is the column ``Jim Blinn's Corner'' that appears in the journal "IEEE Computer Graphics and Applications". Another is the book "A Programmer's Geometry", by Adrian Bowyer and John Woodwark (Butterworth's, London, 1983), which is full of analytic geometry formulas. A mix of analytic geometry and basic computer graphics formulas is contained in the book "Computer Graphics Handbook: Geometry and Mathematics" by Michael E. Mortensen (Industrial Press, New York, 1990). Another excellent source is, of course, graphics textbooks.

back to contents


Radiosity vs. Ray Tracing, by Rico Tsang (csrico@cs.ust.hk)

[I made a few minor fixes, but otherwise this was a nice cheat-sheet summary of the functional (vs. algorithmic) differences between meshed radiosity and classical ray tracing. -EAH]

        Radiosity                                    Ray Tracing

work best to model -                    work best to model -

1. Area light sources                   1. Point light sources
2. Diffuse reflections                  2. Specular reflections
3. Color bleeding                       3. Refraction effects
4. Soft shadows                         4. Sharp shadows

Limitations of Radiosity
========================

1.  All surfaces are assumed to be perfect diffuse reflectors.
2.  Specular reflections and transparent effects cannot efficiently modelled.
3.  Time & storage consuming.  For n surface patches in a scene, you need to
    calculate and store n^2 form factors.  If you use the 'progressive
    refinement' radiosity method or hierarchical radiosity, you can minimize
    the storage requirement for storing the form factors.

Advantages of Radiosity
=======================

1.  The calculation of radiosities is view-independent.  Once it does so, a
    view of the environment can be generated with relatively little effort
    (i.e.  via gouraud interpolation) for any camera position.

    ==> provides the capability of interactive walkthrough

2.  With the progressive refinement method, a geometrically correct view of
    the environment can be displayed almost immediately.

back to contents


ACM SIGGRAPH Online Bibliography Updated, by Frank Kappe (fkappe@iicm.tu-graz.ac.at)

This is to announce that the well-known ACM SIGGRAPH Online Bibliography (that holds some 16,000 references to computer grahics literature) has been updated. The ACM SIGGRAPH Online Bibliography Database was compiled by Stephen N. Spencer (spencer@cgrg.ohio-state.edu) with help from various contributors.

The data set is available through the Hyper-G server of the Graz University of Technology either by WWW protocol: http://www.tu-graz.ac.at/CSIGGRAPHbib

or by Gopher protocol:
        gopher://gopher.tu-graz.ac.at/11SIGGRAPHbib

or using a Hyper-G native client such as Harmony (for UNIX/X-Windows), which works best, of course. If you are interested in obtaining a copy of Harmony please look at ftp://iicm.tu-graz.ac.at/pub/Hyper-G/Harmony

for downloading instructions. People without clients may also try telnet://info.tu-graz.ac.at

to access the Hyper-G server of Graz University of Technology.

More information about the the ACM SIGGRAPH Online Bibliography Project can be reached from the URLs mentioned above.

[The bibliography can be FTP'ed from siggraph.org: /publications/bibliography -EAH]

back to contents


How to be Notified of New POV Releases

The official POV distribution site is ftp.uwa.edu.au. This site has become quite active and holds many POV scene files and utilities as well as POV itself.

As an adjunct to this site, a mailer has been set up which permits file requests to be made by email, and which also manages a mailing list.

The site and the list itself is maintained by a member of the POV-Team [Chris Cason (cjcason@yarrow.wt.uwa.edu.au)].

You can request that your name be placed on one or both of the POV mailing lists. These are not normal mailing lists in that you cannot submit messages for them ; only the POV-Team can. The lists are as follows -

  ANNOUNCE    Used when new releases of POV are made. This includes POV-related
              items from the POV-Team, such as the soon-to-be released hypertext
              help system.

  NEWS        Used to send new issues of POV-News and anything else relevant
              to POV, such as new publications, magazine articles, etc.

Volume on both of these lists will be extremely low ; perhaps only one message per month if even that. This is the easiest way for POV users to be informed of patches, bug fixes, new releases, new features, release dates for new versions and the actual release of new versions.

To join these lists, mail a message to -

  povmail@uniwa.uwa.edu.au

The subject of the message is unimportant.

In the body of the message, place the commands -

  JOIN ANNOUNCE         (to join the announce mailing list)
  JOIN NEWS             (to join the news mailing list)

    - or -

  JOIN ALL              (to join both)

You should receive a reply indicating that your request was successful. If you don't, please try again. For more information, please mail the above address with a message containing the word -

  HELP

on the first line.

back to contents


PoVSB Windows-based Modeler v0.85, by Jeff Hauswirth (jhauswir@carbon.denver.colorado.edu)

What's new-

        Bezier Surfaces.
        A help file.

PoVSB is now shareware at $30. Everything is functional except saving the Bezier objects. Exporting Bezier objects to PoV is functional.

PoVSB is a Windows based modeler for the Persistence of Vision Raytracer. The goal of PoVSB is to allow users of PoV to quickly and easily design scenes in the Windows environment with true camera preview of the scene so no guess work is involved.

I would like to collect a bunch of PoVSB example files to include with PoVSB and to also make them available via ftp so other people can use them. If anyone is interested, just e-mail me your example files to include with PoVSB.

I have included two example files- teacup and satellite. Try rendering the satellite with and without the MB PoV option. With the MB option it was 6 times faster, if I remember right.

I would like to get some feedback from all the people with PoVSB, which I think is up near ~350. I want to know what new features you would like.

PoVSB has been tested on 386-SX-4M up to 486-66-16M. The 386-SX had trouble with loading the teacup example file. Other than that I have found no problems.

Features:

    Four view of scene:
        3 ISO views, 1  Camera view
    Objects supported:
        Sphere, Box, Plane, Cone, Cylinder, Torus,
        Height Fields, Bezier Surfaces.
        CSG:  Union, Merge, Intersection, Difference
        RAW:  Only flat triangle output available (for now).

    Interactive transformations of objects

    Lights: Point, Spot

    Multiple Layers

    Textures:   Customizable, add your own textures

How to get PoVSB:

ftp to: vincent.iastate.edu
Username: anonymous.jhaus
Password: YOUR_USERNAME@YOUR.EMAIL.HOST

If you already have PoVSB you only need to get povsbXX.zip, Otherwise you need to get povsb.zip.

back to contents


Porting Rayshade, PBM, etc from Unix to DOS, by Mike Castle (mcastle@mcs213k.cs.umr.edu)

Amazingly enough Jasen M. Mabus said:
> Where can I find PBMtools, a preprocessor implementor, and CoProcessor
> emulator for 386 in DOS executable?

I ported pbmplus using djgpp a couple years back. djgpp is a development environment by DJ Delorie that includes a homegrown dosextender called "go32", gcc/g++ compilers, flex, bison, assorted binary utilities (ar, ld, nm, etc), make, and so on. This environment is an eclectic mix of unixish and dosish calls, but is a very workable environment.

My port of pbmplus can be found on any simtel archive in graphics/pbmpl19d.zip (such as oak.oakland.edu in pub/msdos/graphics/pbm...).

djgpp can also be found in the djgpp dir (pub/msdos/djgpp on oak). You could scan cpp from the djgpp distribution, and have a working preprocessor.

I included the then current emu387 387 emulator from the djgpp package in my pbmplus port, however, that was some time ago. There are newer and better emulators that can be found in the djgpp archives. Of course, the emu387 and wmemu387 (another emulator compatible with go32, but done by someone else) will only work with go32 binaries.

The go32 included with my pbmplus port is out of date, and you may want to get the most recent go32.exe from the djgpp packages. you may also have to run a program called 'dpmifix' on the pbmplus binaries to get things working correctly (i'm not sure as i don't use dos much anymore, having switched to os/2, and so i'm not quite up on djgpp and stuff, and i don't even have my own copy of my pbmplus port anymore so....).

btw, i used the djgpp package to port rayshade quite some time ago, but as there was already a 386 port done using a commercial dos extender, never made it available. The port was very straight forward, and only required the normal flex/lex bison/yacc fixes (such as rayshades misuse of the yyline action), 8.3 file name fixups, and binary mode stdin/stdout. It worked very well, including support for RLE files (i ported the URT as well), cpp, and so on.

back to contents


REYES & Patents, William C. Archibald (billa@entropys.sps.mot.com)

> Is REYES patented?

Pixar holds three (at last count) patents (including US Patent Number 5,025,400) on "Pseudo-random point sampling techniques in computer graphics". This includes claims that cover stochastic ray-tracing as well as what you are probably referring to by REYES.

> If so, what part of the algorithm?

Clearly stochastic sampling techniques as they apply to computer graphics.

> Is one allowed to implement the algorithm?

I believe that in the U.S.A. one is allowed to implement the algorithm for the purposes of studying it and trade-offs that may be involved. One is not allowed to redistribute any implementations without permission, as that is the very thing that patent law is set up to protect against.

[and in a separate note by the same author:]

In patent 5,025,400 the claims go on for 4.5 pages (9 columns) of legalese, and they seem to pretty much make claim to usage w/ respect to lens effects (depth of field), motion blur (temporal jitter), penumbra and other soft shadow effect, and just about every variation of jittering reflected rays of objects for any reason you might imaging. I've not been able to really pin down good, old-fashioned anti-aliasing anywhere in the claims though...

back to contents


Going from AutoCAD and 3DS into Ray Tracing, by Sean Ross (rosss@CSOS.ORST.EDU)

Well, for starters, saying one raytracer is "better" than the others is guaranteed to cause a flame fest of amazing proportions, so I will just tell you about my experience so far and let you make your own determinations.

What I discovered, from following this group for a while and reading the "Mini-FAQ", is that there are quite a few different raytracers around with different capabilities. I found Vivid a bit rough to get started with, and therefore tried PoVray, it's been great so far. I find it easy to use because the language is fairly intuitive.

What has turned out to be easiest for me to create good raytracings with a fairly short learning curve is using the following method:

Use AutoCAD Release 12 with AME to create the initial objects. AME allows very easy creation of complex 3d objects using addition, subtraction, intersection, etc.

Export the finished objects into 3d Studio (I'm using ver 1) to set the camera and lighting. Assign surfaces to all objects with standard names like "surface1" etc.

(If you don't have access to AutoCAD and/or 3D Studio, try using Moray, it's shareware ($50) and seems to be easy to use and well supported)

Use 3DS2POV program to convert the 3d studio file to a PoV file and include file.

Edit the resulting .pov file and replace 3d studio's surfaces with the much better surfaces included with pov. (I've also found it very simple to modify these surfaces to do almost anything.)

Render sample files using a small size (160 x 100) and adjust any settings you don't like in the .pov file.

Start the final rendering with high quality, anti-aliasing, and a large size, and plan on not using your system for a while if you're using a lowly 486DX266 w/8MB like me. My finished quality renderings generally take about 8 hours to process for a 2048 x 2048 image, and I consider these images to be fairly simple (not too many complex objects).

If the above doesn't sound like too much work, give PoVray a try, it's given me very good results with a negligible learning curve. I plan on trying out some of the others available, especially Radiance because of its radiosity features, but I haven't got around to it yet.

If anyone else has any suggestions on how I might improve upon the methods I described above, I would be greatly interested.

By the way, just one warning: after I started creating these images, I find myself dedicating a pretty good amount of time to it, I think it's pretty addictive, so be careful.

back to contents


Computer Lego Modeling, by Paul Gyugyi (paul@gyugyi.win.net)

Check out the files on earthsea.stanford.edu in the ~ftp/pub/lego/cad/click and ~ftp/pub/lego/cad/rayshade directories. They include:

1) A library of high-detail shape definitions for Rayshade, a 3D modelling/ray tracing program (legolib.ray).

2) A definition of a language, LADEL, for specifying brick types and positions.

3) A compiler to convert LADEL files to rayshade input files that use the above library of brick definitions.

4) A new extension to the compiler that generates a 3D wire-frame image from a LADEL file. You can fly around and rotate it. It uses an Xwindows library that is similar to GL, called VOGL, and runs on UN*X machines.

There is _no_ documentation for most of this stuff, but if you want to try it out, email me any questions you have and I'll start creating a how-to.

back to contents


Rowe's Ray Tracing World BBS, by Harry Rowe (Harry.Rowe@wedowind.meaddata.com)

phone: (513) 866 - 8181 v.32bis (Dayton, OH)

I have a new ray tracing BBS. No fees. It does require user to have Windows 3.1 and special client software which can be downloaded on the first call. It is Excalibur (tm) based and is a 100Windows GUI BBS. I only carry DOS/Windows tracers, but also have tons of objects, textures, converters, etc. I have most of what Compuserve GRAPHDEV has in the way of RT utilities. I primarily support Polyray v1.7 and Imagine 3.0 for DOS. We also have expert 3DS users.

[Harry has recently made a nice 500+ line summary guide to the major POV utilities, with 4-15 lines about each one. I won't put it here, but contact him for where it is (or if all else fails, contact me and I'll send you the old copy I have). -EAH]

back to contents


On Using BSP trees, by Benton Jackson (benton@fenriswolf.com)

[BSP trees are a nice technique for doing 3D and avoiding z-buffering in games. You partition a static environment with a binary-tree hierarchy of cutting planes, classifying everything in the node as in front of or behind the plane of some given polygon (and splitting things cut by the plane). Note that this is different than the BSP trees used in ray tracing, where the planes are independent of the polygons and are essentially a more flexible octree like structure. Worth understanding in general. -EAH]

>Do I have to build a new BSP tree for all visible polygons at each frame
>redraw? This is what I suspect, but I can't help thinking that there is
>something more I could do to improve calculation times if I had separate BSP
>trees for each shape.

I'm surprised that isn't in the FAQ. That's the whole point of BSP trees! Based on the current viewpoint, if it is in front of the root face, draw the back tree, then the face, then the front tree. This works since that face is guaranteed to be in front of everything on one side of the tree, and behind everything on the other side. Which way you go depends on the viewpoint. Cool, huh? Like this:

DrawBSP(tree B) {
   if (!B) return;
   if (in_front_of(viewpoint,B->face) {
      DrawBSP(B->back);
      DrawFace(B->face);
      DrawBSP(B->front);
   } else {
      DrawBSP(B->front);
      DrawFace(B->face);
      DrawBSP(B->back);
   }
}

This doesn't completely depth sort the faces. But you don't have to! You just need to ensure that a face that obscures another faces is drawn in the correct order. That's what this does.

If an object moves, then the tree has to be rebuilt. I think there is a way to merge BSP trees, but I don't know how. Anybody?

back to contents


Books about Commercial Renderers, by Don Lewis, Jimbo and Yury German

3D Studio 3.0:

Don Lewis (djlewis@ualr.edu) writes:

Try Inside 3D STUDIO Release 3, comes with a CDROM of sample DXF's and images and maps. Listed as: ISBN 1-56205-075-3 price $49.95 USA / $65.95 CAN / L46.99 Net U.K. (inc of VAT)

About the CD:
Meshes, Texture maps, Bump maps, Graphics file format conversion utility, Special effects filters, Utilities for image viewing, printing, and conversion (windows and dos), An updated Autodesk animation player, Files for exercises in the book, etc ...

I like the book and a lot applies to 3DStudio 2.0 as well.

____

Jimbo (Jimbo@agdesign.demon.co.uk) writes:

Inside 3D Studio:
-----------------

Author(s):      Steven D. Elliott
                Phillip L. Miller
                Gregory G. Pyros

ISBN: 1-56205-075-3

Publishers: New Riders Publishing.

An excellent book including a CD, unfortunately doesn't include the IPAS routines mentioned numerous times throughout.

3D Studio Applied:
-------------------

Author(s): Nancy Fulton

ISBN: 0-929870-24-7

Publishers: Advanstar Communications Inc.

________

Imagine system:

> Question: My uncle has this and would like to know
> if there are any other references for IMAGINE that are a
> bit easier to understand for those less technologically literate.

Yury German (yury@bknight.jpr.com) writes:

Yes, there is a great book, it's called Understanding Imagine. Steve Worley is the author. Now the book is "Understanding Imagine 2.0" for the 2.0 version. In a few months the book will be out for "Understanding Imagine 3.0".

The first book was done with the Amiga computer in mind. The 3.0 book might be done for both computers. If you want you can email Steve at worley@cup.portal.com for information.

The books are great with alot of humor and all the things needed to make manuals easy and understandable.

back to contents


Eric Haines / erich@acm.org