FIVE
Note
FIVE is the legacy name of the relation engine and the name of the underlying model
The relation engine proposes a set of models to support the definition of actions and behaviours of objects of a Virtual Environment. Its role is to determine how and which objects of the world can be used.
The main goal of the Relation Engine is to make the creation of interactions easier between objects in a virtual environment. More precisely, the interactions are actions involving several objects, and which have consequences on the virtual environment. Create an interaction may be simple for one object, but it becomes more complicated when it is about multiple objects that use a same interaction. #FIVE allows to do generic interactions on multiple objects with a minimum of effort.
Concepts
The data model of the relation engine is base on two concepts: relational object and relation. This model is based on two concepts, objects and relations.
Object-Relation
An Object is an entity that can potentially interact with other objects. It has an influence on the environment. Generally, an object in a 3D environment is characterized by its geometry and some properties (react to collisions or gravity). A Relation connects objects based on a set of object patterns. Moreover, it gives a meaning to their union.
FIVE
Five uses four concepts:
Object: an object in #FIVE is an element that can interact. Its main goal is to identify each element as a unique entity. In this way, it is possible to do queries on all objects.
Type: To describe a behavior of an object we use Types. A Type can be generic and be used on different objects without additional adaptation.
Object Patterns: An object can have more than one types. Object Pattern will provide the information the relation engine needs to associate these types to only one object.
Relation: A Relation connects objects based on a set of object patterns. Moreover, it gives a meaning to their union.
To demonstrate this concept,
- Let Hand be an object that can take objects
- Let Hammer be an object that can hit objects and be taken
- Let Nail be an object that can be hit
They all have a Type describing their behaviors.
In this example, we have two main relations:
- Take any objects that can be taken
- Hit any objects that can be hit
The relation Hit will wait until any Types Hammer and Nail enter in collision. If it happens, the relation will be launched and the nail will be pushed.