Roland Bruggmann — Portfolio

Personal Pages

« Back to Main Page

Unreal Engine Plugin: Pupil Core

Version: v2.0.1
Author: Roland Bruggmann


Screenshot of Plugin Content

Screenshot of Plugin C++ Classes

A game plugin providing with eye tracking gaze ray visualisation, hit generation and gaze hit visualisation assets.



C++ Classes


The plugin was developed using Visual Studio 2019 and an UE4 Project enhanced as C++ code project.


Use the plugin as project plugin (folder MyProject/Plugins). Add the plugin by downloading and unpackaging an archive or using git clone:

git clone

Find the file MyProject/Plugins/Pupil/Config/DefaultPupil.ini and copy-paste its lines to file MyProject/Config/DefaultEngine.ini.

Screenshot of Plugin

Table of Contents

1. Plugin Settings and BP Function Library

1.1. Plugin Settings

The Plugin Settings provides with values as follows (cp. screenshot of Plugin Settings):

Screenshot of Plugin Settings:

Screenshot of Plugin Settings

1.2. BP Function Library

The Blueprint Function-Library provides with function nodes to access the plugin settings values (cp. screenshot BP Function-Library):

Screenshot Blueprint Function-Library:

Screenshot BP Function-Library

2. C++ Classes

Class Diagram:

Class Diagram Pupil

2.1. Pupil Gaze Item Actor

C++ Class PupilGazeItemActor:

2.2. Pupil Gaze Ray Actor

C++ Class PupilGazeRayActor inherits from PupilGazeItemActor. Its StaticMesh is intended to visualise a gaze ray.

2.3. Pupil Gaze Hit Actor

C++ Class PupilGazeHitActor inherits from PupilGazeItemActor. Its StaticMesh is intended to visualise the point where a gaze ray has hit an object.

2.4. Pupil Gaze Actor

C++ Class PupilGazeActor serves as a container for a ray and a hit and handles those as components:

2.4.1. Trace for Hit Generation

On calling function SetLocationAndRotation, SetTransformQuat, SetTransform, SetLocation, SetRotation or SetRotationQuat, the function Trace is triggered which performs a ray-tracing trying to generate a hit (channel visibility) and updates following ChildActorComponent values:

In case of a hit the objects are updated using values from the hit-result. If no hit was obtained, the objects are updated with values from the trace end.

2.5. Pupil Shape Target Actor

C++ Class PupilShapeTargetActor:

3. Blueprints

3.1. BP Pupil Gaze Ray Actor

BP_PupilGaze0RayActor and BP_PupilGaze1RayActor:

Screenshot of BP_PupilGaze0RayActor:

Screenshot BP_PupilGaze0RayActor

3.2. BP Pupil Gaze Hit Actor

BP_PupilGaze0HitActor and BP_PupilGaze1HitActor:

Screenshot of BP_PupilGaze0HitActor:

Screenshot BP_PupilGaze0HitActor

3.3. BP Pupil Gaze Actor

BP_PupilGaze0Actor and BP_PupilGaze1Actor:

Screenshot of BP_PupilGaze0Actor:

Screenshot BP_PupilGaze0Actor

3.4. BP Pupil Shape Target Actor

Screenshot of BP_PupilShapeTargetActor with PupilLabs Calibration-Marker Material:

Screenshot of BP_PupilShapeTargetActor with PupilLabs Calibration-Marker Material

4. Demo

Screenshot of Demo Map:

Screenshot of Demo Map

Screenshot of Demo Map LevelBlueprint:

Screenshot of Demo Map LevelBlueprint

A. References

« Back to Main Page