BuiltWithNOF
Our Work

The first thing is to view te context were the format have to be applied. An example of application is the Java3d Viewer of Rimlab. There are two primary xml-schemai, one for the environment representation and one for the robot representation.

The environment it’s characterized by the presence of obstacle, modelled like union of obstacleShape (with his relative position) realized with some primitives, the shape. Our work shold add the capability to represent the shape in CSG (now the representation avaible ar OFF and GTS).

At the same time in the robot model we can found the use of shape to describe the body of the mobile robot and the manipulator link.
The first step of our work was then defining a complete, but intelligibile and easily processable, grammar to describe a CSG shape. So we choose XML as mean.
The stronger difference we could see between the existing model (OFF and GTS) and CSG was his recursive nature: the result of an operation between two primitives can be treated as an object itself, which his own system reference and therefore can be translated and rotated again to be combined with another object. In order to not confine the achievable shapes, this recursive nature must be reflected in the implemented schema.

As it is possibile to see, every csgShape is composed of an optional element complementation, a multiple choice and a relative position. The choice is between a primitive and an operation.
As primitive we choose cylinder, cone, box and sphere, that is the ones implemented by Java3D. For every primitive we have some attributes which defines its dimensions. Width, height and depth of the box are named as the axis they are directed as (x,y,z). As default, the height of cone and cylinder is direct as the Y-axis, so we have called this attribute “y”. Of course, the attribute radius is called “radius”. The origin of the reference frame is placed in the center of the 3D primitive object.
Every operation contains a sequence of object (at least two; only two in the case of difference) which can be as like as a new csgShape (a primitive, or also a result of another operation, translated depending on its system reference), reftlecting the ricursive nature of CSG.
The relative position contains a translation and a rotation around axes. The first one to be computed is the rotation, so the translation have to be calculated with the new rotated system reference.

[Home] [Introduction] [The Goals] [CSG] [Our Work] [Application in J3D] [XML Schema] [Results] [Links]