home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / graphics / stereo_1 / !Stereo / !readme < prev    next >
Text File  |  1994-04-06  |  7KB  |  189 lines

  1. Readme file for StGrams
  2.  
  3. Copyright ever and forever myself: Florent de Dinechin
  4.  
  5. THIS PROGRAM IS NOT FREEWARE, IT IS NOT SHAREWARE, IT IS 
  6. PLEASE-PUT-ALL-YOUR-BEAUTIFUL-STEREOGRAMS-ON-ALT.3D-WARE
  7. As such, it may not be included or partially included in any commercial
  8. product.
  9.  
  10. That's it.
  11.  
  12. This program (not an application yet) produces pattern-mapped
  13. stereograms, much easier to view than the Random Dots Stereograms.
  14. If you don't know what is a stereogram, you should! Have a glance at
  15. alt.3d first, and ask them there. It is just great, believe me.
  16.  
  17. Now, for those who are already enlighted...
  18.  
  19. Syntax: stgram <workdir>
  20.  
  21. <workdir> must contain:
  22.          <workdir>.zb  A 256-colour sprite considered as a Z-buffer
  23.             to be rendered as a stereogram. This Z-buffer may be produced
  24.             using Paint (The palette is sorted by colour number!)
  25.             or by any other means. The program Sources.c.zb_create
  26.             is an example of a C program computing a (?mathematical) 
  27.             function. The BASIC program z=f(x,y) also produces such 
  28.             zb-sprites. More info about how to use the latter is given 
  29.             below in the tutorial section.
  30.             
  31.                    
  32.          <workdir>.pat  A 256-colour sprite, used as a pattern to be
  33.             mapped on the stereogram. Width must be a multiple of 4.
  34.             Don't ask me why.
  35.             
  36.          <workdir>.cst A text file containing the picture constants
  37.             (size of the picture, distance of the eyes, etc) , as
  38.             documented below in the technical section. Don't panic, 
  39.             There is a sample .cst enclosed.
  40.           
  41.             
  42. 'stgram <workdir>' then outputs 
  43.         <workdir>.ste, a sprite of a stereogram.  
  44.         <workdir>.log, a few comments about the execution.
  45.  
  46.  
  47. If <workdir>.pat has a palette, then <workdir>.ste has the same...
  48.  
  49. Below is a tutorial to help you use all this.
  50. Below the tutorial is a technical reference to let you use all its 
  51. possibilities.
  52. Below the latter is an apology explaining why it is so 
  53. anti-user-friendly, and what hope you may have in this respect.
  54.  
  55.  _______________________________________________________________
  56. |                                                               |
  57. |               T U T O R I A L   E X A M P L E                 |
  58. |_______________________________________________________________|       
  59.  
  60. look at the Example directory.
  61. Read !CreateZB and run it, then look at the Example.zb sprite it has created.
  62. Read and run !Example, then look at the Example.ste stereogram
  63. (to be viewed in a 640-width mode). The execution might need a minute or 2.
  64. (also works in a taskwindow)
  65. Change the Example.pat sprite as you want, and rerun !example.
  66.  
  67. Modify the .cst file to adapt the sizes to your favourite (256-colour) mode.
  68. (do not modify the three other constants yet)
  69. Rerun !example.
  70. Read the .log file : it tells you which size your Z-buffer (i.e .zb file)
  71. should be to get a full size picture.
  72. Create your own .zb sprite with !Paint: color 0 corresponds to 
  73. the furthest points (the background), color 255 to the nearest points.
  74. rerun !example and repeat...
  75.  
  76.  
  77. To create your own functions: the BASIC prog z=f(x,y) inputs width 
  78. and height of the Z-buffer (as read in the .log file), a filename, and 
  79. outputs the Z-buffer corresponding to the function FNz defined on 
  80. the very beginning of the prog. This function takes two arguments, x and y
  81. (x between -width/2 and width/2, y between -height/2 and height/2) and must 
  82. return a number between 0 and 255. Just edit this program and play around.
  83.  
  84. The best is to create a background with a mathematical function, and then
  85. to hand-edit it with !paint to add what you like.
  86.  
  87.  
  88.  _______________________________________________________________
  89. |                                                               |
  90. |               T E C H N I C A L    P A R T                    |
  91. |_______________________________________________________________|       
  92.  
  93. There is actually little to know.
  94. The .cst file contains 
  95.         W : integer : the width of the stereogram (pixels)
  96.         H : integer : its height (in pixels)
  97.         D : float   : the distance of the eye to the plane z=0 of the 
  98.                       3d object
  99.         d : float   : the z coord of the projection screen
  100.         e : float   : the half of the distance between your eyes.
  101.                       (Don't panic, it neednot be accurate) 
  102. The three last numbers are expressed in pixels. That is, for a particular 
  103. monitor, to get 'e'  you need to  smash your face on your screen and 
  104. count the number of pixels between your former eyes (in the mode you want 
  105. the stereogram to be output).
  106.  
  107.  
  108. Perfect typical values for mode 28 on an A4 are:
  109. 640
  110. 480
  111. 2000.0
  112. 800.0
  113. 100.0    
  114. You need to have 256>d>D.
  115. Those values are not really significant. The only point is that the
  116. horizontal "period" of the picture must be smaller than the distance 
  117. between your eyes. Think of it if you want to print your stereogram, though.
  118.  
  119. The process to produce a stereogram is a bit like computing a perspective
  120. ( but in one direction only). Therefore, the Z-buffer needs to be bigger 
  121. than the picture. If you want another size of the picture, the .log file
  122. will tell you which size the Z-buffer should be.
  123.  
  124.  
  125.                               Enjoy!
  126.                               
  127.                               
  128.                               
  129.   
  130.  
  131.  _______________________________________________________________
  132. |                                                               |
  133. |                       A P O L O G I E S                       |
  134. |_______________________________________________________________|       
  135.  
  136. I DON'T HAVE THE PRMS!
  137.  
  138. That's why.
  139.  
  140. And besides, I am all alone with my Arc in a crual PC world, so I
  141. try to write things my poor friends are able to quickly port to their
  142. crappy heating boxes.
  143.  
  144. But I really feel bad about it, you know. My program 
  145. looks like a uniqs (ta mère) port, whereas I did it all on my Arc.
  146. Shameful.
  147.  
  148.  
  149.    For the hackers:
  150. There is a working version allowing the picture to be displayed 
  151. while computed. Edit Sources.C.Main, change: #define VERBOSE 0
  152. and #define SCREEN 1, and re-make and move the runimage (stgramcode)
  153. in the Bin directory.  (need gcc, tla and gnu make, all from hensa)
  154. The problem is that it only supports mode 28. Without the PRMs, it is 
  155. too much of a pain to adapt to the screenmode. (I don't know how to read 
  156. which mode I am in, I don't
  157. even know how to change modes in C!) 
  158. But if you can display mode 28, do it!
  159.  
  160.  
  161.  
  162.    Things to do:
  163.  
  164. A version that fits in 100k (easy, the prog scans a line after the other.
  165. I should have done that from the beginning)
  166.  
  167. A lot of hassle to the people who write 3d editors, so that they
  168. gently produce Z-buffers as I need. (Easy, isn't it?)
  169.  
  170. An assembler version allowing real-time computation and a port of Zarch
  171. where you actually can see how far are the bloody monsters to blast them
  172. more efficiently 
  173. (on my A92000 next decade.)
  174.  
  175. A front-end (God knows when).
  176.  
  177.  
  178.  
  179. Florent de Dinechin, march 1994
  180.  
  181. Feel free to ask questions or send flowers to
  182.      fdupont@irisa.fr
  183.      
  184.   Florent de Dinechin
  185.   Résidence des deux-rives
  186.   4, pré des bonnets-rouges
  187.   F-35000 Rennes 
  188.     Royaume de France   
  189.