APPENDIX A


VIRTUAL DIRECTOR COMMAND INTERFACE

A.1	Syntax

	The VD text interface attempts to conform to sensible unix 
command syntax and structure. The program command line promt is 
indicated with a '> ' character. All commands are accepted as arrays 
of character strings, or tokens, of the form 

		C = { int argc, char argv[][] }. 

Each token can be parsed as words or numbers depending on sequential 
context. For example, the following is the complete manual 
specification for a menu command:

		FOTO:sn'ap ./data/foto/<pfx>.rgb [(resy)i|(res)ii]

which renders the camera's image at any desired resolution, saves it 
to a file at a default file system location, and

		> foto
		> sn picture 2000 1500

is a set of commands entered at the prompt. 'Foto' engages the FOTO 
menu group, and remainder executes the command FOTO:snap, saving the 
image to the file

		./data/foto/picture.rgb

A.1.1	Arguement Lists

		|	-or
		[]	-optional arguments
		i	-expects an integer
		f	-expects a Real number
		<>	-expects string/prefix
		$	-token list

A.1.2	Text Conventions

		()	-remarks, comments (in the menu)
		'	-typing shortcut (in the manual)
		:	-subcommand designator (in the manual)
		->	-disengage (in a comment)
		#	-comment (in a config or macro)



A.2 Commands A.2.1 MAIN -main menu commands are globally accessible MAIN:id'le (->stop) -clock runs and program interacts, but VD is idle MAIN:rec'ord (->stop) [(dt)f [(vel)f]] -clock runs and program interacts -records the current tracker source -dt sets final key-record interval -velocity controls clock rate -( real-dt = dt / vel ) MAIN:pl'ay (->stop) [<s'hutt>|<j'og>|(vel)f] -clock is bound to frame counter -current path drives the program -shuttle uses wand roll -jog uses wand roll -velocity controls clock rate MAIN:st'op -clock stops. modes switched off. keys can be edited without interference MAIN:time [<shutt>|f] -shuttle time, or -set current time in seconds MAIN:path [+|-] i -select a path MAIN:key [+|-] [i] -make a key at a frame -select a key MAIN:fr'ame i -allocate frames and keys -select a frame MAIN:erase i -erase current path. requires current index for safety reasons MAIN:pm'ode <reg|seq|pty> -set path-play mode reg : regular seq : sequential pty : priority MAIN:li'st -list current path data MAIN:div'ulge -list internal node data MAIN:menu [(wake)f] -pop menu options display, set menu time MAIN:short -toggle button shortcuts menu MAIN:man <command> -online command library manual MAIN:sys $(args:10) -make a system call -number of tokens is limited A.2.2 NAVI -set navigation source NAVI:app (->rel) -custom navigation input NAVI:curr (->rel) -attach cave to current frame NAVI:fly (->rel) -default full rotation navigator NAVI:tran (->rel) -default translation navigator NAVI:scale (->rel)|[f] -no arg: default wand-roll scaling navigator -1 arg: set current CAVE scalar and release -recorded as camera size if curr_nav_scale is set NAVI:rel'ease -release navigation source NAVI:z'ero -reset identity navigation A.2.3 DISP -toggle various displays DISP:text -toggle menu and text display DISP:bg'text -toggle text feedback background DISP:ps'rce -toggle source-frame data printing DISP:pn'avi -toggle navigation data printing DISP:view -toggle view-finder camera texture DISP:tele -toggle wall television DISP:curs'or -toggle view-finder cursor frame DISP:data (path) -toggle camera path frames and axes DISP:spoint (skip) i -skip point drawing of frames DISP:saxis (skip) i -skip axis drawing of frames DISP:chart <off|cr|gr|tv|ix> -display chart on tele image -off, cross, grid, tv, imax DISP:gfx <tex|fog|lmd|aud|lsd> -CAT default graphics switches DISP:scene -toggle stereo cave wall display A.2.4 EDIT -operate on currently selected key EDIT:as'sign (srce) -assign current key to current tracker source EDIT:at'tach (srce->rel) -attach current key to current tracker source EDIT:ad'just (wand->rel) -use wand to adjust current key EDIT:rel'ease -release attachment or adjustment EDIT:mvto i -set time as frame number EDIT:fov'y f -set current fovy value, inherited EDIT:siz'e f -set current size value, inherited -applied to cave with NAVI:curr EDIT:rem -remove current key A.2.5 SRCE -set tracker source SRCE:wand [(z)f|(offset)fff] -wand is current source, optional offset SRCE:head -head is current source SRCE:cave [(y)f|(offset)fff] -cave is current source, optional offset A.2.6 FILE -read/write configuration and path data FILE:mac'ro ./data/macro/<pfx>.mc [$(args:9)] -execute command macro file -number of macro args is limited FILE:rc'onf ./data/config/<pfx>.cf -get session settings FILE:wc'onf ./data/config/<pfx>.cf -save session settings FILE:rd'ata [all] ./data/record/<pfx>.vd -read a camera path FILE:wd'ata [all] ./data/record/<pfx>.vd -write a camera path FILE:wf'out [all] ./data/record/<pfx>.wf -write a wavefront camera path FILE:sr'out [all] ./data/record/<pfx>.sr [(clip)f[f]] -write a star renderer matrix list -override near and far clipping values A.2.7 FOTO -render current frame to file FOTO:pat'ch <deg|pix> i[i] -set lense patch size -in degrees or pixels -used for rendering curved projections: cylindric polar bipolar FOTO:len'se [(fov)f (asp)f <pl|cy|po|bi>] -set field-of-view Y and aspect -defaults to current camera -set optional lense type FOTO:sn'ap ./data/foto/<pfx>.rgb [(resy)i|(res)ii] -render image to file -set pixel resolution -resx defaults to aspect*resy A.2.8 EXIT -close director, or terminate program EXIT:s'ession (close) -close VD and just run program EXIT:q'uit (terminate) -terminate program
A.3 Macros FILE:mac'ro ./data/macro/<pfx>.mc [$(args:9)] ./data/macro/test.mc [ # comment DISP tele chart gr FILE macro test2 512 128 4.0 ] ./data/macro/test2.mc [ # $0 : macro name # $1 : resx # $2 : resy # $3 : aspect # FOTO:patch <deg|pix> i[i] FOTO patch deg 10.0 # lense [(fov)f (asp)f <pl|cy|po|bi>] lense 45.0 $3 cy # snap <pfx>.rgb [(resy)i|(res)ii] snap out $1 $2 ]
A.4 Configuration FILE:rc'onf ./data/config/<pfx>.cf FILE:wc'onf ./data/config/<pfx>.cf ./data/config/defaults.cf [ # cameraconfig: read another file cameraconfig null # ISHM: initialization only ISHM_max_path_num 2 ISHM_max_path_K_num 100 ISHM_max_path_F_num 1000 # feed: stop idle record play feed idle # shortcut: enable shortcuts menu shortcut 0 # gfx_enable_*: disable default app utilities gfx_enable_tex 1 gfx_enable_fog 1 gfx_enable_lmd 1 gfx_enable_aud 1 # pop_time: seconds to show menu pop_time 10.000000 # curr_fovy: degrees curr_fovy 60.000000 curr_aspect 1.300000 # curr_rate: fps curr_rate 30.000000 # curr_src: wand head cave curr_src wand # offset: 3d vector curr_wand_V 0.000000 0.000000 -0.500000 curr_cave_V 0.000000 5.000000 0.000000 # text_pos: from lower left text_pos 10 500 text_wall 1 # view_res: power of 2 only view_res 64 64 # tele_pos: from lower left tele_pos 650 500 tele_res 300 200 tele_wall 1 # toggles: show_scene 1 show_text 1 show_bgtext 0 show_cursor 1 show_psrce 0 show_pnavi 0 show_view 0 show_tele 0 show_path 1 # show_points: skip draw frames show_points 1 # show_axes 0: draws on key frames only show_axes 0 # curr_nav: none app curr curr_nav app # rec_auto_wrap: enable path wrapping when recording rec_auto_wrap 0 # curr_nav_scale: enable key scale during navi-current curr_nav_scale 0 # nav_tran_vel: translation speed nav_tran_vel 10.000000 # nav_spin_vel: rotation speed nav_spin_vel 1.000000 # nav_size_vel: scaling speed nav_size_vel 1.000000 # record_dt: recording interval record_dt 0.500000 # record_vel: recording play rate record_vel 1.000000 # replay_vel: play rate replay_vel 1.000000 ]


thiebaux@evl.uic.edu