Mesh
Mesh stands for "MEtaobject SHell", and is a powerful command-line client for interacting with VOS sites. With Mesh you can edit every aspect of a Vobject, edit properties, interact with access control (including logging in to remote sites) and save and load sites to/from COD files. Mesh supports interactive command-line editing using libreadline, and like OmniVOS it can load plugins to extend its command set.
This web site was built using Mesh to create and edit Vobjects which form an XML (HTML) document when assembled by HyperVOS.
Here is an example Mesh session, copied in part from garou's
getting-started tutorial currently taking shape on the Wiki.
To begin, we run mesh from a system terminal with the URL of an object
we are interested in:
$ mesh vip://nexus/world vip://nexus:4231/world>
"vip" is the VOS Infrastructure Protocol, the protocol VOS objects use to
communicate over a network. "nexus" is the hostname of a computer running
a VOS site on the defaut port (4231). "world" is the name of a
VOS object (Vobject) on that site.
We're in. So let's look at what we are in. Use ls,
just like a Unix shell.
vip://nexus:4231/world> ls #0: a3dl:fog-density -> vip://nexus:4231/a3dl:fog-density [property:property] #1: a3dl:fog-color -> vip://nexus:4231/a3dl:fog-color [property:property] #2: a3dl:ambient-light -> vip://nexus:4231/a3dl:ambient-light [property:property] #3: test light -> vip://nexus:4231/light [a3dl:light] #4: roomtest -> vip://nexus:4231/outerwalls [a3dl:object3D.polygonmesh, a3dl:static] #5: ball -> vip://nexus:4231/ball [a3dl:object3D.sphere] #6: cone -> vip://nexus:4231/cone [a3dl:object3D.cone, misc:hypercard]
These VOS objects describe a 3D world, using the A3DL Metaobject type set, as well as the very important "property" Metaobject type.
vip://nexus:4231/world> cd ball vip://nexus:4231/world/ball> ls #0: a3dl:material -> vip://nexus:4231/a3dl:material_1445977090 [a3dl:material] #1: a3dl:position -> vip://nexus:4231/a3dl:position_645959510 [property:property] #2: a3dl:orientation -> vip://nexus:4231/a3dl:orientation_1796436417 [property:property] #3: a3dl:scaling -> vip://nexus:4231/a3dl:scaling_392619147 [property:property] vip://nexus:4231/world/ball> @a3dl:material ls #0: a3dl:color [property:property] #1: a3dl:alpha [property:property]
Mesh has a set of commands for working with property type objects:
vip://nexus:4231/world/ball> cd a3dl:position vip://nexus:4231/world/ball/a3dl:position> prop read Value: -2.000000 0.000000 1.000000 Type: list: float vip://nexus:4231/world/ball/a3dl:position> prop replace "5 5 5" vip://nexus:4231/world/ball/a3dl:position> prop read Value: 5 5 5 Type: list: float vip://nexus:4231/world/ball/a3dl:position> prop replace "0 4.62 0.5" "Fnord" vip://nexus:4231/world/ball/a3dl:position> prop read Value: 0 4.62 0.5 Type: Fnord
Actually, let's use the proper datatype for a list of numbers:
vip://nexus:4231/world/ball/a3dl:position> prop replace "0 4.62 0.5" "list: float" vip://nexus:4231/world/ball/a3dl:position> prop read Value: 0 4.62 0.5 Type: list: float
It also has commands for associating with identities and for changing access controls:
vip://nexus:4231/world> cd cone/a3dl:material/a3dl:color vip://nexus:4231/world/cone/a3dl:material/a3dl:color> acls Policy: core:accept-all,property:accept-all identity: vip://nexus:4231/some_user Policy: core:read-only,property:accept-all Group: vip://nexus:4231/some_group
If we associate with the "some_user" identity or the "some_group" group then we will be able to have full access to the object, or read-only access to the object as a Vobject, but full access to it as a property, respectively.
vip://nexus:4231/world/cone/a3dl:material/a3dl:color> pushd /some_user vip://nexus:4231/some_user> passwordauth Password: ****** vip://nexus:4231/some_user> popd vip://nexus:4231/world/cone/a3dl:material/a3dl:color> prop replace "1 0 0" "list:float"
Now the cone will be red. Since VOS and properties are based on a listener pattern, with updates automatically pushed to remote listeners, a 3D client can immediatly reflect the change on the screen.
Hopefully this gives you a glimpse into how VOS is used and how to use Mesh to work with it. For a complete, in-depth description of VOS and how it works, a complete list of mesh commands and usage, how to program with it in C++ and also how to use some of the other applications, see Creating Interreality, the VOS Manual, on the documentation page. During a Mesh session, the help command will list all available commands.
Mesh Status
Supports manipulating all aspects of Vobjects. Complete. Used for working with just about everything else in VOS, including to compose this web site.