Distance perception in an AR realistic environment. Designed for Microsoft HoloLens. This project is created using Unity 2018.2.21f1. Any Unity 2018.2.x should work fine with this project.
This project is designed for assessing human distance perception abilities in an AR realistic environment through Microsoft HoloLens. Project consists of a large 70m * 30m terrain with trees, 6 different objects at 5 distinct distances that appear in pre-randomized order under voice commands, and floating text to indicate experiment status and data. This project implements a full experimental protocol that will be explained in Details.
HoloLens should be facing the area where the subject is supposed to be facing when the program starts. Camera height is set to 1.6m by default, but can be changed to whatever subject feels comfortable with. This sets the initial tracking position of the device and allows for a smooth visual experience. There should be a marked position on the ground where the subject stays at throughout the experiment. Real-world reference objects with sample unit lengths should also be provided, in whatever unit the subject desires. Subject is allowed to estimate distances in whatever unit he/she feels comfortable with.
Subject should stand at a fixed location without moving until the end of all trials. Floating texts to the right of the subject indicate the list and trial number that the subject is currently at. If necessary, subject is to be asked his/her current list and trial number at any point in case of error. The texts also indicate whether a Reset
command was executed.
Each list contains 30 trials in the order recorded in NaturalSceneExpOrder.xlsx. When ready, subject should say List One
or whatever list number he/she is to be tested. Saying Next
will begin, navigate through, and ultimately end the trials in a given order depending on the current list. For each trial, subject should indicate what object it is, an estimation of the object's height, and the object's distance from himself/herself. The experiment supervisor is free to determine how many lists he/she wants in a session, but a minimum of three is recommended.
There are six objects used in total: SurvivalCharacter
, Cube
, FemaleCharacter
, Tiger
, Cone
, and Bush
. Heights of these objects are recorded in NaturalSceneExpOrder.xlsx, under the tab "Heights".
The floating text UI is located to the front-right of the subject. It indicates:
- Current list number (1 - 4)
- Current trial number (1 - 30)
- Whether a
Reset
was performed
None of these should be noticeable to the subject during the trials. The debug text is now removed since Anchor and Release commands are no longer supported.
Subject is allowed to control the experiment by saying certain keywords. Supported keywords in this program are:
-
List [One, Two, Three, Four]: set current list to be one of the four pre-randomized lists. The trial number will be reset regardless of what trial the subject was at.
-
Next: go to the next trial in current list. The current object on the terrain will disappear and a new one will appear at a different distance. If reached the end of list, the last object will disappear and trial number will reset. Saying "Next" again will start the list from beginning. This is the only command allowed for subject to navigate through the list.
-
Reset: reset the experiment. List number will be set to 1, trial number set to uninitialized, and status displayed as Reset.
-
The Anchor and Release features are obsolete and will no longer be supported in future versions. This is due to the limited and inaccurate spatial mapping functionality that HoloLens offers.
-
Camera height is now set to 1.6m above ground initially and adjustable in real time. This offers more flexibility while avoiding all the inconveniences of the anchor system which heavily depends on HoloLens's unreliable spatial mapping capabilities.
-
Some users report that when deployed to their HoloLens, a Debug Console would appear at the lower left corner of the display with an error message that says "NullReferenceException: Object reference not set to an instance of an object". It might be inevitable to have that message since a null GameObject reference is used in ExpManager.cs. The solution is to add
Debug.developerConsoleVisible = false;
to theUpdate ()
function in ExpManager.cs but some text may still be visible. Currently there is no perfect solution to this problem. Please make sure to uncheck the "Development Build" option when building the project. In some cases that will effectively prevent this problem. -
When building a
.sln
solution, please build to a separate folder. Unity will create a file calledUnityOverwrite.txt
under that folder. If different, delete its contents that do not start with#
and writeoverwrite-all
instead. This makes sure Unity rebuilds all solution files and reduces chances of error. -
When deploying, make sure the settings are
Release
,x86
andDevice
if HoloLens is connected to the computer, orRemote Machine
if connected via wireless network. -
For each trial, object will appear at a random position at a fixed distance away from the subject. Subject must be looking at the front whey saying "Next" since the program reads user's viewing direction and determines where the next object should appear.
This project is made under supervision of Professor Robert E. Bodenheimer at Vanderbilt University EECS Department, in collaboration with Sarah Creem-Regeher, Jeanine Stefanucci and Holly Gagnon at the University of Utah Department of Psychology. Special thanks to Lauren E. Buck at Vanderbilt EECS Department for development advices, Taylor Smith who offered code for positioning objects, and Carlos Salas who assisted to test the program.
- Rosales, C. S., Pointon, G., Adams, H., Stefanucci, J., Creem-Regehr, S., Thompson, W. B., & Bodenheimer, B. (2019, March). Distance Judgments to On-and Off-Ground Objects in Augmented Reality. In 2019 IEEE Conference on Virtual Reality and 3D User Interfaces (VR) (pp. 237-243). IEEE.