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