# Eye-Tracking in Interactive Virtual Environments: Implementation and Evaluation
## 2 Methodological Issues
### The Complex World behind the Projection  
The virtual world presented to a user through the VR headset display does not have any physical dimensionality. It is instead rendered onto the two-dimensional plane of a VR  
Figure 1: Interconnection of technology. The VR headset hardware is augmented with eye-tracking hardware (depicted in yellow) connected to a PC (depicted in blue). This is facilitated through a driver and a VR/eye-tracking API. The API is then applied in a 3D engine/application (depicted in green), which expands on the API by applying an engine-specific SDK or custom implementation. LED display. Depth perception of a virtual 3D world is maintained by simulating some of the visual cues present in the real world. Monocular visual cues that can be applied in 3D graphics include perspective, 3D lighting, and postprocessing filters for recomputing light occlusion and atmospheric perspective [44]. At this level, _pseudo 3D_ level of depth perception is produced (e.g., as achieved by 3D graphics projected onto an LCD screen). By adding the binocular disparity visual cue, i.e., by shifting near object positions to the side for left/right display (as would be naturally perceived by the left/right eye in physical space), _real 3D_ depth perception is attained. Regardless of whether eye-tracking is stationary, mobile, or VR, or whether the stimulus is presented in 2D, pseudo 3D, or real 3D, eye-tracking device will always internally capture eye coordinates as 2D X/Y coordinates of the normalized projection plane where the capture commences (_point of regard_, _PoR_). The VR headset display is one such projection plane, and it serves as a portal between the real and the virtual world:  
* **Head movement** is tracked by the VR headset (or a motion capture setup for whole body movement). Unless otherwise limited, its six degrees of freedom (6 DoF) [45] allows direct rotation (3 DoF) and movement (3 DoF) in real space. User kinetic movement is translated directly into the virtual space, altering the camera's rotation and position. * **Locomotion user interfaces** allow translating movement into the virtual world--be it through abstraction, movement metaphors, or actual movement tracking. Up to six degrees of freedom are also possible, depending on the complexity and usability of the physical user interface (e.g., keyboard and mouse vs. a VR controller, treadmill, or other (experimental) devices [46]). There is a trade-off between the complexity of a locomotion user interface and the quality of sensory input it offers (e.g., keyboard facilitates on/off movement along one axis at a constant pace--it is a simple interface, but the lack of bodily kinesthetic feedback makes it susceptible to motion sickness [26]; a complex interface such as full-body motion capture allows for realistic, precise movement sensation--at a cost of setting up the interface, physical space demands, and significant purchasing costs). Locomotion user interfaces influence users' perceived ease of movement and distance estimation [47]; they can even facilitate new ways of working with digital content [48; 49]. They may also influence viewing behavior--this, however, has not been addressed in any research to date. * **Eye gaze** coordinates are transformed into raycasts, which extend into the virtual world, i.e., by using the _point of regard_ eye coordinate and camera position/rotation in the virtual world. As the ray is cast, it lands onto a spatial coordinate in the virtual world (_point of fixation_, _PoF_), provided something is in the ray's path to land on (3D objects or surfaces). In geometry and 3D engine terminology, a raycast is a beam with a positional vector origin and a directional vector angle [50]. In eye-tracking in VR, the origin is the virtual camera's position and rotation as aligned by real-world user movement or the locomotion user interface, and the directional vector is the eye-tracking coordinate angle relative to the camera's position/rotation.