Mugic/protocol
Contents |
Overview
MUGIC defines a protocol for a standard display-independent client/server model for the generation, control, and management of graphics rendering within a multi-user environment. The first implementation for the CalVR system used on the state-of-the-art visualisation technologies developed at Calit2. This protocol will provide ease of access and an integrated development environment for research, education, performance, interaction, and presentations. It will provide an easily accessible format for integration of real-time programming softwares (e.g., Touch Designer, Pure Data, Max/MSP, Quartz, Processing, etc.) which in turn will facilitate the incorporation of state-of-the-art gesture control and algorithmic/generative processes for control of graphics on multiple displays. The protocol will also provide multi-user management and access support, as well as real-time telematic connection between multiple servers materializing an enormous potential for development of multi-site virtual reality game and performance productions.
-Server listens to both tcp and udp
-UDP and TCP streams will work in conjunction and in collaboration with each other
-UDP commands have a 1400 byte limit (or whatever the lower limit is of the client and server MAClayer)
User management every tcp connection has a ttl after the ttl time, the scene associated with user will be deleted
Object managment every object has an owner object can be a collection of objects
Syntax
cmd name [parameter={value,`expr`} ...]
expr is a c-style expression
Parameters
cx cy cz
red green blue alpha r g b a
Gradient { circular,linear,exp}
red2 green2 blue2 alpha2
(for linear gradient). gx gy gz
rotx roty rotz
scale
scalex scaley scalez
Variables
var name type={float,array} {value,`expr`}
variables can be used in expressions
variables of other users can also be accessed as user:variable
parameters of objects can be accessed as variables ObjectName:parameter
the value of a parameter of an object of another user is accessed as
User:ObjectName:parameter
Connections
connect <username>
User Management and Preferences
pref [cmd] [parameter=value]
default object [parameter=[value,`expr`]
Simple Objects
parameters
cx, cy, cz - center of an object
red,green, blue, alpa = color of object
point
point name [parameter={value,`expr`} ...]
triangle
c1x c1y c1z c1r c1g c1b c1a
c2x c2y c2z c2r c2g c2b c2a
c3x c3y c3z c3r c3g c3b c3a
quads
How do we deal with surface definition?
c1x c1y c1z c1r c1g c1b c1a
c2x c2y c2z c2r c2g c2b c2a
c3x c3y c3z c3r c3g c3b c3a
c4x c4y c4z c4r c4g c4b c4a
square
width
circle
radius
elipse
c2x c2y c2z
cube
sphere
cylinder
pyramid
Update
frustum
group
group name [names ... ]
Examples
Example 1
circle name=cir1 cx=1
var center=10 point name=x1 cx=`center*2`
Next Phase
alias (e.g. alias square quad ....... )
move dur=
delete dur=
scale
rotate
sheer
copy name= src= link name= src= transformation=
Camera Management
Lighting Management
Quad ID=X p1=0,0 p2=1,0 p3=1,1 P4=0,0
link ID=A src=X
scale id=A factor=0.2
move ID= dx=.1 dy=.5
group iD=C A,B