home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / GLOVE / OBJGLV.ZIP / PROGRAMS / DEMO4B.DOC < prev    next >
Text File  |  1993-05-12  |  8KB  |  199 lines

  1. Notes on Demo4B.EXE:
  2.  
  3. This is a modified version of "demo4.exe" that is included in
  4. "demo4.zip".  demo4.zip should be available from the same place
  5. you got this file.
  6.  
  7. The primary reason to use demo4b instead of demo4 is that it
  8. supports two gloves at once, and that it uses glove gestures
  9. to navigate the world.  Secondly, demo4b is a bit faster.
  10. (Try them side by side.)  Also, a lot of people have
  11. reported that they couldn't get demo4 to work with the glove,
  12. but they could get o2glove to work.  So those people now have
  13. a version of demo4 that uses a different (if not better) glove
  14. "driver".  This version fixes the following bug:
  15. >       How come in the *.wld files the skycolor opcode
  16. > doesn't seem to work?
  17. You can specify glove cursors (figure files) that have any
  18. number of segments.  I have used this to make different looking
  19. cursors.  Try "SQUARE.FIG".
  20.  
  21. The parameters to demo4b are essentially the same as demo4.
  22. This makes it pretty easy to upgrade to demo4b.  Some parameters
  23. in the ".cfg" and ".wld" files are now ignored (or at least they
  24. don't work).  They are listed below:
  25.  
  26. GLOVEDEV name x y z rx ry rz
  27. PGLOVEPORT in out writemask nonemask latchmask clkmask clklatch datamask image
  28. PGLOVETIME bitdelay bytedelay
  29. VIDEODEV name
  30.  
  31. The file GLOVE.INI has analogs of some of these parameters.  I couldn't
  32. ever get any of the other "loadable video drivers" to work so I
  33. removed those sections of code that did the loading.  It always seemed
  34. a bit hokey to me anyway...  This code always runs in 320x200x256
  35. standard VGA mode.
  36.  
  37. Gestures specified in GLOVE.INI can control viewpoint movement and
  38. object selection, movement and twisting.  The file "GESTURE.TXT"
  39. included in the distribution describes the format of the gestures.
  40. Here I will only describe the function of each of the gestures
  41. that is recognized by Demo4B.  Object Glove programmers please
  42. refer to "RENDGEST.CPP", "RENDGEST.HPP", "GLOVEPTR.CPP", and
  43. other rend386 files if you wish to add gestures to control
  44. other functions.  The relevant sections in GLOVE.INI are
  45. [1.Rend386], whose gestures apply to the first glove, and
  46. [2.Rend386], whose gestures apply to the second glove.  The
  47. gestures in the two sections are completely independent (for
  48. now).  If one of the gestures (shown below) does not appear in a
  49. section, that function will be inaccessible (you can still use
  50. a joystick or keyboard).  If you specify a gesture that is not
  51. in the list below, it will be ignored.
  52.  
  53. Up
  54.     Move "Forward".  (The name is "Up" because it corresponds
  55.     to pushing the joystick up).
  56. Down
  57.     Move "Backward".  (The name is "Down" because it corresponds
  58.     to pushing the joystick down).
  59. Left
  60.     Pan the view Left.
  61. Right
  62.     Pan the view right.
  63. StraightUp
  64.     Move parallel to the Z axis, in a positive direction.
  65. StraightDown
  66.     Move parallel to the Z axis, in a negative direction.
  67. StraightLeft
  68.     "Sidestep" to the left.
  69. StraightRight
  70.     "Sidestep" to the right.
  71. GeneralExtreme
  72.     When this gesture is being sensed, the above gestures will
  73.     move the user more quickly through the world.
  74. ExtremeUp
  75.     Same as "Up" above, but moves more quickly.
  76. ExtremeDown
  77.     Same as "Down" above, but moves more quickly.
  78. ExtremeLeft
  79.     Same as "Left" above, but moves more quickly.
  80. ExtremeRight
  81.     Same as "Right" above, but moves more quickly.
  82. TiltUp
  83.     Tilts the viewpoint up.
  84. TiltDown
  85.     Tilts the viewpoint down.
  86. TwistCW
  87.     Twists the viewpoint clockwise.
  88. TwistCCW
  89.     Twists the viewpoint counter-clockwise.
  90. Mode1On
  91.     Corresponds to holding the "first button" on the joystick.
  92.     Modifies the Up, Down, Left, and Right gestures to mean
  93.     "TiltUp", "TiltDown", "StraightLeft", and "StraightRight",
  94.     respectively.
  95. Mode1Off
  96.     If this gesture is defined, gestures behave as indicated
  97.     above in Mode1On until this gesture is sensed.  That is,
  98.     "Mode1On  Off" message is ignored.
  99. Mode2On
  100.     Corresponds to holding the "second button" on the joystick.
  101.     Modifies the Up, Down, Left, and Right gestures to mean
  102.     "StraightUp", "StraightDown", "StraightLeft", and
  103.     "StraightRight", respectively.  If BOTH Mode1 and Mode2
  104.     gestures are in effect, the gestures are mapped to "TwistCW",
  105.     "TwistCCW", and zoom for the other two I think (they don't
  106.     work too well.)
  107. Mode2Off
  108.     If this gesture is defined, gestures behave as indicated
  109.     above in Mode2On until this gesture is sensed.  That is,
  110.     "Mode2On  Off" message is ignored.
  111. Select
  112.     Make this gesture, then make the glove collide with an
  113.     object.  This object is now selected.  This will be
  114.     indicated by the object becoming highlighted.  Make
  115.     this gesture while the glove is not touching another
  116.     object, and the object will no longer be selected.
  117. Move
  118.     When an object is selected and this gesture is being sensed,
  119.     the selected object will follow the motion of the glove.
  120. Twist
  121.     When an object is selected and this gesture is being sensed,
  122.     the selected object will rotate to face the glove.
  123.  
  124. Sample gestures are provided in GLOVE.INI.  There are a bunch of
  125. commented gestures that utilize the glove buttons to navigate.
  126.  
  127.  
  128. There are new parameters for .cfg and .wld files:
  129.  
  130. LEFTGLOVECURSOR filename
  131.      Specifies a .fig file containing a visual represenation of a
  132.      left-handed glove cursor.  The default is "lhandsm.fig".
  133.      This is used if you specify "SearchingAlgorithm=Right-Left" in
  134.      glove.ini, and you have two gloves.
  135. SCREENCLEARCOLOR  index
  136.      Specifies which of the 256 available colors should be used
  137.      when the sky and the ground are supposed to be the same color.
  138. SHOWFRAMERATE value
  139.      If 'value' is zero, the frame rate is not displayed.
  140. SHOWLOCATION value
  141.      If 'value' is zero, the x and z position is not displayed.
  142. SHOWGESTURES value
  143.      If 'value' is zero, gestures are not displayed.  Even if they
  144.      are displayed, this function doesn't work correctly yet. Use
  145.      DOS_DEMO.EXE or WIN_DEMO.EXE to display gestures as they are
  146.      received.
  147. SHOWCOMPASS value
  148.      If 'value' is zero, the "compass" in the upper right hand
  149.      corner is not displayed.
  150. MOUSEDEV driver_name
  151.      IF 'driver_name' is "mouse", then the standard mouse driver
  152.      is used.  If 'driver_name' is "NULL", then no mouse support
  153.      is included.
  154.  
  155.  
  156. I made an adjustment in the way that the LOADPATH variable is handled.
  157. Basically, I have a bunch of worlds on my hard drive in different
  158. directories.  I didn't want to have to copy the glove cursor files
  159. to all of those directories.  One way to get around this is to specify
  160. the full pathname to every .plg and .fig, but this can get frustrating,
  161. especially if you decide to move files around.  So I changed the code
  162. as follows:  When you specify a cursor in rend386.cfg, it uses the value
  163. of "LOADPATH" that was in effect at that time.  If you redefine
  164. "LOADPATH" later, then all other .PLG and .FIG files will use that
  165. path.  For example, let's say you have "handsm.fig" and all of the
  166. other glove cursor files in the directory "c:\cursors".  You have
  167. "room5.wld" and all related files (except for "handsm.fig", etc!) in
  168. the directory "c:\worlds\room".  Also, you have only one copy of
  169. "rend386.cfg", and it's in the "c:\" directory.  You should make your
  170. "rend386.cfg" file look like the following:
  171.  
  172. # other stuff...
  173. LOADPATH c:\cursors
  174. GLOVECURSOR handsm.fig
  175. LEFTGLOVECURSOR lhandsm.fig
  176. LOADPATH .\
  177. # more stuff...
  178.  
  179. Now you can just "cd c:\worlds\room" and type:
  180. C:\WORLDS\ROOM> demo4b /C c:\rend386.cfg .\room5.wld -g
  181.  
  182. Let's say you have the solar system world in the "c:\worlds\solar"
  183. directory.  You would type:
  184. C:\WORLDS\ROOM> demo4b /C c:\rend386.cfg .\solarsys.wld -g
  185.  
  186. In both of the examples above, the program reads the same "rend386.cfg"
  187. from "c:\" and loads the glove cursors from the "c:\cursors" directory.
  188. OK, so its no big deal but it sure prevents a lot of redundant files
  189. when you start collecting a lot of worlds (which you will sooner or
  190. later!!)
  191.  
  192. The only other thing I want to say at this point is that demo4b
  193. has been compiled as a C++ program rather than a C program.
  194. I guess for some people that is a disadvantage, but for most
  195. of us it brings real advantages.
  196.  
  197. -Mark Pflaging  3/24/93, 4/9/93, 5/12/93
  198.  
  199.