loader image

Point-of-Interest System

The Point-of-Interest (POI) system that drove the magic of almost every interaction done by user's of Interactiva's virtual experiences.

Scroll to
View More

mouse

The Point-of-Interest (POI) system was one of the core components of the Interactiva Engine that I designed and helped develop. It handled all the primary interactions that a user could have in any of the applications we developed during our time at Interactiva, and had a sophisticated base hierarchy of classes that let us reutilize the base code while adding custom interactions when needed.

We used it as the same core system to create museum exhibits in our virtual museum, virtual activities in virtual art fairs, and even interactable objectives in simulations like the ISS. I designed the system for it to have a pretty generic base class so that extendable behavior could be customized; this base class mostly handled most of the logic of whether the user could or could not interact with (and what conditions to check for these statuses to change).

The way it worked is relatively straightforward: first, a “POI” manager singleton would sample all the interactable objects in the scene that the user was within range. This would be checked via triggers, so as to not have to have a huge loop that sampled all the POI objects by distance; this happened once the player entered the trigger of a specific object. After this, we checked the distance, to make sure they were within range (in case one of the triggers was oversized). Finally, we checked the angle between the player’s viewport camera and the POI to determine whether they were looking at the POI. Then, this enabled the POI to be “interactable.”

I also added other fail safes; for example, I made sure that if two objects were equally within range, distance, and were being faced by the user, then only the one with the shortest angle could be interacted with (to avoid double interactions). I also added features like toggle interactions (where the user had to ability to focus-in-and-out of the POI) and rendering a highlight and prompt that would indicate to the user they could interact with the system.

The POI system ended up significantly improving our workflow for all interaction-based content at Interactiva’s projects.