1
2
3
4Geomview(5gv)                                                 Ge‐
5omview(5gv)
6
7
8NAME
9       Geomview ‐ Geomview command language
10
11NOTE
12       The  material  in  this  manual  page  also appears in the
13       Geomview manual.
14
15DESCRIPTION
16       gcl: the Geomview Command Language
17       **********************************
18
19       Gcl has the syntax of lisp ‐‐ i.e. an  expression  of  the
20form  (f  a  b         ...) means pass the values of a, b, ... to
21the function f.
22       Gcl is very limited and is by no means  an  implementation
23of lisp.  It
24       is simply a language for expressing commands to be execut‐
25ed in the order
26       given, rather than a programming language.   It  does  not
27support variable
28       or function definition.
29
30       Gcl  is  the  language that Geomview understands for files
31that it loads
32       as well as for communication with other programs.
33       To execute a gcl command interactively, you can  bring  up
34the
35       *Commands*  panel  which  lets  you type in a command; Ge‐
36omview
37       executes the command when you hit the return key.   Output
38from such
39       commands  is printed to standard output.  Alternately, you
40can invoke
41       Geomview as ‘geomview ‐c ‐’ which causes it  to  read  gcl
42commands
43       from standard input.
44
45       Gcl  functions  return  a value, and you can nest function
46calls in ways
47       which use this returned value.  For example             (f
48(g a b))
49       evaluates ‘(g a b)’ and then evaluates ‘(f x)’ where ‘x’
50       is  the  result returned by ‘(g a b)’.  Geomview maintains
51these
52       return values internally but does not normally print  them
53out.
54       To  print  out  a return value pass it to the ‘echo’ func‐
55tion.
56       For example  the  ‘geomview‐version’  function  returns  a
57string
58       representing  the version of Geomview that is running, and
59            (echo (geomview‐version))
60       prints out this string.
61
62       Many functions simply return ‘t’ for success or ‘nil’ for
63       failure; this is the case if  the  documentation  for  the
64function does not
65       indicate  otherwise.   These are the lisp symbols for true
66and false,
67       respectively.  (They correspond to the  C  variables  ‘Lt’
68and
69       ‘Lnil’  which  you  are  likely  to see if you look at the
70source code
71       for Geomview or some of the external modules.)
72
73       In the descriptions of the commands below  several  refer‐
74ences are made to
75       "OOGL"  formats.  OOGL  is  the  data description language
76that Geomview
77       uses for describing geometry,  cameras,  appearances,  and
78other basic
79       objects.  For details of the OOGL formats, *Note OOGL File
80Formats::.
81       (Or equivalently, see the oogl(5) manual page, distributed
82with Geomview
83       in the file man/cat5/oogl.5.
84
85       The  gcl  commands  and  argument  types are listed below.
86Most
87
88
89
90Geometry Center    Thu Dec 12 02:41:23 CST 1996                 1
91
92
93
94
95
96Geomview(5)                                           Geomview(5)
97
98
99       of the documentation in this  section  of  the  manual  is
100available within
101       Geomview via the ‘?’ and ‘??’ commands.  The command ‘(?
102       COMMAND)’  causes Geomview to print out a one‐line summary
103of the
104       syntax of COMMAND, and ‘(?? COMMAND)’ prints out an
105       explanation of what COMMAND does.   You  can  include  the
106wild‐card
107       character  ‘*’ in COMMAND to print information for a group
108of
109       commands matching a pattern.   For  example,  ‘(??  *emod‐
110ule*)’ will
111       print  all  information  about all commands containing the
112string
113       ‘emodule’.  ‘(? *)’ will print a short list  of  all  com‐
114mands.
115
116       Conventions Used In Describing Argument Types
117       =============================================
118
119       The following symbols are used to describe argument types
120       in the documentation for gcl functions.
121
122
123       ‘APPEARANCE’              is an OOGL appearance specifica‐
124tion.
125
126       ‘CAM‐ID’             is an ID that refers to a camera.
127
128       ‘CAMERA’             is an OOGL camera specification.
129
130       ‘GEOM‐ID’             is an ID that refers to a geometry.
131
132       ‘GEOMETRY’             is an OOGL geometry specification.
133
134       ‘ID’             is a string which  names  a  geometry  or
135camera.  Besides             those you create, valid ones are:
136
137
138             ‘‘World, world, worldgeom, g0’’                  the
139collection of all geom’s
140
141            ‘target’                  selected target object (cam
142or geom)
143
144             ‘center’                   selected center‐of‐motion
145object
146
147            ‘targetcam’                    last  selected  target
148camera
149
150             ‘targetgeom’                    last selected target
151geom
152
153            ‘focus’                  camera where cursor  is  (or
154most recently was)
155
156
157
158Geometry Center    Thu Dec 12 02:41:23 CST 1996                 2
159
160
161
162
163
164Geomview(5)                                           Geomview(5)
165
166
167            ‘allgeoms’                  all geom objects
168
169            ‘allcams’                  all cameras
170
171             ‘‘default,  defaultcam, prototype’’
172future cameras inherit default’s settings
173
174
175            The following IDs are used to  name  coordinate  sys‐
176tems,             e.g. in ‘pick’ and ‘write’ commands:
177
178
179             ‘‘World, world, worldgeom, g0’’                  the
180world, within which all other geoms live.
181
182            ‘universe ’                  the universe,  in  which
183the  World,  lights  and cameras live.  Cameras’
184world2cam transforms might better be called universe2cam, etc.
185
186             ‘self’                    "this  Geomview   object".
187Transform  from an object to ‘self’ is the                  iden‐
188tity; writing its  geometry  gives  the  object  itself  with  no
189                 enclosing transform; picked points appear in the
190object’s coordinates.
191
192            ‘primitive’                  (for ‘pick’ only) Picked
193points  appear  in  the coordinate system of the
194lowest‐level OOGL primitive.
195
196
197            A name is also an acceptable  id.   Given  names  are
198made  unique  by             appending numbers if necessary (i.e.
199‘foo<2>’). Every geom is also             named  g[n]  and  every
200camera  is also named c[n] (‘g0’ is always the             world‐
201geom): this name is used as a prefix to keyboard commands and can
202             also  be used as a gcl id.  Numbers are reused after
203an             object is deleted. Both names are shown in the Ob‐
204ject browser.
205
206       ‘STATEMENT’             represents a function call.  Func‐
207tion calls have the form ‘(func arg1               arg2  ...  )’,
208where  ‘func’  is  the  name of the function and ‘arg1’,
209‘arg2’, ... are the arguments.
210
211       ‘TRANSFORM’             is an OOGL 4x4 transformation  ma‐
212trix.
213
214       ‘WINDOW’             is an OOGL winddow specification.
215
216
217
218       Gcl Reference Guide
219       ===================
220
221
222
223
224Geometry Center    Thu Dec 12 02:41:23 CST 1996                 3
225
226
227
228
229
230Geomview(5)                                           Geomview(5)
231
232
233       ‘! is a synonym for ‘shell’’
234
235       ‘(<  EXPR1  EXPR2)’             Returns t if EXPR1 is less
236than EXPR2.  EXPR1 and EXPR2 should              be  either  both
237integers or floats, or both strings.
238
239       ‘(=  EXPR1 EXPR2)’             Returns t if EXPR1 is equal
240to EXPR2.  EXPR1 and EXPR2 should             be either both  in‐
241tegers or floats, or both strings.
242
243       ‘(>  EXPR1  EXPR2)’               Returns  t  if  EXPR1 is
244greater than EXPR2.  EXPR1 and EXPR2 should             be either
245both integers or floats, or both strings.
246
247       ‘(?   [command])’             Gives one‐line usage summary
248for ‘command’.              Command may  include  ‘*’s  as  wild‐
249cards;  see  also  ‘??’              One‐line command help; lists
250names only if multiple commands match.              ? is  a  syn‐
251onym for ‘help’
252
253       ‘(??   command)   ‘command’  may  include  ‘*’  wildcards’
254            Prints more info than ‘(? command)’.  ?? is a synonym
255            for ‘morehelp’.
256
257       ‘| is a synonym for ‘emodule‐run’.’
258
259       ‘(all  geometry)  returns  a list of names of all geometry
260objects.’              Use e.g. ‘(echo (all geometry))’ to  print
261such a list.
262       ‘(all camera)  returns a list of names of all cameras.’
263       ‘(all  emodule defined)  returns a list of all defined ex‐
264ternal modules.’
265       ‘(all emodule running)  returns a list of all running  ex‐
266ternal modules.’
267
268       ‘(ap‐override  [on|off])’              Selects whether ap‐
269pearance controls should override objects’ own               set‐
270tings.   On  by default.  With no arguments, returns current set‐
271ting.
272
273       ‘(backcolor      CAM‐ID R G B)’             Set the  back‐
274ground  color  of CAM‐ID; R G B are numbers             between 0
275and 1.
276
277       ‘(background‐image CAM‐ID [FILENAME])’             Use the
278given  image  as the background of camera CAM‐ID (which must be a
279            real camera, not ‘default’ or ‘allcams’). Centers the
280image  on               the  window area.  Works only with GL and
281OpenGL graphics.              Use "" for filename to remove back‐
282ground.   With  no filename argument,             returns name of
283that window’s current background image, or "".                Any
284file type acceptable as a texture is allowed, e.g. .ppm.gz, .sgi,
285etc.
286
287       ‘(bbox‐color     GEOM‐ID  R  G  B)’               Set  the
288bounding‐box  color of GEOM‐ID; R G B are numbers             be‐
289tween 0 and 1.
290
291       ‘(bbox‐draw      GEOM‐ID   [yes|no])’                  Say
292whether GEOM‐ID’s bounding‐box should be drawn; ‘yes’ if omitted.
293
294
295
296Geometry Center    Thu Dec 12 02:41:23 CST 1996                 4
297
298
299
300
301
302Geomview(5)                                           Geomview(5)
303
304
305       ‘(camera         CAM‐ID [CAMERA])’             Specify da‐
306ta for CAM‐ID; CAMERA is a string giving an OOGL             cam‐
307era specification.  If no camera CAM‐ID exists,             it is
308created; in this case, the second argument is optional,
309and if omitted, a default camera is used.  See also: new‐camera.
310
311       ‘(camera‐draw    CAM‐ID [yes|no])’             Say whether
312or not cameras should be drawn in CAM‐ID; ‘yes’ if omitted.
313
314       ‘(camera‐prop  {  geometry   object   }     [projective])’
315             Specify  the  object  to be shown when drawing other
316cameras.              By default, this object is drawn  with  its
317origin at the camera,             and with the camera looking to‐
318ward the object’s ‐Z axis.                With  the  ‘projective’
319keyword,  the camera’s viewing projection is             also ap‐
320plied to the object; this places the object’s Z=‐1  and  Z=+1  at
321             near  and far clipping planes, with the viewing area
322‐1<={X,Y}<=+1.              Example:  (camera‐prop  {  <  cube  }
323projective)
324
325       ‘(camera‐reset   CAM‐ID)’              Reset CAM‐ID to its
326default value.
327
328       ‘(car LIST)’              returns  the  first  element  of
329LIST.
330
331       ‘(cdr  LIST)’             returns the list obtained by re‐
332moving the first element of LIST.
333
334       ‘(clock)’             Returns the current  time,  in  sec‐
335onds, as shown by this stream’s clock.              See also set‐
336clock and sleep‐until.
337
338       ‘(command        INFILE [OUTFILE])’             Read  com‐
339mands from INFILE; send corresponding responses             (e.g.
340anything written to filename ‘‐’)  to  OUTFILE,  stdout
341by default.
342
343       ‘(copy  [ID] [name])’             Copies an object or cam‐
344era.  If ID is not specified, it              is  assumed  to  be
345targetgeom.   If name is not specified, it             is assumed
346to be the same as the name of ID.
347
348       ‘(cursor‐still [INT])’             Sets the number of  mi‐
349croseconds for which the cursor must not             move to reg‐
350ister as holding still. If INT is not specified,              the
351value will be reset to the default.
352
353       ‘(cursor‐twitch      [INT])’             Sets the distance
354which the cursor must not move (in x or             y) to  regis‐
355ter  as  holding still.  If INT is not specified,             the
356value will be reset to the default.
357
358       ‘(delete         ID)’             Delete object or  camera
359ID.
360
361
362
363
364Geometry Center    Thu Dec 12 02:41:23 CST 1996                 5
365
366
367
368
369
370Geomview(5)                                           Geomview(5)
371
372
373       ‘(dice           GEOM‐ID  N)’              Dice any Bezier
374patches within GEOM‐ID into NxN  meshes;  default  10.
375See  also  the appearance attribute ‘dice’, which makes this com‐
376mand             obsolete.
377
378       ‘(dimension [N])’             Sets or reads the space  di‐
379mension  for  N‐dimensional viewing.              (Since calcula‐
380tions are done using homogeneous  coordinates,               this
381means  matrices are (N+1)x(N+1).)              With no arguments,
382returns the current dimension, or 0 if              N‐dimensional
383viewing has not been enabled.
384
385       ‘(dither     CAM‐ID   {on|off|toggle})’
386Turn dithering on or off in that camera.
387
388       ‘(draw           CAM‐ID)’              Draw  the  view  in
389CAM‐ID, if it needs redrawing.  See also ‘redraw’.
390
391       ‘(echo          ...)’              Write the given data to
392the special file ‘‐’.  Strings are written             literally;
393lisp   expressions   are  evaluated  and  their  values  written.
394            If received from an external program, ‘echo’ sends to
395the  program’s             input.  Otherwise writes to geomview’s
396own standard output             (typically the terminal).
397
398       ‘(emodule‐clear)’             Clears the geomview applica‐
399tion (external module) browser.
400
401       ‘(emodule‐define       NAME       SHELL‐COMMAND      ...)’
402                    Define an external module called NAME,  which
403then  appears in the                     external‐module browser.
404The SHELL‐COMMAND string                     is a UNIX shell com‐
405mand  which invokes the module.                      See emodule‐
406run for discussion of external modules.
407
408       ‘(emodule‐defined ‘modulename’)’             If the  given
409external‐module  name  is  known,  returns  the  name of
410the program invoked when it’s run as a quoted  string;  otherwise
411              returns  nil.   ‘(echo  (emodule‐defined  ‘name’))’
412prints the string.
413
414       ‘(emodule‐isrunning NAME)’             Returns Lt  if  the
415emodule  NAME  is  running, or Lnil             if it is not run‐
416ning.  NAME is searched for in the             names as they  ap‐
417pear in the browser and in the shell commands             used to
418execute the external modules (not including arguments).
419
420       ‘(emodule‐path)’             Returns  the  current  search
421path for external modules.              Note: to actually see the
422value returned by this function             you should wrap it in
423a  call  to echo: (echo (emodule‐path)).                      See
424also set‐emodule‐path.
425
426       ‘(emodule‐run  SHELL‐COMMAND ARGS...)’                Runs
427the  given  SHELL‐COMMAND  (a  string  containing  a  UNIX  shell
428            command) as an external module.  The  module’s  stan‐
429dard output
430
431
432
433Geometry Center    Thu Dec 12 02:41:23 CST 1996                 6
434
435
436
437
438
439Geomview(5)                                           Geomview(5)
440
441
442             is taken as geomview commands; responses (written to
443filename             ‘‐’) are sent to the module’s  standard  in‐
444put.  The shell             command is interpreted by /bin/sh, so
445e.g. I/O redirection may             be  used;  a  program  which
446prompts the user for input from the             terminal could be
447run with:               (emodule‐run  yourprogram  <&2)
448If  not  already  set,  the environment variable $MACHTYPE is set
449            to the name of the machine type.   Input  and  output
450             connections  to  geomview are dropped when the shell
451command             terminates.  Clicking on a running  program’s
452module‐browser  entry              sends the signal SIGHUP to the
453program.  For this to work,  programs               should  avoid
454running  in  the  background;  those  using  FORMS or GL
455should call foreground() before  the  first  FORMS  or  winopen()
456call.              See also emodule‐define, emodule‐start.
457
458       ‘(emodule‐sort)’                      Sorts the modules in
459the application browser alphabetically.
460
461       ‘(emodule‐start  NAME)’                     Starts the ex‐
462ternal  module NAME, defined by emodule‐define.
463Equivalent to clicking on the corresponding module‐browser entry.
464
465       ‘(emodule‐transmit NAME LIST)’             Places LIST in‐
466to  external  module  NAME’s  standard  input.   NAME is
467searched for in the names of the modules as they  appear  in  the
468             External  Modules browser and then in the shell com‐
469mands used to             execute  the  external  modules.   Does
470nothing if modname is not             running.
471
472       ‘(escale           GEOM‐ID  FACTOR)’               Same as
473scale but multiplies by exp(scale).       Obsolete.
474
475       ‘(event‐keys {on|off})’                      Turn keyboard
476events on or off to enable/disable keyboard shortcuts.
477
478       ‘(event‐mode     MODESTRING)’               Set  the mouse
479event (motion) mode; MODESTRING should be one of              the
480following strings:
481                1. "[r] Rotate"
482                2. "[t] Translate"
483                3. "[z] Cam Zoom"
484                4. "[s] Geom Scale"
485                5. "[f] Cam Fly"
486                6. "[o] Cam Orbit"
487                7. "[le] Edit Lights"
488
489       ‘(event‐pick  {on|off})’               Turn  picking on or
490off.
491
492       ‘(evert          GEOM‐ID [yes|no])’               Set  the
493normal  eversion  state  of  GEOM‐ID.   If  the  second  argument
494            is omitted, toggle the eversion state.
495
496       ‘(exit)’             Terminates geomview.
497
498       ‘(ezoom          GEOM‐ID FACTOR)’             Same as zoom
499but multiplies by exp(zoom).  Obsolete.
500
501       ‘(freeze         CAM‐ID)’
502
503
504
505Geometry Center    Thu Dec 12 02:41:23 CST 1996                 7
506
507
508
509
510
511Geomview(5)                                           Geomview(5)
512
513
514             Freeze  CAM‐ID;  drawing  in this camera’s window is
515turned off             until it is explicitly redrawn with  ‘(re‐
516draw  CAM‐ID)’,  after              which time drawing resumes as
517normal.
518
519       ‘(geometry       GEOM‐ID [GEOMETRY])’              Specify
520the  geometry for GEOM‐ID.  GEOMETRY is a string             giv‐
521ing an  OOGL  geometry  specification.   If  no  object
522called  GEOM‐ID  exists, it is created; in this case the
523GEOMETRY argument is optional, and if omitted, the  new
524object GEOM‐ID is given an empty geometry.
525
526       ‘(geomview‐version)’               Returns a string repre‐
527senting the version of geomview that is             running.
528
529       ‘(hdefine  ‘geometry’|‘camera’|‘transform’|‘window’   name
530value)’               Sets the value of a handle of a given type.
531                   (hdefine  <type>   <name>   <value>)
532is generally equivalent to                    (read <type>  { de‐
533fine <name> <value> })             except that the assignment  is
534done  when  hdefine is executed,             (possibly not at all
535if inside a conditional statement),             while  the  ‘read
536...  define’  performs assignment as soon as the             text
537is read.
538
539
540       ‘(help         [command])’             Command may include
541‘*’s  as  wildcards;  see also ‘??’              One‐line command
542help; lists names only if multiple commands match.
543
544       ‘(hmodel CAMID  {virtual|projective|conformal})’
545Set  the  model used to display geometry in             this cam‐
546era; see also ‘space’.
547
548       ‘(hsphere‐draw   CAMID [yes|no])’             Say  whether
549to  draw a unit sphere: the sphere at infinity in             hy‐
550perbolic space, and a reference sphere in Euclidean and spherical
551             spaces.  If the second argument is omitted, ‘yes’ is
552assumed.
553
554       ‘(if TEST EXPR1 [EXPR2])’             Evaluates  TEST;  if
555TEST  returns  a  non‐nil value, returns the             value of
556EXPR1.  If TEST returns nil, returns the value of             EX‐
557PR2 if EXPR2 is present, otherwise returns nil.
558
559       ‘(inhibit‐warning STRING)’             Inhibit warning in‐
560hbits geomview from displaying a              particular  warning
561message  determined  by STRING.              At present there are
562no warning messages that this              applies  to,  so  this
563command is rather useless.
564
565       ‘(input‐translator   "#prefix_string"   "Bourne‐shell‐com‐
566mand")’             Defines an external translation  program  for
567special input types.              When asked to read a file which
568begins with the specified string,               geomview  invokes
569that program with standard input coming from the given file.
570
571
572
573Geometry Center    Thu Dec 12 02:41:23 CST 1996                 8
574
575
576
577
578
579Geomview(5)                                           Geomview(5)
580
581
582             The  program is expected to emit OOGL geometric data
583to its standard output.              In this implementation, only
584prefixes  beginning with # are recognized.              Useful as
585in                    (input‐translator "#VRML" "vrml2oogl")
586
587       ‘(interest (COMMAND [args]))’
588
589            Allows you to express interest in  a  command.   When
590geomview              executes that command in the future it will
591echo it to the             communication pool from which the  in‐
592terest  command  came.               COMMAND can be any command.
593Args specify restrictions on the             values of the  argu‐
594ments;  if  args are present in the interest             command,
595geomview will only echo calls to the command  in  which
596the  arguments  match  those  given in the interest command.  Two
597            special argument values may appear  in  the  argument
598list.  ‘*’             matches any value. ‘nil’ matches any value
599but supresses the             reporting of that value; its  value
600is reported as ‘nil’.
601
602             The  purpose of the interest command is to allow ex‐
603ternal             modules to find out about things happening in‐
604side  geomview.               For example, a module interested in
605knowing when a geom called             ‘foo’ is deleted could say
606‘(interest  (delete  foo))’  and  would               receive the
607string ‘(delete foo)’ when foo is deleted.
608
609            Picking is a special case of this.  For most  modules
610             interested  in  pick  events  the command ‘(interest
611(pick             world))’ is sufficient.  This  causes  geomview
612to send a string             of the form ‘(pick world ...)’ every
613time a pick event (right             mouse  double  click).   See
614the ‘pick’ command for details.
615
616       ‘(lines‐closer   CAM‐ID DIST)’             Draw lines (in‐
617cluding edges) closer to the camera than polygons              by
618DIST  /  10^5   of  the  Z‐buffer  range.  DIST = 3.0 by default.
619            If DIST is too small, a line lying on a  surface  may
620be               dotted or invisible, depending on the viewpoint.
621            If DIST is too large, lines may appear  in  front  of
622surfaces              that they actually lie behind.  Good values
623for DIST vary with             the scene, viewpoint, and distance
624between  near  and far clipping             planes.  This feature
625is a kludge, but can be helpful.
626
627       ‘(load   filename   [command|geometry|camera])’
628Loads the given file into geomview.  The optional second argument
629            specifies the type of data it contains, which may  be
630‘command’              (geomview commands), ‘geometry’ (OOGL geo‐
631metric  data),  or               ‘camera’  (OOGL  camera  defini‐
632tion).  If  omitted,  attempts  to  guess               about the
633file’s contents.              Loading geometric  data  creates  a
634new visible object; loading a camera             opens a new win‐
635dow; loading a command file executes those commands.
636
637
638       ‘(load‐path)’             Returns the current search  path
639for command, geometry, etc. files.              Note: to actually
640see the value returned by this function               you  should
641wrap it in a call to echo: (echo (load‐path)).
642
643
644
645Geometry Center    Thu Dec 12 02:41:23 CST 1996                 9
646
647
648
649
650
651Geomview(5)                                           Geomview(5)
652
653
654            See also set‐load‐path.
655
656       ‘(look  [objectID]  [cameraID])’               Rotates the
657named camera to point toward the center of the             bound‐
658ing  box  of  the  named  object  (or the origin in hyperbolic or
659            spherical space).  In Euclidean space, moves the cam‐
660era               forward or backward until the object appears as
661large             as possible while still being entirely visible.
662Equivalent  to              progn (                  (look‐toward
663[objectID] [cameraID] {center | origin})                  [(look‐
664encompass  [objectID]  [cameraID])]              )             If
665objectID is not  specified,  it  is  assumed  to  be  World.   If
666             cameraID  is not specified, it is assumed to be tar‐
667getcam.
668
669       ‘(look‐encompass [objectID] [cameraID])’             Moves
670cameraID  backwards  or forwards until its field of view
671surrounds objectID. This routine works only in  Euclidean  space.
672            If objectID is not specified, it is assumed to be the
673world.              If cameraID is not specified, it  is  assumed
674to be the targetcam.              See also (look‐encompass‐size).
675
676       ‘(look‐encompass‐size  [view‐fraction   clip‐ratio   near‐
677margin far‐margin])’             Sets/returns parameters used  by
678(look‐encompass).                view‐fraction  is the portion of
679the camera window filled by the object,             clip‐ratio is
680the  max  allowed ratio of near‐to‐far clipping planes.
681The near clipping plane is 1/near‐margin times  closer  than  the
682near               edge of the object, and the far clipping plane
683is far‐margin times             further away.  Returns  the  list
684of current values.              Defaults: .75  100  0.1  4.0
685
686
687       ‘(look‐recenter [objectID] [cameraID])’             Trans‐
688lates and rotates the  camera  so  that  it  is  looking  in  the
689            ‐z direction (in objectID’s coordinate system) at the
690center of             objectID’s bounding box (or the  origin  of
691the  coordinate  system              in non‐Eudlidean space).  In
692Euclidean space, the camera is also             moved as close as
693possible  to the object while allowing the             entire ob‐
694ject to be visible.  Also makes sure that the y‐axes of
695objectID and cameraID are parallel.
696
697       ‘(look‐toward  [objectID]  [cameraID]  [origin | center])’
698            Rotates the named camera to point toward  the  origin
699of  the              object’s coordinate system, or the center of
700the object’s             bounding box  (in  non‐Euclidean  space,
701the  origin will be used             automatically).  Default ob‐
702jectID is the world, default camera             is targetcam, de‐
703fault  location to point towards is the center             of the
704bounding box.
705
706       ‘(merge          {window|camera} CAM‐ID  { WINDOW or  CAM‐
707ERA  ...  }  )’               Modify  the given window or camera,
708changing just those properties             specified in the  last
709argument.  E.g.                   (merge camera ‘Camera’ { far 20
710})             sets Camera’s far clipping plane to 20 while leav‐
711ing
712
713
714
715Geometry Center    Thu Dec 12 02:41:23 CST 1996                10
716
717
718
719
720
721Geomview(5)                                           Geomview(5)
722
723
724            other attributes untouched.
725
726       ‘(merge‐ap       GEOM‐ID APPEARANCE)’             Merge in
727some appearance characteristics to GEOM‐ID.               Appear‐
728ance  parameters include surface and line color, shading
729style, line width, and lighting.
730
731       ‘merge‐base‐ap is a synonym for merge‐baseap.’
732
733       ‘(merge‐baseap   APPEARANCE)’              Merge  in  some
734appearance  characteristics  to  the base default             ap‐
735pearance (applied  to  every  geom  before  its  own  apperance).
736             Lighting  is  typically included in the base appear‐
737ance.
738
739       ‘(morehelp    command)’             ‘command’ may  include
740‘*’  wildcards.                Prints  more info than ‘(help com‐
741mand)’.
742
743       ‘(name‐object    ID NAME)’             Assign a  new  NAME
744(a  string)  to  ID.          A  number  is  appended if
745that name is in use (for example, ‘foo’ ‐>  ‘foo<2>’).   The  new
746             name,  possibly with number appended, may be used as
747object’s             id thereafter.
748
749       ‘(ND‐axes CAMID  [CLUSTERNAME  [Xindex  Yindex  Zindex]])’
750             In  our  model  for  N‐D viewing (enabled by (dimen‐
751sion)), objects in             N‐space are viewed by N‐dimension‐
752al  *camera  clusters*.               Each real camera window be‐
753longs to some cluster, and shows &             manipulates a  3‐D
754axis‐aligned  projected  subspace  of  the  N‐space seen
755by its cluster.  Moving one camera in a cluster affects its  sib‐
756lings.
757
758             The  ND‐axes command configures all this.  It speci‐
759fies a camera’s             cluster membership, and the set of N‐
760space  axes which become the             3‐D camera’s X, Y, and Z
761axes.  Axes are specified by their indices,             from 0 to
762N‐1  for an N‐dimensional space.  Cluster CLUSTERNAME is
763implicitly created if not previously known.              To  read
764a camera’s configuration, use ‘(echo (ND‐axes CAMID))’.
765
766
767       ‘(ND‐color CAMID’                  [ (( [ID] (x0 x1 x2 ...
768xn) v r g b a    v r g b a  ... )                       ((x0  ...
769xn)   v  r  g b a  v r g b a ...) ...)] )             Specifies a
770function, applied  to  each  N‐D  vertex,  which  determines  the
771             colors  of  N‐dimensional objects as shown in camera
772CAMID.              Each coloring function is defined by a vector
773(in  ID’s  coordinate system)             [x0 x1 ... xn] and by a
774sequence of value (v)/color(r g b a) tuples,              ordered
775by  increasing  v.   The  inner  product  v  =  P.[x] is linearly
776            interpolated in this table to give a color.
777If  ID is omitted, the (xi) vector is assumed in universe coordi‐
778nates.              The ND‐color command specifies a list of such
779functions;  each  vertex              is colored by their sum (so
780e.g. green intensity could indicate             projection  along
781one axis while red indicated another.              An empty list,
782as in (ND‐color CAMID ()), suppresses coloring.              With
783no second argument, (ND‐color CAMID) returns that camera’s
784
785
786
787Geometry Center    Thu Dec 12 02:41:23 CST 1996                11
788
789
790
791
792
793Geomview(5)                                           Geomview(5)
794
795
796             color‐function list.              Even when coloring
797is enabled, objects tagged with the ‘keepcolor’               ap‐
798pearance attribute are shown in their natural colors.
799
800
801       ‘(ND‐xform   OBJID  [ntransform  {  idim  odim   ...  }])’
802            Sets or returns the N‐D transform of  the  given  ob‐
803ject.              In dimension N, this is an (N+1)x(N+1) matrix.
804            Note that all cameras in a  camera‐cluster  have  the
805same N‐D transform.
806
807
808       ‘(ND‐xform‐get  ID [from‐ID])’             Returns the N‐D
809transform of the given object in the coordinate  system
810of   from‐ID   (default   ‘universe’),   in  the  sense
811<point‐in‐ID‐coords> * Transform = <point‐in‐from‐ID‐coords>
812
813
814       ‘(new‐alien      name [GEOMETRY])’               Create  a
815new  alien  (geom  not in the world) with the given name
816(a string).   GEOMETRY  is  a  string  giving  an  OOGL  geometry
817            specification.  If GEOMETRY is omitted, the new alien
818            is given an empty geometry.   If an object with  that
819name              already exists, the new alien is given a unique
820name.  The             light beams that are used to  move  around
821the  lights  are  an             example of aliens. They’re drawn
822but are not controllable the               way  ordinary  objects
823are:  they don’t appear in the object             browser and the
824user can’t move them with the normal motion             modes.
825
826       ‘(new‐camera     name [CAMERA])’             Create a  new
827camera  with  the given name (a string).  If a             camera
828with that name already exists, the new object is  given
829a unique name.  If CAMERA is omitted a default camera is used.
830
831       ‘(new‐center  [id])’               Stop  id, then set id’s
832transform to  the  identity.   Default  id               is  tar‐
833get.  Also, if the id is a camera, calls             (look‐recen‐
834ter World id).   The  main  function  of  the  call  to
835(look‐recenter)  is  to  place  the camera so that it is pointing
836            parallel to the z  axis  toward  the  center  of  the
837world.
838
839       ‘(new‐geometry   name  [GEOMETRY])’               Create a
840new geom with the given name (a string).   GEOMETRY  is
841a  string  giving  an  OOGL  geometry specification.  If
842GEOMETRY is omitted, the new object is given an  empty  geometry.
843             If  an object with that name already exists, the new
844object is             given a unique name.
845
846       ‘(new‐reset)’             Equivalent to (progn (new‐center
847ALLGEOMS)(new‐center ALLCAMS))
848
849       ‘(NeXT)’               Returns t if running on a NeXT, nil
850if not
851
852
853
854
855Geometry Center    Thu Dec 12 02:41:23 CST 1996                12
856
857
858
859
860
861Geomview(5)                                           Geomview(5)
862
863
864       ‘(normalization  GEOM‐ID  {each|none|all|keep})’
865Set  the  normalization  status  of  GEOM‐ID.              ‘none’
866                   suppresses   all   normalization.
867‘each’                    normalizes the object’s bounding box to
868fit into the unit                  sphere, with the center of its
869bounding  box translated                  to the origin.  The box
870is  scaled  such  that  its   long   diagonal,
871sqrt((xmax‐xmin)^2   +  (ymax‐ymin)^2  +  (zmax‐zmin)^2),  is  2.
872            ‘all’                  resembles ‘each’, except  when
873an object is changing                  (e.g. when its geometry is
874being changed by an external  program).                     Then,
875‘each’  tightly fits the bounding box around the
876object  whenever   it   changes   and   normalizes   accordingly,
877                 while ‘all’ normalizes the union of all variants
878of  the  object                    and  normalizes   accordingly.
879            ‘keep’                  leaves the current normaliza‐
880tion  transform  unchanged                    when   the   object
881changes.   It  may  be useful to apply ‘each’ or
882‘all’ normalization apply to the  first  version  of  a  changing
883                  object  to  bring  it  in  view, then switch to
884‘keep’.
885
886       ‘(pick COORDSYS GEOMID G V E  F  P  VI  EI  FI)’
887The  pick  command  is  executed  internally  in response to pick
888            events (right mouse double click).
889
890            COORDSYS = coordinate system in which coordinates  of
891the following                 arguments are specified.   This can
892be:                   world:  world  coord  sys
893self:  coord  sys  of  the  picked geom (GEOMID)
894primitive:   coord   sys   of   the   actual   primitive   within
895                      the  picked  geom  where the pick occurred.
896            GEOMID = id of picked geom               G  =  picked
897point (actual intersection of pick ray with object)             V
898= picked vertex, if any              E  =  picked  edge,  if  any
899            F = picked face             P = path to picked primi‐
900tive [0 or more]             VI = index of picked vertex in prim‐
901itive               EI  =  list of indices of endpoints of picked
902edge, if any             FI = index of picked face
903
904            External modules can find out about  pick  events  by
905registering              interest in calls to ‘pick’ via the ‘in‐
906terest’ command.
907
908       ‘(pick‐invisible [yes|no])’               Selects  whether
909picks  should  be  sensitive to objects whose appearance
910makes them invisible; default yes.                With  no  argu‐
911ments, returns current status.
912
913       ‘(pickable       GEOM‐ID    {yes|no})’                 Say
914whether or not  GEOM‐ID  is  included  in  the  pool  of  objects
915            that could be returned from the pick command.
916
917
918
919
920Geometry Center    Thu Dec 12 02:41:23 CST 1996                13
921
922
923
924
925
926Geomview(5)                                           Geomview(5)
927
928
929       ‘(position       objectID  otherID)’               Set the
930transform of objectID to that of otherID.
931
932       ‘(position‐at    objectID  otherID  [center  |   origin])’
933             Translate objectID to the center of the bounding box
934or the             origin of the  coordinate  system  of  otherID
935(parallel translation).              Default is center.
936
937       ‘(position‐toward  objectID  otherID  [center  | origin])’
938            Rotate objectID so that the center  of  the  bounding
939box               or  the  origin of the coordinate system of the
940otherID             lies on the positive z‐axis of the first  ob‐
941ject.  Default is             the center of the bounding box.
942
943       ‘(progn  STATEMENT  [  ...  ])’             evaluates each
944STATEMENT in order and returns the value of the              last
945one.   Use  progn  to  group  a  collection of commands together,
946            forcing them to be treated as a single command.
947
948       ‘quit is a synonym for ‘exit’’
949
950       ‘(quote EXPR)’             returns the symbolic  lisp  ex‐
951pression EXPR without evaluating it.
952
953       ‘(rawevent       dev  val  x  y  t)’             Enter the
954specified raw event into  the  event  queue.        The
955arguments  directly  specify  the  members of the event structure
956            used internally by geomview.  This is the lowest lev‐
957el event             handler and is not intended for general use.
958
959       ‘(rawpick  CAMID X Y)’             Process a pick event in
960camera CAMID at location (X,Y) given in             integer pixel
961coordinates.  This  is  a low‐level procedure not             in‐
962tended for external use.
963
964       ‘(read  {geometry|camera|transform|command}  {GEOMETRY  or
965CAMERA  or  ...})’             Read and interpret the text in ...
966as containing the             given type  of  data.   Useful  for
967defining objects using OOGL             reference syntax, e.g.
968
969               (geometry   thing  { INST  transform : T    geom :
970fred })               (read  geometry  { define fred QUAD 1 0  0
9710  1 0  0 0 1  1 0 0 })               (read  transform { define T
972<myfile})
973
974       ‘(real‐id ID)’             Returns  a  string  canonically
975identifying the given ID,             or ‘nil’ if the object does
976not exist.  Examples:               (if  (real‐id  fred)  (delete
977fred))             deletes ‘fred’ if it exists but reports no er‐
978ror if it doesn’t, and              (if (=  (real‐id  targetgeom)
979(real‐id  World))  ()  (delete  targetgeom))              deletes
980‘targetgeom’ if it is different from the World.
981
982
983       ‘(redraw         CAM‐ID)’
984
985
986
987Geometry Center    Thu Dec 12 02:41:23 CST 1996                14
988
989
990
991
992
993Geomview(5)                                           Geomview(5)
994
995
996            States that the view in CAM‐ID should be  redrawn  on
997the             next pass through the main loop or the next invo‐
998cation of ‘draw’.
999
1000       ‘(regtable) ‐‐‐ shows the registry table’
1001
1002       ‘(rehash‐emodule‐path)’             Rebuilds the  applica‐
1003tion  (external  module)  browser by reading             all .ge‐
1004omview‐* files in all directories on the emodule‐path.
1005Primarily  intended  for  internal  use; any applications defined
1006            by (emodule‐define ...) commands outside of the  .ge‐
1007omview‐*               files  on  the  emodule‐path will be lost.
1008Does not sort the             entries in the brower;  see  (emod‐
1009ule‐sort) for that.
1010
1011       ‘(replace‐geometry  GEOM‐ID  PART‐SPECIFICATION GEOMETRY)’
1012            Replace a part of the geometry for GEOM‐ID.
1013
1014       ‘(rib‐display    [frame|tiff] FILEPREFIX)’             Set
1015Renderman  display  to  framebuffer  (popup  screen  window) or a
1016            TIFF format disk file. FILEPREFIX  is  used  to  con‐
1017struct               names of the form ‘prefixNNNN.suffix’. (i.e.
1018foo0000.rib)             The number is incremented on every  call
1019to  ‘rib‐snapshot’  and              reset to 0000 when ‘rib‐dis‐
1020play’ is called. TIFF files are given             the same prefix
1021and  number  as the RIB file (i.e. foo0004.rib             gener‐
1022ates foo0004.tiff). The default FILEPREFIX is ‘geom’ and
1023the  default format is TIFF. (Note that geomview just generates a
1024            RIB file, which must then be rendered.)
1025
1026       ‘(rib‐snapshot   CAM‐ID  [filename])’                Write
1027Renderman  snapshot  (in  RIB  format)  of  CAM‐ID to <filename>.
1028            If no filename specified, see ‘rib‐display’  for  ex‐
1029planation of             the filename used.
1030
1031       ‘(scale          GEOM‐ID    FACTOR   [FACTORY   FACTORZ])’
1032            Scale GEOM‐ID, multiplying its size by  FACTOR.   The
1033factors               should be positive numbers.  If FACTORY and
1034FACTORZ are              present  and  non‐zero,  the  object  is
1035scaled  by  FACTOR in x, by             FACTORY in y, and by FAC‐
1036TORZ in z.       If only FACTOR is present,              the  ob‐
1037ject  is  scaled by FACTOR in x, y, and z.  Scaling only
1038really makes sense in Euclidean space.  Mouse‐driven  scaling  in
1039             other  spaces is not allowed;  the scale command may
1040be issued             in other spaces but  should  be  used  with
1041caution  because  it may             cause the data to extend be‐
1042yond the limits of the space.
1043
1044       ‘(scene          CAM‐ID [GEOMETRY])’             Make CAM‐
1045ID look at GEOMETRY instead of at the universe.
1046
1047       ‘(set‐clock  TIME)’             Adjusts the clock for this
1048command stream to read TIME (in seconds)              as  of  the
1049moment the command is received.  See also sleep‐until, clock.
1050
1051       ‘(set‐conformal‐refine   CMX  [N  [SHOWEDGES]])’
1052Sets the parameters for the refinement algorithm used in  drawing
1053             in  the  conformal  model.  CMX is the cosine of the
1054maximum angle             an edge can bend before it is  refined.
1055Its value should be between
1056
1057
1058
1059Geometry Center    Thu Dec 12 02:41:23 CST 1996                15
1060
1061
1062
1063
1064
1065Geomview(5)                                           Geomview(5)
1066
1067
1068             ‐1  and 1; the default is 0.95; decreasing its value
1069will cause less             refinement.  N is the maximum  number
1070of   iterations  of  refining;               the  default  is  6.
1071SHOWEDGES, which should be ‘no’ or ‘yes’,              determines
1072whether interior edges in the refinement are drawn.
1073
1074       ‘(set‐emodule‐path        (PATH1   ...  PATHN))’
1075Sets the  search  path  for  external  modules.        The  PATHi
1076should               be  pathnames of directories containing, for
1077each module, the             module’s executable file and a  .ge‐
1078omview‐<modulename>  file             which contains an (emodule‐
1079define ...) command for that              module.   This  command
1080implicitly calls (rehash‐emodule‐path)             to rebuild the
1081application brower from the new path  setting.                The
1082special  directory  name  ‘+’  is  replaced by the existing path,
1083            so e.g. (set‐emodule‐path (mydir +))  prepends  mydir
1084to the path.
1085
1086       ‘(set‐load‐path       (PATH1 ... PATHN))’             Sets
1087search  path  for  command,  geometry,  etc.  files.   The  PATHi
1088            are strings giving the pathnames of directories to be
1089searched.              The special directory name ‘+’ is replaced
1090by  the  existing path,             so e.g. (set‐load‐path (mydir
1091+)) prepends mydir to the path.
1092
1093       ‘(set‐motionscale X)’              Set  the  motion  scale
1094factor  to  X  (default  value  0.5).  These             commands
1095scale their motion by an amount which  depends  on  the
1096distance  from  the  frame  to  the center and on the size of the
1097            frame.  Specifically, they scale by
1098dist + scaleof(frame) * motionscale             where dist is the
1099distance from the center to the frame and             motionscale
1100is  the  motion  scale  factor  set  by  this function.
1101Scaleof(frame) measures the size of the frame object.
1102
1103       ‘(setenv  name  string)   sets  the  environment  variable
1104‘name’ to the value’
1105
1106             STRING;              the name is visible to geomview
1107(as in pathnames containing ‘$name’)             and to processes
1108it creates, e.g. external modules.
1109
1110       ‘(sgi)’               Returns  t  if running on an sgi ma‐
1111chine, nil if not
1112
1113       ‘(shell         SHELL‐COMMAND)’               Execute  the
1114given  UNIX SHELL‐COMMAND using /bin/sh.        Geomview
1115waits for it to complete and will be unresponsive until it  does.
1116            A synonym is ‘!’.
1117
1118       ‘(sleep‐for   TIME)’              Suspend reading commands
1119from this stream for TIME seconds.              Commands  already
1120read   will   still  be  executed;  ‘sleep‐for’  inside
1121‘progn’ won’t delay execution of the rest  of  the  progn’s  con‐
1122tents.
1123
1124       ‘(sleep‐until  TIME)’             Suspend reading commands
1125from this stream until TIME (in seconds).                Commands
1126already   read  will  still  be  executed;  ‘sleep‐until’  inside
1127            ‘progn’ won’t delay execution  of  the  rest  of  the
1128progn’s contents.
1129
1130
1131
1132Geometry Center    Thu Dec 12 02:41:23 CST 1996                16
1133
1134
1135
1136
1137
1138Geomview(5)                                           Geomview(5)
1139
1140
1141            Time is measured according to this stream’s clock, as
1142set by             ‘set‐clock’; if never set, the first sleep‐un‐
1143til  sets it to 0             (so initially (sleep‐until TIME) is
1144the same as (sleep‐for TIME)).              Returns the number of
1145seconds until TIME.
1146
1147       ‘(snapshot       CAM‐ID        FILENAME   [FORMAT   [XSIZE
1148[YSIZE]]])’             Save a snapshot of CAM‐ID in the FILENAME
1149(a  string).  The             FORMAT argument is optional; it may
1150be ‘ppmscreen’,             ‘sgi’, ‘ps’, or ‘ppm’.  A ‘ppmscreen’
1151snapshot  is  created  by  reading             the image directly
1152from the given  window;  the  window  is  popped  above
1153other windows and redrawn first, then its contents are written as
1154a             PPM format image.  With ‘ps’,  dumps  a  Postscript
1155picture  representing             the view from that window; hid‐
1156den‐surface removal might be incorrect.              With  ‘ppm’,
1157dumps a PPM‐format image produced by geomview’s internal
1158software renderer; this may be of arbitrary size.  If  the  FILE‐
1159NAME              argument begins with the vertical bar ‘|’, it’s
1160interpreted as a             /bin/sh command to which the PPM  or
1161PS  data  should  be piped.              Optional XSIZE and YSIZE
1162values are relevant only for ‘ppm’ format,             and render
1163to  a  window  of  that  size  (or  scaled to that size,
1164with aspect fixed, if only XSIZE is given)
1165
1166       ‘(soft‐shader  CAM‐ID  {on|off|toggle})’               Se‐
1167lect whether to use software or hardware shading in that camera.
1168
1169       ‘(space {euclidean|hyperbolic|spherical})’             Set
1170the space associated with the world.
1171
1172       ‘(stereowin CAM‐ID  [no|horizontal|vertical|colored] [gap‐
1173size])’                 Configure  CAM‐ID  as  a  stereo  window.
1174            no: entire window is a single pane,  stereo  disabled
1175             horizontal:  split left/right: left is stereo eye#0,
1176right is #1.              vertical: split top/bottom:  bottom  is
1177eye#0,  top  is  #1.               colored: panes overlap, red is
1178stereo eye#0, cyan is #1.
1179
1180            A gap of ‘gapsize’ pixels is left between subwindows;
1181             if omitted, subwindows are adjacent.              If
1182both layout and gapsize are  omitted,  e.g.  (stereowin  CAM‐ID),
1183             returns current settings as a ‘(stereowin ...)’ com‐
1184mand list.              This command doesn’t set  stereo  projec‐
1185tion;  use  ‘merge  camera’  or               ‘camera’ to set the
1186stereyes transforms, and ‘merge window’ or               ‘window’
1187to set the pixel aspect ratio & window position if needed.
1188
1189       ‘(time‐interests   deltatime   initial  prefix  [suffix])’
1190            Indicates that all  interest‐related  messages,  when
1191separated  by  at               least ‘deltatime’ seconds of real
1192time, should be preceded by             the string  ‘prefix’  and
1193followed  by  ‘suffix’; the first message             is preceded
1194by ‘initial’.  All three  are  printf  format  strings,
1195whose  argument  is  the  current clock time (in seconds) on that
1196stream.              A ‘deltatime’ of zero timestamps every  mes‐
1197sage.   Typical usage:             (time‐interests .1 ‘(set‐clock
1198%g)’  ‘(sleep‐until  %g)’)   or               (time‐interests  .1
1199‘(set‐clock  %g)’                  "(sleep‐until %g) (progn (set‐
1200clock %g)" ")")   or             (time‐interests  .1  "(set‐clock
1201%g)"                            "(if  (>  0  (sleep‐until %g)) ("
1202"))".
1203
1204
1205
1206Geometry Center    Thu Dec 12 02:41:23 CST 1996                17
1207
1208
1209
1210
1211
1212Geomview(5)                                           Geomview(5)
1213
1214
1215       ‘(transform      objectID centerID frameID  [rotate|trans‐
1216late|translate‐scaled|scale]  x  y  z  [dt] [‘smooth’])’
1217Apply a motion (rotation, translation, scaling) to object ‘objec‐
1218tID’;              that is, construct and concatenate a transfor‐
1219mation matrix with             objectID’s transform   The  3  IDs
1220involved are the object             that moves, the center of mo‐
1221tion, and the frame of reference             in  which  to  apply
1222the motion.  The center is easiest understood             for ro‐
1223tations: if centerID  is  the  same  as  objectID  then  it  will
1224            spin around its own axes; otherwise the moving object
1225will orbit             the center object.  Normally  frameID,  in
1226whose  coordinate  system             the (mouse) motions are in‐
1227terpreted, is ‘focus’, the current camera.               Transla‐
1228tions  can be scaled proportional to the             distance be‐
1229tween the target and the center. Support for              spheri‐
1230cal  and  hyperbolic  as  well  as  Euclidean  space  is
1231built‐in: use the ‘space’ command  to  change  spaces.       With
1232type               ‘rotate’ x, y, and z are floats specifying an‐
1233gles in RADIANS.              For types ‘translate’  and  ‘trans‐
1234late‐scaled’  x,  y, and z are             floats specifying dis‐
1235tances in the coordinate system of the             center object.
1236The  optional ‘dt’ field allows a simple form of             ani‐
1237mation; if present, the object moves by just that  amount  during
1238             approximately  ‘dt’ seconds, then stops.  If present
1239and followed by             the ‘smooth’ keyword, the  motion  is
1240animated  with  a  3t^2‐2t^3             function, so as to start
1241and stop smoothly.         If  absent,  the  motion  is
1242applied immediately.
1243
1244       ‘(transform‐incr  objectID centerID frameID [rotate|trans‐
1245late|translate‐scaled|scale] x y z [dt])’             Apply  con‐
1246tinuing  motion:  construct  a transformation matrix and
1247concatenate it with  the  current  transform  of  objectID  every
1248            refresh (sets objectID’s incremental transform). Same
1249syntax             as transform.  If optional  ‘dt’  argument  is
1250present,               the object is moved at each time step such
1251that its average motion             equals one  instance  of  the
1252motion  per  ‘dt’ seconds.        E.g.                (transform‐
1253incr  World World World  rotate   6.28318  0  0   10.0)
1254rotates the World about its X axis at 1 turn (2pi radians) per 10
1255seconds.
1256
1257
1258       ‘(transform‐set objectID centerID  frameID  [rotate|trans‐
1259late|translate‐scaled|scale]  x  y z)’             Set objectID’s
1260transform to the constructed transform.              Same  syntax
1261as transform.
1262
1263       ‘(ui‐center      ID)’                       Set the center
1264for  user  interface  (i.e.  mouse)  controlled
1265motions to object ID.
1266
1267       ‘ui‐emotion‐program  is  an  obsolete  command.’
1268Use its new eqivalent ‘emodule‐define’ instead.
1269
1270       ‘ui‐emotion‐run is an obsolete command.’               Use
1271its new eqivalent ‘emodule_start’ instead.
1272
1273       ‘(ui‐freeze [on|off])’                     Toggle updating
1274user interface panels. Off by default.
1275
1276       ‘(ui‐panel       PANELNAME   {on|off}  [   WINDOW   ]   )’
1277                     Do or don’t display the given user‐interface
1278panel.
1279
1280
1281
1282Geometry Center    Thu Dec 12 02:41:23 CST 1996                18
1283
1284
1285
1286
1287
1288Geomview(5)                                           Geomview(5)
1289
1290
1291                    Case is ignored in panel names.  Current PAN‐
1292ELNAMEs  are:                               geomview         main
1293panel                             tools           motion controls
1294                             appearance       appearance controls
1295                              cameras           camera   controls
1296                             lighting           lighting controls
1297                             obscure           obscure   controls
1298                             materials           material proper‐
1299ties controls                             command         command
1300entry  box                               credits         geomview
1301credits                       By  default,  the  ‘geomview’   and
1302‘tools’  panels  appear when                     geomview starts.
1303If the optional Window is supplied, a                      ‘posi‐
1304tion’   clause   (e.g.  (ui‐panel  obscure  on  {  position  xmin
1305                    xmax ymin ymax }) sets  the  panel’s  default
1306position.  (Only                     xmin and ymin values are ac‐
1307tually used.)  A present but  empty                       Window,
1308e.g.     ‘(ui‐panel    obscure   on   {})’   causes   interactive
1309                    positioning.
1310
1311       ‘(ui‐target      ID [yes|no])’                     Set the
1312target of user actions (the selected line of the
1313target object browser) to  ID.   The  second  argument  specifies
1314                    whether to make ID the current object regard‐
1315less of its type.                      If ‘no’, then  ID  becomes
1316the  current object of its type                     (geom or cam‐
1317era).  The default is ‘yes’.  This command  may
1318result in a change of motion modes based on target choice.
1319
1320       ‘(uninterest (COMMAND [args]))’             Undoes the ef‐
1321fect of an  ‘interest’  command.          (COMMAND  [args])  must
1322            be identical to those used in the ‘interest’ command.
1323
1324       ‘(update  [timestep_in_seconds])’               Apply each
1325incremental motion once.        Uses timestep if it’s present and
1326              nonzero;  otherwise  motions  are  proportional  to
1327elapsed real time.
1328
1329       ‘(update‐draw    CAM‐ID  [timestep_in_seconds])’
1330Apply   each  incremental  motion  once  and  then  draw  CAM‐ID.
1331            Applies ‘timestep’ seconds’ worth of motion, or  uses
1332elapsed real             time if ‘timestep’ is absent or zero.
1333
1334       ‘(window         CAM‐ID  WINDOW)’              Specify at‐
1335tributes for the window of CAM‐ID, e.g. its size               or
1336initial  position,  in  the  OOGL Window syntax.              The
1337special CAM‐ID ‘default’ specifies             properties of  fu‐
1338ture windows (created by ‘camera’ or             ‘new‐camera’).
1339
1340       ‘(winenter       CAM‐ID)’               Tell geomview that
1341the mouse cursor is in the window               of  CAM‐ID.  This
1342function  is  for development purposes             and is not in‐
1343tended for general use.
1344
1345       ‘(write  {command,geometry,camera,transform,window}  FILE‐
1346NAME   [ID|(ID   ...)]  [self|world|universe|otherID])’
1347write description of  ID  in  given  format  to  FILENAME.   Last
1348             parameter  chooses  coordinate system for geometry &
1349transform:
1350
1351
1352
1353Geometry Center    Thu Dec 12 02:41:23 CST 1996                19
1354
1355
1356
1357
1358
1359Geomview(5)                                           Geomview(5)
1360
1361
1362            self: just the object, no transformation  or  appear‐
1363ance  (geometry only)             world: the object as positioned
1364within the World.               universe:  object’s  position  in
1365universal   coordinates;                 includes  Worldtransform
1366            other ID: the object transformed to otherID’s coordi‐
1367nate system.
1368
1369            A filename of ‘‐’ is a special case: data are written
1370to the             stream from  which  the  ’write’  command  was
1371read.  For external             modules, the data are sent to the
1372module’s standard input.              For commands not read  from
1373an  external  program,  ‘‐’ means             geomview’s standard
1374output.  (See also the ‘command’             command.)
1375
1376            The ID can either be a single id or  a  parenthesized
1377list of             ids, like ‘g0’ or ‘(g2 g1 dodec.off)’.
1378
1379       ‘(write‐comments   FILENAME   GEOMID  PICKPATH)’
1380write OOGL  COMMENT  objects  in  the  GEOMID  hierarchy  at  the
1381                  level of the pick path to FILENAME. Specifical‐
1382ly, COMMENTS                  at level (a b c ... f g) will match
1383pick  paths  of the form                  (a b c ... f *) where *
1384includes any value of g, and also                  any values  of
1385possible  further  indices  h,i,j, etc. The pick
1386path  (returned  in  the   ‘pick’   command)   is   a   list   of
1387                 integer counters specifying a subpart of a hier‐
1388archical                  OOGL object. Descent into a complex ob‐
1389ject  (LIST  or  INST)                  adds a new integer to the
1390path. Traversal of simple objects                  increments the
1391counter  at  the current level.                   Individual COM‐
1392MENTS are enclosed by curly braces, and the                   en‐
1393tire   string   of  zero,  one,  or  more  COMMENTS  (written  in
1394                 the order in which they are  encountered  during
1395hierarchy                  traversal) is enclosed by parentheses.
1396
1397                     Note  that arbitrary data can only be passed
1398through the OOGL                  libraries as full‐fledged  OOGL
1399COMMENT  objects, which can be                  attached to other
1400OOGL objects via the  LIST  type  as  described
1401above.  Ordinary  comments  in  OOGL files (i.e. everything after
1402                 ’#’ on a line) are ignored at when the  file  is
1403loaded and                  cannot be returned.
1404
1405       ‘(write‐sexpr     FILENAME LISPOBJECT)’             Writes
1406the given LISPOBJECT  to  FILENAME.  This  function  is  intended
1407            for internal debugging use only.
1408
1409       ‘(xform          ID  TRANSFORM)’               Concatenate
1410TRANSFORM with the  current  transform  of  the  object
1411(apply TRANSFORM to object ID).
1412
1413       ‘(xform‐incr     ID TRANSFORM)’             Apply continu‐
1414al  motion:  concatenate  TRANSFORM  with  the  current
1415transform  of  the object every refresh (set object ID’s
1416incremental transform to TRANSFORM).
1417
1418       ‘(xform‐set      ID TRANSFORM)’             Overwrite  the
1419current object transform with TRANSFORM (set
1420
1421
1422
1423Geometry Center    Thu Dec 12 02:41:23 CST 1996                20
1424
1425
1426
1427
1428
1429Geomview(5)                                           Geomview(5)
1430
1431
1432            object ID’s transform to TRANSFORM).
1433
1434       ‘(zoom           CAM‐ID  FACTOR)’             Zoom CAM‐ID,
1435multiplying its field of  view  by  FACTOR.                FACTOR
1436should be a positive number.
1437
1438
1439
1440       Info file: geomview,    ‐*‐Text‐*‐
1441       produced by texinfo‐format‐buffer
1442       from file: geomview.tex
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489Geometry Center    Thu Dec 12 02:41:23 CST 1996                21
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
Impressum