Vrui -- Virtual Reality User Interface Development Library

Vrui is a powerful high-level development toolkit for portable virtual reality applications.

Header Files

Geometry.h contains typedefs defining the low-level geometry library types used by the Vrui toolkit.
Vrui.h contains namespace-global functions to query or set all relevant parts of the internal Vrui state, and therefore defines the Vrui kernel API.
OpenFile.h declares convenience functions to open files in a cluster-transparent fashion.
FileSelectionHelper is a helper class to simplify working with GLMotif file selection dialogs. It hides creation and management of file selection dialog objects, and offers file name selection using only a single application callback function or method.
ClusterSupport.h contains namespace-global functions to simplify developing cluster-aware Vrui applications.
Application is a base class for Vrui applications to simplify program development and integration.
TransparentObject is a base class for all objects that require a second rendering pass to render transparency using OpenGL alpha blending. The transparency pass is executed after the application's display function, and is set up in physical coordinates and with OpenGL alpha blending enabled and the depth buffer locked.
GlyphRenderer is a helper class to quickly and easily render several kinds of common glyphs used throughout the Vrui toolkit.
InputDevice is a class representing input devices with an (optional) 6-DOF position/orientation, and any numbers of buttons and valuators (floating-point values ranging from -1 to 1).
InputDeviceFeature is a helper class to identify individual buttons or valuators on input devices. InputDeviceFeatureSet is a class for lists of input device features in no particular order.
VirtualInputDevice is a helper class to manage and interact with ungrabbed virtual input devices, by representing them as 3D widgets.
InputGraphManager is a class managing the bipartite Vrui input processing graph formed by input devices and the tools associated with their buttons/valuators.
TextEventDispatcher is a class to manage GLMotif text and text control events generated by input device adapters across a cluster or between saved/restored sessions.
InputDeviceManager is a class managing the input devices available to a VR environment and their associated tools in cooperation with an input graph manager.
MutexMenu is a class representing GLMotif popup menus that can only be popped up by one menu tool at a time.
Lightsource is a class representing light sources in VR environments.
LightsourceManager is a class managing any number of light sources, and mapping them to the limited number of OpenGL light sources during rendering.
ClipPlane is a class representing clipping planes in VR environments.
ClipPlaneManager is a class managing any number of clipping planes, and mapping them to the limited number of OpenGL clipping planes during rendering.
CoordinateTransform is a base class for transformations from "user interest" space to Vrui's navigational space. Classes derived from CoordinateTransform can be registered with Vrui's coordinate manager (see below), and are used to display coordinates in a coordinate system of interest to users of certain applications, e.g., geoid coordinates. The base class implements an identity transformation.
Coordinate transformation class for orthogonal transformations (translations, rotations, uniform scalings).
Coordinate transformation class for arbitrary affine transformations.
Coordinate transformation class from geocentric Cartesian coordinates to geodetic coordinates (latitude, longitude, elevation) on a variety of geoids.
CoordinateManager allows Vrui applications to communicate their own units and coordinate systems to the Vrui toolkit. Vrui uses these definitions to provide an application-independent scale bar, and to display units and proper model coordinates (including non-linear mappings from navigation space) in measurements, e.g., those made with MeasurementTools.
Viewer is a class representing viewers in VR environments. Viewers essentially consist of potentially headtracked eye positions that are used as projection centers when projecting 3D scenes onto screens.
VRScreen is a class representing fixed or device-mounted projection surfaces in VR environments. Together with viewers, screens describe how to display 3D scenes as (stereoscopic) images.
WindowProperties is a helper structure to allow any Vrui entities (applications, vislets, tools, ...) to request special properties, such as color buffer channel sizes or additional buffers, from any subsequently opened Vrui windows.
ViewSpecification is a class representing the visible space (frustum) of a VR display window, i.e., a combination of a viewer and a screen. View specifications are mostly used for view-dependent rendering and software frustum culling.
VRWindow is a class representing an OpenGL rendering window in a VR environment. VR windows tie together a viewer and a screen to create images of the 3D scene. VR windows contain methods to create monoscopic or stereoscopic images using several techniques.
Helper class to allow applications to query per-display Vrui rendering state from within a display method.
Listener is a class representing listeners in VR environments. Listeners essentially consist of potentially headtracked ear positions and head orientations that are used to create 3D sound using OpenAL.
SoundContext is a class representing an OpenAL sound context in a VR environment. Sound contexts tie together a listener and a sound device for 3D sound using OpenAL.
GUIInteractor is a helper class containing common code for tools that allow interaction with graphical user interface elements.
DeviceForwarderCreator is a helper class to create virtual input devices used by device-forwarding tools.
DeviceForwarder is an abstract mixin class for tools that forward some of their assigned input devices to permanently bound virtual input devices. Used by InputGraphManager and ToolManager to trace event flow through the input graph.
ToolInputLayout is a helper class describing the interface of a tool class, i.e., the number of devices/buttons/valuators used by each instance of the tool class.
ToolInputAssignment is a helper class describing the assignment from input devices, buttons, and valuators to an instance of a tool class.
Tool is the base class for all tools, i.e., objects associating input devices, buttons, and valuators with toolkit or application functions.
GenericAbstractToolFactory is a helper class to simplify implementing tools that only serve as base classes for other tools and are never actually instantiated. Tool classes managed by instances of this class can have pure virtual methods, and do not need to contain a factory pointer or define the getFactory() method.
GenericToolFactory is a helper class to simplify implementing tools.
LocatorTool is the base class for all tools that are meant to invoke an application action at a particular 3D position.
LocatorToolAdapter is a helper class connecting a locator tool to an application object receiving events from that tool.
DraggingTool is the base class for all tools that are meant to select an application object and drag it in 3D.
DraggingToolAdapter is a helper class connecting a dragging tool to an application object receiving events from that tool.
NavigationTool is the base class for all navigation tools, i.e., all tools that change the transformation from application or model coordinates to physical environment coordinates.
SurfaceNavigationTool is the base class for all navigation tools that are limited to an application-specified surface. Applications can intercept the creation of surface navigation tools, and register a callback function that snaps the current navigation frame of the tool to the surface during navigation.
TransformTool is the base class for all tools whose main purpose is to transform input devices, e.g., changing a device's position and/or orientation, creating virtual buttons, etc.
UserInterfaceTool is the base class for all tools that interact with graphical user interface components, e.g., menus, dialog boxes, virtual input devices, etc.
MenuTool is the base class for all tools that invoke and interact with popup menus.
InputDeviceTool is the base class for all tools that interact with virtual input devices.
PointingTool is the base class for all tools that are meant to point out or highlight 3D objects displayed in an application.
UtilityTool is the base class for all tools that have application-independent functions.
ToolManager is a class managing the dynamic creation/destruction of tools and the association of tools to input devices, buttons, and valuators.
Vislet is the base class for stand-alone graphical objects that can be displayed inside a VR application without the application's knowledge or support.
VisletManager is a class managing the available vislet classes, and vislet instances.
SceneGraphSupport.h contains namespace-global functions to simplify rendering scene graphs.