|
|
|
Auxiliary Spec
This is a document that outlines recommendations for how to use the Verse protocol beyond the basic specification. All the guidelines in this spec are purely optional, but they are designed to make applications work better together. The Verse spec is very flexible, but at times this flexibility is not very useful and instead it is better to have a tighter definition. Providing such a tightening is the goal of this document. Many times, as a Verse programmer, you get to choose names for layers and other things, and instead of having everyone choose their own names this document serves as a good guide. However it should never be assumed that other applications follow these recommendations.
 Currently, this document is simply split into a number of sections, each of which details some area where we feel some "guidance" is important. These are the sections:


Link LabelsWhen connecting nodes together by creating links in an object node, the application gets to specify a textual label which identifies the purpose of the link. These are the recommended labels to use for various common use-cases:

 | Geometry: use "geometry" to denote that the link target is a geometry node that describes the look of the source object. This is in the core spec and just repeated here for clarity.
|  | Audio: use "audio" to denote that the link target is an audio node that is to be positioned at the location of the source object node. |

Layer NamesAny geometry layer can be referenced by the material node using the Geometry fragment, and any texture layer can be referenced using the Texture fragment. Depending on the use of the layers it is useful to name them in a way that describes their content. All these layers can be either monochromatic, or have the suffixes "_r", "_g" and "_b" for red green and blue to indicate color.
 If a layer contains monochrome color information, the recommended layer name to use is:

 | color |
 So, applying the rule about suffixes above, this means that the layer names for red, green and blue color data then become:

 For a layer containing transparency, the recommended layer names are:

 | transparency
|  | transparency_r
|  | transparency_g
|  | transparency_b |
 Please note that there is no "color_a" or "alpha", alpha channels should be encoded as "transparency". The reason for this is that alpha is usually monochrome, whereas transparency can be both monochrome or have color.
 For layers containing reflection information, the recommended layer names are:

 | reflection
|  | reflection_r
|  | reflection_g
|  | reflection_b |
 For layers storing pre-computed lighting information, such as light maps or per-vertex
lighting, the recommended names are:

 | light
|  | light_r
|  | light_g
|  | light_b |
 For mattes, masks that are used to hide parts of an image during compositing, the recommended names are:

 | mask
|  | mask_r
|  | mask_g
|  | mask_b |
 For texture mapping, the recommended naming of the geometry layers are:

 Geometry creasing information, as used to control the subdivision surface meshes Verse uses, can be stored in per-vertex and per-edge (actually per-polygon) layers, named like so:

 | crease
|  | crease_vertex
|  | crease_edge |

SelectionFor many editing applications, having Verse-distributed selection is very useful. All selections should be floating point values in order to support "soft selections", where something can be partially selected. If an application or operation only supports boolean selection, any value greater than zero should be considered selected.
For nodes this can be done with a real-typed tag named "selection".
For geometry and bitmaps this can be in the form of a layer named "selection".
If a vertex-real geometry layer is used as a select layer, other types of selectons can be derived. A polygon selection can be derived if all vertices used by the polygon are selected, and edge selection can be derived if both vertices that make up the edge are selected.
For audio layers and curves, two real-type tags named "selection_start" and "selection_end" are used to define a range of the selection.

SecurityFor the tagging of avatar object nodes, the recommendation is to use a tag group called "avatar" containing the following text tags:
"name" is the user name of the connection
"user_group" is used to indicate the user group the user is a member of.
Note that a connection can be a member of more than one group. Two user groups that should be used are "superuser" for a connection that has the power to modify any data, including other users' rights, and "guest" for connections without a registered user or the lowest possible level of rights. A tag named "password" may be used to store the connection's password (note that this obviously has to be hidden for most users).
A node may also have a tag group named "user" that can contain "user_group" and/or "name" tags that control what users are allowed to modify the node.

PhysicsWere physics are used with Verse data, SI units are preferred, such as the metric system. Physical properties can be stored in multiple places such as geometry layers, material output labels, and tags. Whenever you store these values used for physical simulations in tags the tag group should be named "physics".
Physical data should be named after what is stores, not in what unit it is stored. Examples:
temperature (Kelvin)
weight (kilograms)
COM (Center of mass)
Any time a non-SI unit is used (should be avoided if possible) then the naming should be using the convention, <what is stored>_<single unit>. For example:
weight_pound

GamesStandard tag group for objects in game-like applications is "game", with tags:

 | health
|  | experience
|  | money
|  | class |

CamerasTo identify cameras, we use object nodes with the tag group "camera". The camera is oriented at the object's position, and always looks along the negative Z axis. Tags in this group include:

 | aspect
|  | field_of_view
|  | focus_distance
|  | shutter_speed
|  | clip_near
|  | clip_far
|  | resolution_x - integer
|  | resolution_y - integer
|  | framerate
|  | orthogonal - boolean |

Misc. TagsNodes may have meta data stored in text tags using the names "author" for the user name of the author of the node, "editor" for the tool that created or edited the data, "revision" for version number of the data. Include version number.
Application-specific tags should be named with the application name as a prefix, like "blender:something". Such groups should include a version string tag to specify what version of the application it applies to.
We should look into the RDF standard as used in the creative commons.

|
|