VR-Link provides a range of features to help you create and maintain HLA and DIS applications:
-
Exercise Connection: An exercise connection is a VR-Link application's interface to an HLA or DIS exercise. It provides a protocol-independent interface through which to exchange simulation information with other applications, either through the DIS network, or the HLA RTI.
-
Object tracking: A VR-Link application uses a reflected entity list to keep track of remote participants in your virtual world by processing incoming attribute updates (through either DIS or HLA), and provides a protocol-independent1 interface to their state. It submits update requests as needed, provides notice when an entity enters or leaves an exercise, and performs dead-reckoning, trajectory smoothing, and filtering, as desired. Reflected object lists are available for other types of objects, such as emitters, transmitters, and so on.
-
Object publishing: A VR-Link application uses an Entity Publisher to keep remote applications informed about the state of entities that you simulate locally. You periodically set the current state of your objects through its protocol-independent interface, and the Entity Publisher automatically sends state updates when data changes or exceeds configurable thresholds. Object publishers are available for other types of objects, such as emitters, transmitters, and so on.
-
Interaction classes: VR-Link provides a protocol-independent1 interface to the sending and receiving of interaction messages that describe simulation events such as weapon fires, detonations, and radio signal transmissions. C++ classes representing DIS PDUs and HLA interactions usually provide mutator and inspector functions to access each field. Variable length PDUs and parameters are resized transparently. Functions are provided to print human-readable representations of interaction data.
-
FOM-Agility: While VR-Link comes with built-in support for the RPR FOM, the FOM Mapper class lets you map VR-Link's existing protocol-independent API to another FOM's parameters, attributes, and object or interaction classes. In this way, code that uses the API does not need to change when the FOM changes.
-
User extensibility: VR-Link's C++ API and implementation allow you to override most of its default functionality through subclassing. You can extend the toolkit to work with new types of HLA object or interaction classes and with new user-defined DIS PDUs. The VR-Link Code Generator can automatically generate the files needed to create new objects and interactions for HLA based on an XML or OMT data definition file.
-
Access to low-level details: For developers who want to work below the level of abstraction provided by our top-level API, VR-Link provides protocol-specific classes and functions. Low-level access includes direct access to the HLA RTI and to the details of network configuration in DIS.
-
Utility functions: VR-Link includes a rich set of utility functions, including vector and matrix manipulation functions, a platform-independent interface to the system clock, and support for discreet simulation time. Coordinate conversion utilities for geocentric coordinates, geodetic coordinates, topographic coordinates, and UTM coordinates are included as well.
-
Example applications: VR-Link comes with a set of HLA and DIS utility programs. For example, the netdump utility prints data received from remote simulations in an easy-to-read format. The f18 utility is a simple networked simulator that serves as a flexible debugging tool. Source code for the examples is provided to demonstrate the use of much of VR-Link's functionality.
-
You can use VR-Link's C++ interface from C applications.
1.2.1 Files and Executables in VR-Link
VR-Link includes the header files and libraries necessary to build applications based on VR-Link, plus executables and source code for the following utility applications:
VR-Link includes source code and executables for the sample applications. The "test" applications show how to extend the features of VR-Link by creating your own PDUs, interactions, encoders, and decoders.
[<< The Protocol-Independent API] [Home] [Top of Page] [Simulation Standards Supported >>]