AVRLib

The AVRLib (Augmented and Virtual Reality Library) is C++ Augmented Reality library based on ARToolKit.

In this site you will find the documentation of the library, built-in examples and the two versions of the library (Windows and Linux).

The AVRLib is freeware library for both academic and commercial use.

Examples

Single Object

Description: The objective of this example is to present the first steps of AR application development using the AVRLib. In code, each called method of the library will be explained, presenting its sequence and requirements.

Drawing: Cube

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Single Object

Description: The objective of this example is to present the first steps of AR application development using the AVRLib. In code, each called method of the library will be explained, presenting its sequence and requirements.

Drawing: Cube

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Multi Object

Description: This exemple is an extension of SingleObject. It aims to present the correct way to rendering multiple objects by defining multiple markers.

Drawing: 3 objects (Cube, Cone and Sphere)


Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Texture Object

Description: This exemple presents the steps to include textures in objects easily through the glTexture class.

Drawing: Teapots with a texture

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Collision

Description: This example presents another way of rendering on multiple markers (single type) simulating a "collision" between two spheres that are rendered on two different markers. When there is a collision the objects change its color. This way is better when you need render objects which has some kind of relation.

Drawing: 2 Spheres

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Markers Distance

Description: This example shows a simple technique to get the distance between markers and presents the glcText class, that makes the text rendering an easy task

Drawing: Lines and Distance between markers.

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Marker Camera Distance

Description: This example performs the calculation of the distance between the marker and the camera. This information is rendered on the video without using the glcText class but instead, directly using the OpenGL routines.

Drawing: Cube position relative to the real camera

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

Camera Axis View

Description: This application is slightly more complex than the previous. The purpose of this example is to simulate the position and pose of the real camera in a relation with the scene marker. For this a virtual environment is rendered on a secondary video output. In this environment has an object to represent the real camera and a cuthe marker. When you move the real camera, the object that represents it virtually moves in the same direction.

The virtual camera position and pose are estimated by the inverse transformation matrix of the marker.

Drawing: Main Video: Coordinated Axes

Secondary: Plan and Virtual Camera

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

    • | d | (En|Dis)able threshold image

    • | o | (En|Dis)able quaternions info

    • | c | Swap outputs

Mouse Events:

    • Left: Scroll virtual plan

    • Middle: Swap outputs

    • Right: Zoom

Multi Marker

Description: This example is the first using the avrSystemMulti system markers that handle the cases of multiple markers with a relation between themselves that are previously calculated. The objective of this example is to show how the system works.

Drawing: Multiples Cubes

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

    • | d | Enable/Disable threshold image

Racket Interaction

Description: This example works with two markers system simultaneously. The objective is to obtain a relation between these systems. e.g. the distances of one single marker relative to the plan of multi markers or the intersection between the projected objects of each system. For this we rendered a virtual environment where the user must touch the racket (projected over the single marker) in virtual cubes (projected in multi system). While checking the intersection between the center of the objects, the cubes are transformated.

Drawing: System Multi: Virtual Plan and Cubes

System Single: Virtual Racket

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

    • | d | Enable/Disable threshold image

Racket Inclination

Description: This example is similar to the last one, it works with two system markers and obtain relation between these systems. This time we get the single marker inclination in relation to the multi markers plan. The renderization simulates the objects of an tennis table. The user must incline the racket in order to little ball that is on it falls over table. It's possible to catch another little ball by approaching the racket pretty close to the chosen ball.

Drawing: System Multi: Table and Small Balls

System Single: Racket

Key Events:

    • |ESQ| Exit application

    • | t | Set a new threshold

    • | + | Increases threshold

    • | - | Decreases threshold

    • | d | Enable/Disable threshold image