Coordinate systems

Standard messages within the RTI, such as entity position and geometry allow locations and rotations to be specified in any combination of geodetic and/or local coordinates.

Theoretically, any coordinate system and reference frame can be used, as long as all applications use the same interpretation. However, GEISTT products assume the following:

  • Geodetic coordinates are in the WGS84 reference frame. Latitude and longitude are specified in degrees north and east, respectively. Altitude is specified in meters above mean sea level.

  • Local coordinates are specified in meters. X is right/east, Y is up, Z is forward/north. Consequently, it’s a left-handed coordinate system. This is the same coordinate system as used in Unity.

  • Local rotations are represented by a quaternion in the local (Unity-aligned) coordinate system.

  • Euler rotations are specified in degrees, positive right/up. Angular velocity in degrees per second.

  • Velocity and acceleration are specified in meters per second and meters per second per second, respectively.

Local coordinate conversions

Unreal Engine

Unreal uses a coordinate system in centimeters where X is forward/north, Y is right/east, Z is up. It’s a left-handed coordinate system just like Unity. The RTI components do all the conversion for you, so e.g. for editor properties you should stick to Unreal coordinates (centimeters etc). If you implement additional messages containing position/rotations etc, you can reuse existing conversion functions. For details, see the coordinate conversion methods in RTI Position Component.

THREE.js

THREE uses almost but not quite the same coordinate system as the RTI assumption, except Z is reversed, thus rearward/south. Consequently, it’s a right-handed coordinate system.

Local to geodetic coordinate conversions

Unreal Engine

To aid in converting to/from geodetic coordinates, the Unreal client provides an interface called *RTI Coordinate Conversion Interface. To leverage this, **implement the interface in the level blueprint, and the position component will add geodetic coordinates to its published messages.

Unity

The RTI Position component in the Unity client provides two static delegate functions, RTIPosition.LocalToGeodetic and RTIPosition.GeodeticToLocal, that you can implement to provide conversion from/to geodetic coordinates. See RTITestSceneCoordinates for example usage.


Copyright © Inhumate AB 2024