From: ismail@pci.ists.ca (Karim Ismail)
Subject: TECH: FLY! VR Software
Originator: hlab@milton.u.washington.edu
Organization: PCI Inc.
Date: Thu, 3 Sep 1992 19:52:32 GMT



Some of you VR gurus on sci.v-w may have seen my requests for hardware
interfacetips for 3-D glasses to a product we have called FLY!, a 3-D
perspective scene generation package.  FLY! promises to be a very
exciting VR product - it is possible to generate images which view the
data set from any position and angle, the scene generation taking
place in near real-time.

Some features: height exagerration of upto 3X, 30-120 degree view
cones, horizon tilt of 0 to 30 degrees, dynamic resizing of windows
upto 1024x768.  The anaglyph option generates l/r scenes as r/b images
which can be viewed through 3-D glasses.

We feel that some of you may find FLY! to be a very interesting
product for VR R&D.  If anyone is interested in a demo copy of FLY!,
please contact either myself or David Stanley at PCI.  Because of the
development effort gone into FLY!, it is necessary that we charge for
the demo copies.  We hate to do this, but any further R&D depends on
it.  The FLY! demo is available for $99 on either 1/4" cartridge/4mm
DAT or 8mm formats.  Platforms available are: SUN Sparc, SGI, IBM
RS/6000, HP, Data Gen, DEC, Intergraph and PC SCO/UNIX.

PCI is an GIS/Remote Sensing/Imaging Systems corporation that is known
for its image analysis package called EASI/PACE.  PCI is heavily
involved in graphics R&D, and we are integrating VR into our software
step by step - but our progress is dependent on all the dedicated VR
enthusiasts and programmers like yourselves to give us ideas and
feedback.

Many of you have requested some background information on FLY!. David
Stanley, the creator of FLY! has supplied this:

Fly! is a commercial software package available from PCI Inc.  The
designer of the program and author/writer of the rendering algorithms
was David Stanley.  Christian Orsatti coded the user interface.

Fly! is written entirely in C.  The user interface is Motif 1.1,
X11/R4.  Almost any colour workstation can be used.  This includes:
SUN, IBM/R6000, DG Aviion, SGI, DECstations, PC with SCO UNIX, Kubota
Pacific Titan (aka Stardent), Intergraph Interpro, HP 700's, Oki Data.
8 bit and 24 bit colour is supported.

Given a 1Kx1K image (1Millon polygons) and a 320x240 output frame we
get about 1 frame/sec per 20Mips.  Things scale quite nicely.  For
example on a SGI Power IRIS (8 processors @33 mips) we get about 8-10
frames per second on a 2Kx2K image (4 million polygons).

The core of Fly! is its special quick rendering algorithm.  These are
proprietary so I won't actually say how they work, but I will give a
few hints:

    - No floating point is used (just integer arithmetic and shifts)
    - The inner most loop contains a single integer multiply
      and a few adds/shifts.
    - data is arrange in hierarchies so that faraway areas are only
      coarsely examined.  This means that increasing the data size only
      marginally decrease performance.
    - every frame is calculated ignoring all other previous frames, thus
      turning, repositioning etc... never degrade performance
    - The algorithm works very well with coarse parallelism (for example
      an 4 to 16 processor system like SGI or new SPARC 10) giving near
      linear improvement in speed.
    - No special hardware is used.  Real fast integer CPU's, lots of cache
      and memory, and fast dumping to frame buffers is all that's needed.
      Getting a faster processor automatically improves performance!

Some problems with the algorithm are: can't roll image and can't
smooth foreground pixels without serious degredation of speed.  Also
you had better have enough memory to get everything in RAM, any paging
and things slow to a crawl.  32Mbytes is good for a 2048x2048 image,
128Mbytes for a 4Kx4K etc...

I don't have much experience in 3-D work but have a lot of experience
in Remote Sensing (Satellite imaging).  The Fly! algorithms were
basically developed from scratch without reading much (any?) of the
available literature.  I just looked up how to do general projections
out of a pretty basic geometry book.  Most of the coding and thinking
was done at night at home (on paper).  I don't think this algorithm is
used by anyone else but who knows...  I couldn't even tell what parts
might be similar to known algorithms.  Ignorance is the mother of
invention? :-).

The 3-D effects are done by generating two frames from slightly
different angles and merging them into a red/blue anaglyph image.
Doing full colour into two separate frames would actually be faster
since I could skip the merge step.  All I would need is some VR
goggles and a parallel machine...  I figure that we could get 4 to 8
frames per second with some of the new equipment (e.g., parallel
Crimson) even with two images and a 4K by 4K image.  Oh well, maybe
someday I'll get my hands on that stuff.  For now I have to be content
with a $1 pair of Red/Blue glasses...

PCI hopes to do a lot with Fly! as time goes on.  Thanks for the
interest, its nice to know that people care.

David

For further information, contact Dave: stanley@pci.on.ca or
myself below:
___________ ___________________________________________________________
[____|____]|Karim Ismail               |email:                         |
     ..    |Product Support Engineer   |ismail@pci.on.ca               |
    .  .   |.......................... |...............................|
  .      . |PCI Inc-Richmond Hill, Ont |tel: (416)764-0614             |
.         .|Committed to Remote Sensing|"Is there anybody out there..?"|
------------------------------------------------------------------------

[MODERATOR'S NOTE:  Commercial postings are offered on sci.virtual-
worlds as a public service.  Their appearance here does not 
necessarily indicate endorsement by the moderators or by the USENET or 
its administrators. -- Bob Jacobson]
Newsgroups: sci.virtual-worlds