Note: this project is still under development and therefore the information on this page might change over time
Having a simple to use communication-language to describe configurable or animatable 3d-objects.
This can be used by Imos to speedup the configuring experience within the ImosNet and to add animation to the Imos-objects within the ImosNet.
For Navigram it can be used to add more dynamic 3d-object to the catalog-tool (alias: NetCatalog or OCC)
A text-file or several text-files will describe the complete 3d-object or a part of it.
The text-file contains a summary of objects-declarations which are instances of a predefined object.
A predefined object can have properties or variables that can be set while creating the instance and every predefined object can have a behavior towards its content.
By building a tree-structure of instances and setting the variables a configurable 3d object will be created.
For example: by making a instance of shape() and using it in a instance of size() you can have a scale-able 3d-geometry.
When setting the variables it is not necessary to set all variables since there is always a default, but the order is important. So if you want to set e4, e1 till e3 need to be set too.
list(e1,e2,e3,e4,e5,e6) This object will organize a 1 to many objects in a row
- e1: contained object. - e2: orientation 1=x, 2=y(not implemented yet), 3=z(not implemented yet) - e3: align - e4: fill - e5: minimum amount of objects contained - e6: maximum amount of objects contained
- e1: contained object. - e2: public property with default value. - e3: public property with default value. - e4: public property with default value. - e5: public property with default value. - e6: public property with default value. - e7: public property with default value. - e8: public property with default value. - e9: public property with default value. - e10: public property with default value. - e11: public property with default value.
split(e1,e2,e3,e4,e5,e6) This object divide its space/size in to e4+e5 and the rest and then sets the size of its containing objects
- e1: contained object 1. - e2: contained object 2. - e3: orientation - e4: size in meters - e5: size in percentages - e6: for which object (1 or 2) gets the given size
shape() emptyspace() offset() animate(e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12) Moves and/or rotates a certain distance or angle over a given amount of frames. This way the content will move with it. Later on this should be time not frames.
- e1: contained object. - e2: Movement x - e3: Movement y - e4: Movement z - e5: Rotation around z - e6: Rotation around x - e7: Rotation around y - e8: - e9: Frames - e10: . - e11: . - e12: Use sinus movement (will be different)
mirror() Mirrors its content. rotate() Rotates its content. container(e1,e2,e3,e4,e5,e6,e7)
- e1: contained object. - e2: . - e3: . - e4: . - e5: . - e6: . - e7: .
skew() size() Sets the size of its content subsribe() Subscribes a object-variable to a public property in configurator() combine() Combines to objects geometry() Loads a 3d-geometry for use in shape() texture() Loads a texture for use in shape() position() Sets the position of its content split3() Spits its space/size into 3 parts and sets the size of its content to fit the part. default() interact() connector() require() Insert a different text file into this one. This way you can re-use different parts.