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