<scene> element, within a scene object element, or inside each other (color inside layer, or layer inside color):
<layer number="x"> ... </layer>
, unless overriden by another layer element. The default layer, used when no layer tag is present, is layer 1.<color r="R" g="G" b="B"> ... </color>
.external.
... <external> <!-- any well-formed XML --> </external>
...
<include file="source_file">
<inject at="injection_path"> <!-- optional -->
<!-- any number of object definitions, includes or external tags are allowed here -->
</inject>
...
<inject at="injection_path">
...
</inject>
</include>
include elements.For more information about include injection, see Injecting data in included files.
<name> ... </name>
<sphere>-element might yield an object named sphere5.<meta_name> ... </meta_name>
<opacity absolute="x">a</opacity>
x must be true or false, where false is the default. a is a number in the interval
specifying the object's absolute opacity, or its opacity relative its parent node.<hidden/>
<transform> ... </transform>
<children> ... </children>
<translate system="s"> x y z </translate>
parent, world (the root of the scene file) or local, where world is the default.<rotate> ... </rotate>
<axis system="s"> x y z </axis>
<translate> element. The default value is (1, 0, 0) and world coordinates.<pivot system="s"> x y z </pivot>
<radians> r </radians> or <degrees> d </degrees>
<transform>
<translate>0 0 1.2</translate>
<rotate>
<axis>0 1 0</axis>
<degrees>45</degrees>
</rotate>
</transform>
<matrix system="s"> x1 x2 x3 x4 y1 y2 y3 y4 z1 z2 z3 z4 0 0 0 1 </matrix>
world or parent, where the latter is the default. The first, second and third column vectors represent the x-, y- and z-axis respectively. The fourth column vector is the translation relative the coordinate system's origin.
.<scale>-element.
<scale>x y z</scale>
The line style parameters are optional and the default is solid lines of width one.
<line_width>w</line_width> <line_style factor="x">solid|dotted|dash-dot|dash-dot-dot</line_style> <!-- x = 1,2,... -->
<orthographic/>
<fov> <degrees>d</degrees> OR <radians>d</radians> </fov>
degrees.
<group> ... <children>...</children> </group>
sphere, cylinder, cube and circle elements are all scalable objects. Except for the optional scale parameters, neither of them add any extra markup.
<sphere>
<children>
<cylinder>
<scale>0.5 0.5 2</scale> <!-- diameter=1, height=2 -->
</cylinder>
</children>
</sphere>point-cloud, line-cloud and polygon objects share a few important traits: they're are all scalable and their geometry is defined by vertices.
The <vertices> element is used to specify which vertices the object is comprised of:
<vertices> <vertex>x1 y1 z1</vertex> <vertex>x2 y2 z2</vertex> ... </vertices>
<file> ... </file>
<file> tag specifies which model file to use. See the tutorial for information on which locations peekabot searches for models in. See the section on model conversion for information on which model formats that are supported by peekabot.<grid>
...
<type> regular|radial|angular </type> <!-- optional, default: regular -->
<segments> X </segments> <!-- required, X must be an integer larger than 0 -->
<central_angle> <!-- optional, default: 360 degrees -->
<degrees>Y</degrees>
OR
<radians>Y</radians>
</central_angle>
</grid> <type> element and defaults to regular if the type element is left out.
Common to all grid types is that the number of segements in the grid must be specified somehow, more specifically, using the <segments> element. A regular grid with 10 segments will have 10*10 = 100 grid elements and a radial grid with 10 segments will consist of 10 concentric circular segments.
The optional <central_angle> element determines how far radial and angular grids extend - it has no effect on regular grids. If left out, it defaults to 360 degrees.
<!-- A 10x10 m cartesian grid with a resolution of 10 cm --> <grid> <scale>0.1 0.1 0.1</scale> <segments>100</segments> </grid>
<!-- An 8 m radius radial grid with a resolution of 1 m --> <grid> <type>radial</type> <segments>8</segments> </grid>
<!-- An 8 m radius angular, 180 degree grid with 10 degree resolution -->
<grid>
<scale>8 8 8</scale>
<type>angular</type>
<segments>18</segments>
<central_angle>
<degrees>180</degrees>
</central_angle>
</grid><label> ... <text>label text</text> <!-- optional --> <align>left | right | center</align> <!-- optional --> </label>
<sensor type="type">
<params> <!-- optional -->
...
</params>
</sensor>type is the type of the sensor (see this section for a list of the available sensor types). <params> element that's used to setup certain properties of the sensor. The <params> element can contain int, float string, bool and color elements, each of which has a name attribute to specify which parameter is being specified.
Except for color, the parameter data is specified in the CDATA. For color elements, the data is specified with three attributes (r,g,b).
<sensor type="X">
...
<params>
<int name="samples">361</int>
<color name="foobar" r="0" g="0" b="1"/>
...
</params>
</sensor> <min> element. <max> element. <initial> element. <offset> element.
<joint>
...
<min>
<radians>a</radians> or <degrees>a</degrees>
</min>
<max>
<radians>b</radians> or <degrees>b</degrees>
</max>
<initial>
<radians>c</radians> or <degrees>c</degrees>
</initial>
<offset>
<radians>c</radians> or <degrees>c</degrees>
</offset>
<axis system="s">
x y z
</axis>
<pivot system="s">
x y z
</pivot>
</joint>local, parent and world. <axis> element.
<track>
...
<min>a</min>
<max>b</max>
<initial>c</initial>
<offset>c</offset>
<axis system="s">
x y z
</axis>
</track>local, parent and world.
<robot> <name>...</name> <!-- optional --> ... <!-- <the usual set of allowed tags go here> --> </robot>
1.5.6