Vz:Doc:IpControl
From M1Research
IP Control protocol is simplest way for VZ control.
By default VZ uses TCP/8001 port for shell style control protocol and UDP/8002 for non-interactive datagram proto.
Contents |
UDP messages
This protocol provides fast and sessionless control type. Due to binary nature of command data block you need to use vzCmdSender.exe program.
It can send futher list of commands for scene and vz control:
LOAD_SCENE <filename> START_DIRECTOR <director> <pos> RESET_DIRECTOR <director> <pos> CONTINUE_DIRECTOR <director> STOP_DIRECTOR <director> SET <container> <param> <value> CONTAINER_VISIBLE <container> <flag>
Make sure udpserver is allowed to start:
[...] <module name="udpserver"> <param name="enable" value="defined"/> <!-- <param name="port" value="8001"/> <param name="bufsize" value="8192"/> --> </module> [...]
Some examples:
load new scene
vzCmdSender.exe localhost LOAD_SCENE "./projects/demo1.xml"
Set text fields
vzCmdSender.exe localhost SET text_2 s_text "Senior Deputy Officer" SET text_1 s_text "Vasilij Pupkin"
start animation
vzCmdSender.exe localhost START_DIRECTOR main 0
continue (hide) animation
vzCmdSender.exe localhost CONTINUE_DIRECTOR main
TCP shell=
To connect to TCP/8001 and send commands you need a telnet client program. Find appropriate "telnet" program for operating. "putty" is nice free program.
Connecting
[verem@elbrus reports]$ telnet vz-dev 8001 Trying 10.1.5.23... Connected to vz-dev.internal.m1stereo.tv (10.1.5.23). Escape character is '^]'. ViZualizator (vz-1.0-release) [tcpserver] vz in$>
As use can see vz service is online and is ready to accept commands.
Commands
NOTE! Tune your telnet program for UTF-8 characters.
Each command sent to VZ has javascript-like structure. I try to descibe most usefull commands format with examples.
renderman.load(<scene_name>)
Perform scene loading into rendering engine, for example:
vz in$> renderman.load(./projects/demo1.xml) vz out$> OK!Load
tree.function.<function_id>.<parameter_name>=<value>
perform parameter setting for function, for example:
vz in$> scene.tree.function.text_1.s_text=Prived Medved vz out$> OK vz in$> scene.tree.function.text_2.s_text=Hi Man! vz out$> OK
tree.container.<container_id>.visible=<value>
Container visibility control
tree.motion.director.<director_id>.start([<position>])
tree.motion.director.<director_id>.stop()
tree.motion.director.<director_id>.continue()
tree.motion.director.<director_id>.reset([<position>])
Directors (animation) control
For example:
Start animation on directormain
.vz in$> scene.tree.motion.director.main.start() vz out$> OKContinue animation on director
main
after pausing.vz in$> scene.tree.motion.director.main.cont() vz out$> OK
tree.motion.timeline.<timeline_id>.<t1|t2|y1|y2>=<value>
timeline modification.