structure
- background and motivation -- DLP+X3D
- design principles -- STEP
- STEP -- scripting language
- examples -- walk, jump, Tai Chi
- conclusions and future research -- XML

background
DLP+X3D
- declarative language -- for agent support
- rich media -- 3D (VRML/X3D)
- programmability -- X3D/VRML EAI support
- multiple threads of control -- for multiple shared objects
- distributed communication -- multi-user support
- open standards -- XML-based approach

DLP
- extension of Prolog
- (distributed) objects
- non-logical instance variables
- multiple inheritance
- multi-threaded objects
- communication by rendez-vous
- (synchronization) accept statements
- distributed backtracking

DLP <> X3D
- control points: get/set -- position, rotation, viewpoint
- event-handling -- asynchronous accept

principles
scripting behavior
- convenience -- for non-professional authors
- compositional semantics -- combining operations
- re-definability -- for high-level specification of actions
- parametrization -- for the adaptation of actions
- interaction -- with a (virtual) environment

STEP -- scripting language
reference systems
- direction reference -- X,Y,Z (as in VRML/X3D)
- body reference -- H-Anim 1.1
- time reference -- beats/min, tempo (fast, slow)

basic actions
- move -- move(Agent,BodyPart,Direction,Duration)
- turn -- turn(Agent,BodyPart,Direction,Duration)

composite operators
- sequence -- [Action_1,...,Action_{n}]
- parallel -- parallel([Action_1,...,Action_{n}])
- choice -- disjunct([Action_1,...,Action_{n}])
- repeat -- repeat(Action,k)

interaction
- test -- test(State)
- execution -- do(State)
- conditional -- if_then_else(State,Action1,Action2)
- until -- until(Action,State)

example(s)
example
script(walk(Agent), ActionList) :-
ActionList = [
parallel([turn(Agent,r_shoulder,back_down2,fast),
turn(Agent,r_hip,front_down2,fast),
turn(Agent,l_shoulder,front_down2,fast),
turn(Agent,l_hip,back_down2,fast)]),
parallel([turn(Agent,l_shoulder,back_down2,fast),
turn(Agent,l_hip,front_down2,fast),
turn(Agent,r_shoulder,front_down2,fast),
turn(Agent,r_hip,back_down2,fast)])
], !.

STEP
END OF EXERCISE
powered by DLP

conclusions and future research
PRO
- high level scripting -- flexible and powerful
- firm semantics -- dynamic logic
CON
- authoring -- familiarity with Prolog
- behavior models -- inverse kinematics

TODO
- authoring -- XML, Xeena-based editor (X-STEP)
- models -- movement, behavior, moods
- mark up -- dialogs, actions, style (VHML)
- support -- facial animation, text-to-speech
wasp.cs.vu.nl/step

\small