home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / OTHER / FLY.FAQ < prev    next >
Text File  |  1994-12-02  |  14KB  |  308 lines

  1. The FLY! Demonstration has generated a lot of questions so here is a
  2. traditional response:  a Frequently Asked Question list.
  3.  
  4. FLY!-3D Software is available at: ftp.u.washington.edu 
  5. (/oldpublic/fly)
  6.  
  7. 1.  What are the differences between the FLY! Demo and the real product?
  8.  
  9. The FLY! demonstration is a fully functioning copy of the FLY! program
  10. except that it will ONLY work on the supplied demonstration data.
  11.  
  12.  
  13. 2.  Is there a more extensive demonstration available above and beyond that
  14.     on the Internet?
  15.  
  16. Yes.  PCI has a demonstration that consists of the following:
  17.  
  18. a) FLY! exectuables for about 10 different workstations
  19. b) a  512 x  512 data set (tiny.pix)  (1.5 Mbytes)
  20. c) a 1024 x 1024 data set (small.pix) (  6 Mbytes)
  21. d) a 1536 x 1536 data set (big.pix)   ( 15 Mbytes)
  22. e) a hardcopy manual
  23. f) a pair of (cheap) anaglyph (red/blue lensed) glasses for 3-D viewing
  24.  
  25. Upon special request we can include a 2048 x 2048 (24 Mbytes) data set 
  26. and a manual describing the PCIDSK database file format the data sets are 
  27. distrbuted in.
  28. * Note:  2048 x 2048 dataset is only useful on machines that have 
  29. 48+ Mbytes of RAM.
  30.  
  31. This demonstration is basically identical to that on the InterNet except
  32. that you get some larger data sets and the extra documentation.  
  33. To cover the media, shipping and handling costs we ask for $99.  >:-(
  34. You are encouraged to share the demonstration with others or use it on
  35. as many machines as you like (or can get access to).
  36.  
  37.  
  38. 3.  Who are PCI Inc. anyway?
  39.  
  40. PCI is a company which develops imaging software for Satellite 
  41. and Aircraft Remote Sensing which, we sell all over the world.  
  42. We are located in Richmond Hill (Toronto really...), Ontario, 
  43. Canada.  
  44. FLY! is only one of many products, though probably the most fun...
  45.  
  46.  
  47. 4.  Why is FLY! special?
  48.  
  49. The concept of draping image data over elevation is not new, its been 
  50. around for 10+ years.  However it has always been slow, on a VAX 780
  51. it would take 15 minutes or more to get a single rendering.
  52. Other approaches in the past solved this problem with special hardware,
  53. obtaining much faster (occasionally realtime) speeds, but at enormous cost.
  54. FLY! combines an innovative algorithm coupled with large amount of RAM 
  55. and the fast processing speed of on todays workstations to bring this 
  56. time down to the 1/10th to 1 second range.  This means anyone can now have
  57. 'near' realtime performance on a general purpose workstation.  No special
  58. purpose hardware add ons or graphics cards are required.
  59.  
  60. The FLY! algorithm can also be parallelized, more on this in further
  61. question answers.
  62. FLY! considers every pixel as a unique polygon.  This gives maximum
  63. realism in rendering in 3-D.
  64.  
  65.  
  66. 5.  How fast is the FLY! algorithm?
  67.  
  68. The speed, in frames per second, depends on a lot of factors:
  69.  
  70.     - speed of your CPU 
  71.     - how big the input database is
  72.     - how big an output rendering frame you want
  73.     - various perspective parameters, such as cone of view...
  74.  
  75. As a base reference we will consider the following:
  76.  
  77.     - a 1024 pixel by 1024 line database (1048576 polygon equivalent...)
  78.     - a 320 x 240 output rendered scene
  79.     - a 60 degree view cone
  80.  
  81. Experimentation across a number of machines has shown that it takes about
  82. 22 MIPS of power to generate a rendered scene in 1 (one) second.  For example,
  83.  
  84.     - a  17 MIPS machine (eg Sparc 1+)   gets about  17/22 =  .8 frames/sec
  85.     - a  33 MIPS machine (eg, SGI 4D-35) gets about  33/22 = 1.5 frames/sec 
  86.     - a 130 MIPS machine (eg, DEC Alpha) gets about 130/22 = 6.0 frames/sec
  87.  
  88. Of course not all MIPS are equal across all machines, and I am not to sure
  89. about the relationship to SPECmarks or SPECints.
  90.  
  91. We have further noted the following rules:
  92.  
  93.     - Doubling the database size tends to decrease performance by 25%.  
  94.     - Computational power increases with the square of the X size of the
  95.       output rendering frame (Y size is just extra sky and is not important)
  96.       (eg. 640 x 480 output rendered scene requires 22 x 4 = 88 MIPS)
  97.  
  98. >From these we have developed the following chart which gives the MIPS
  99. required for various configurations to generate a single frame in one second.
  100.  
  101. Rendering sizes are 160x120, 320x240, 450x170, 640x480.
  102.  
  103. Database size       1024x1024              2048x2048              4096x4096
  104. Render size    160  320  450  640     160  320  450  640     160  320  450  640
  105. MIPS             6   22   44   88       7   28   56  112       8   34   68  140 
  106.  
  107. Thus given a 2048x2048 database, a 160 by 120 rendering frame, and a DEC alpha
  108. workstation (130 MIPS) we would get 130/7 = 19 frames/second.
  109.  
  110. Given a 1024x1024 database, a 640 by 480 rendering frame, and a SparcStation 2
  111. (27 MIPS) we would get 27/88 = .31 frames second, or about 3 seconds per frame.
  112.  
  113. The FLY! algorithm can be run on parallel processors.  We have done this on
  114. the Silicon Graphics Power Series (up to 8 processors).  In general FLY!
  115. scales well.  We have found that the MIPS rating of a parallel machine
  116. (for the purposes of FLY!) can be computed as: 
  117.  
  118.         MIPS = #processors * MIPS/processor * 0.8
  119.  
  120. The 0.8 is due to the parts of the algorithm which cannot be parallelized
  121. and general overhead.  In the case of an 8 processor SGI we got an effective
  122. MIPS rating of:    8 * 33 * 0.8 = 210 MIPS 
  123.  
  124. Please consider the above figures as rough.  The following factors can change
  125. the above in some way:
  126.  
  127.     - Whats a MIP anyway?  How do you compare across machines?
  128.     - Large Caches help.
  129.     - You had better have enough RAM.  If ANY disk swapping/thrashing
  130.       occurs the frame rate plummets.  See question on memory below.
  131.     - The quoted MIPS/frame/sec assume a worst case.  If you are near
  132.       an edge looking at the edge frame rates increase...
  133.  
  134. 6.  How much memory is required?
  135.  
  136. FLY! requires about 8Mbytes of RAM + 6 bytes per database pixel.  Thus a
  137. if FLY! is run with a 1024x1024 database it needs about 8 + 6 = 14Mbytes.
  138. A 2048x2048 database would require about 8 + 24 =  32 Mbyes. 
  139. A 4096x4096 database would require about 8 + 96 = 104 Mbytes.
  140.  
  141. On top of this is the normal OS and X11/Motif requirements, say another 8 to 10
  142. Mbytes.  Thus FLY! using a 1024 x 1024 database should be run on a system with
  143. about 24Mbytes of RAM.
  144.  
  145. If you don't have enough RAM then the OS will start swapping parts of the FLY!
  146. data to disk.  Since FLY! typically has to look through most of the data for
  147. each frame this creates a LOT of paging and frame rates drop to almost nothing.
  148.  
  149.  
  150. 7.  Can you tell me more about the FLY! algorithm?
  151.  
  152. The FLY! algorithm is proprietary, source code is not available.  Like most
  153. interesting things it was developed after hours when we could grab a few
  154. minutes when the pressing work of meetings, documentation, phone tag
  155. and tech support diminished somewhat :-).  No papers have been published.
  156.  
  157. PCI won't divulge much but we will point out:
  158.  
  159.     - it uses hierarchies of databases so that as data gets further
  160.       away it uses progressively less computational power.
  161.     - each frame is done 'brute force'.  No information is saved across
  162.       scenes.  This means turning, repositioning has no performance penalty.
  163.     - The inner loops do not use any floating point, everything is
  164.       fixed point.
  165.     - Lots of stuff is table driven.
  166.  
  167.  
  168. 8.  Why doesn't FLY! make use of the special graphics hardware on my machine?
  169.     Wouldn't this make FLY! even faster? or improve the visual quality?
  170.  
  171. FLY! was designed to run on the widest variety of hardware possible with the
  172. minimum of programming.  Using special graphics operations would limit the
  173. FLY! to a small subset of machines.  The FLY! algorithm is designed in
  174. such a way that using special graphics shading/polygon rendering would be
  175. very difficult.
  176.  
  177. Remember that a 1024 x 1024 data base has 1,000,000+ potentially unique 
  178. (square) polygons, a 2048x2048 4,000,000+ polygons.  If we divide the squares
  179. to triangle the numbers double.  It is a pretty unique board that can handle
  180. 8,000,000 triangles and render the appropriate ones 10 to 20 times per second.
  181.  
  182. Of course it is possible to reduce the number of polygons/triangles by 
  183. approximating large area's and use texture mapping.  This has three drawbacks:
  184.  
  185.     - the realism and data accuracy is compromised for visual appearance
  186.       (FLY! is primarily a visual analysis tool where accuracy is vital)
  187.     - in 3-D modes (left and right eye) FLY! gives excellent results
  188.       because the input data often has natural shading and lots of
  189.       detail since every pixel is rendered separately.  The brain is uses
  190.       this to give a better 3-D interpretation.
  191.     - Lots of packages already exist that to this type of thing very well.
  192.  
  193. This is not to say that careful consideration of a particular graphics board,
  194. with substantial changes to the FLY! algorithm, might improve speed/quality,
  195. however PCI has no plans in this direction in the near future. 
  196.  
  197.  
  198. 8.  What about parallelism?
  199.  
  200. The FLY! algorithm is designed to take advantage of parallel processors.
  201. PCI has tested this on parallel processor Silicon Graphics machines already
  202. and improvements in speed are nearly linear with the number of processors.
  203.  
  204. FLY! requires the following characteristics for using parallel processors:
  205.  
  206.     - a Multiple Instruction, Multiple Data (MIMD) architecture
  207.     - every processor must have access to the full shared memory, not just
  208.       a small local amount.
  209.     - there needs to be a large bandwidth to the host computer which 
  210.       shows the rendered images.  For example:  for a 512x512 24bit image
  211.       at 10 frames/sec, we need at least 10Mbytes/second to the host
  212.       computer or video board that shows the frames, probably a lot more.
  213.     - Floating point performance is irrelevant, the FLY! algorithm is
  214.       integer.
  215.  
  216. We have had a number of inquires about using special parallel hardware boards.
  217. Unfortunately, so far, these have not had the characteristics we require.  Also
  218. PCI does not have the resources to reprogram FLY! on the off chance of selling
  219. a limited number of special boards.
  220.  
  221. More promising is the use of parallel workstations, typically these are
  222. already integrated nicely into the memory/graphics subsystem and simple to
  223. program.  The drawback of course, is limited numbers of processors and a 
  224. higher cost, but this is changing slowly.
  225.  
  226. PCI has already experimented with the SGI Power Series (up to 8 processors).
  227. In the future we hope to try the SGI Onyx series (up to 36), the SUN Sparc
  228. (up to 4) and have heard rumours of parallel HP 700's, DEC Alpha's and
  229. IBM Risc System 6000's (numbers of CPU's unknown).
  230.  
  231.  
  232. 9.  Is there any other development in progress on FLY!?
  233.  
  234. Currently development is limited while we evaluate the market potential of FLY!
  235. (and do more boring work on other projects).  However by late summer 1993 you
  236. can expect the following:
  237.  
  238.     - options to improve rendering quality using fitted polygons and
  239.       interpolated colors in the foreground.  Makes much better looking
  240.       renderings at low altitude, but there is a performance hit.
  241.     - DEC Alpha support (Open VMS and Unix) 
  242.  
  243. In the longer term (say end of 1993) you might see:
  244.  
  245.     - Flight Planning
  246.     - Windows 3.1, Windows NT, MAC/OS and OS/2 support
  247.     - Parallel versions for other workstations (like SUN)
  248.  
  249.  
  250. 10. What about Virtual Reality?
  251.  
  252. PCI, (well us programmers actually, and happily the company President, though
  253. not the sales people who can't see any possible sales for years  ;-) 
  254. are really, really interested in doing VR development.
  255.  
  256. Now, by VR, we mean a head mounted display with at least 10 frames per second
  257. frame rate, at some reasonable resolution (say a minimum of 442 x 350).  FLY!
  258. already has a 3-D option using anaglyph (red/blue) glasses, so we know it can
  259. do a good job of generating left/right images.  We also anticipate interfacing
  260. a cyberglove, for virtual gesture recognition, along with auxilary devices
  261. such as the spaceball, LCD glasses, etc.
  262.  
  263. The real problem has to do with compute power.  Refering to question 5,
  264. a 2048x2048 database with 450 resolution needs 56 MIPS per frame per second.
  265. Thus 10 frames/sec = 560 MIPS PER eye = 1120 MIPS, minimum.
  266.  
  267. Now there would be some non parallel overhead and we would probably need to
  268. do some extra work in the foreground to get less blocky images.  Let's say
  269. 1400 MIPS all told.  Not many machines out there with this performance,
  270. but still possible.  For example:  an SGI Onyx with 12 processors,
  271. perhaps by the end of '93 an 8 processor Alpha, etc...
  272.  
  273. While R and D at PCI is gung ho to get such a machine there is the small
  274. problem of cost...  PCI is too small to carry the full burden so we are
  275. currently examining the possibility of sharing costs with a larger 
  276. organization.  Some ideas in progress, stay tuned.
  277.  
  278. Our VR work would concentrate on using true remote sensing (satellite) data
  279. to allow the user to manipulate real world data.  Allowing the user to fly
  280. through 100's of square miles, to manipulate entire mountain ranges, etc...
  281. Applications would be in the area of Geology, Forestry, GIS visualization,
  282. etc...
  283.  
  284. Of course we have some concern's:  how many frames/second do we need as a 
  285. minimum to prevent nausea?;  there is a tendency for the FLY! algorithm to
  286. generate 'shimmer' or speckles in the distance as small objects show up
  287. and disappear with small changes in position/angles, how do we solve this,
  288. or minimize it?;  much of our data is very coarse (e.g., 30 meter resolution)
  289. does this matter, or is there some threshold people require?; what is the
  290. best way to allow the user to interact with the program, a glove?
  291.  
  292. It might take us a while to start work in this area, but as the cost of
  293. MIPS and VR drop, it is going to happen.
  294.  
  295. For further technical questions, feel free to contact the
  296. designer of Fly! himself! David Stanley (stanley@pci.on.ca)
  297.  
  298. We hope you enjoy the demo, and feel free to give us
  299. feedback, positive or negative (flaming excluded :-)
  300. or any ideas, comments, suggestions, etc..
  301.  
  302.  
  303. Karim Ismail        | Richmond Hill, Ontario  
  304. ismail@pci.on.ca    | Canada
  305. PCI Inc         | +1 416  764-0614
  306. Support    Engineer    | +1 416  764-9604 (fax)                
  307.  
  308.