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