All Projects
Prototype Role to confirm

UN SDG Discovery Hall

Unity project for an NSF-funded attention study with the SJSU LTI Lab, the ALA IRC UN Subcommittee, and VERA. One build is documented for Quest in the lab and a desktop or WebGL sample.

Overview

Logs gaze, fixations, station visits, and clicks for Passive, Interactive, and Guided conditions, and writes research CSV files. No participant results are reported here.

The README is a Unity project for an NSF-funded study of information-seeking and attention in immersive environments. It names the SJSU LTI Lab, the ALA IRC UN Subcommittee, and VERA (Virtual Experience Research Accelerator). A WebGL build of the desktop sample is playable in the browser, and the images on this page are in-game captures from the Discovery Hall.

Quest Pro has eye tracking. Quest 3 does not, so the project falls back to head gaze. The gaze_source column records which signal a sample used. Fixations use I-VT with a 30 degrees per second threshold and a 100 ms minimum, citing Salvucci and Goldberg 2000. The three conditions are Passive, Interactive, and Guided.

The menu command Build Discovery Hall Scene generates DiscoveryHall.unity with three placeholder stations: SDG 4, SDG 11, and SDG 13. The README says to rebuild that scene before an editor headset build, because the file is generated output. Unity is pinned to 6000.3.9f1. The project started on 2022.3 and moved to Unity 6 because the VERA plugin requires 6000.0 or newer.

docs/STUDY_DESIGN.md includes my name, Chris Velez, in the team list, in the same sentence as the words undergraduate assistant. I am not printing a job title from that line. The same note has planned sample sizes and dates. Those stay off this page. CONTENT_SOURCES.md says UN icons and photos in the Unity project should be checked against UN guidelines before redistributing them. I did not copy those files here.

Development Process

1

One scene, two rigs

The builder places an OVRCameraRig, with left and right eye gaze, and a DesktopPlayer in the same scene, and switches them at runtime. Desktop controls are WASD or the arrow keys, click to look, and Esc to free the cursor. WEBGL_BUILD.md describes the shareable browser build as that desktop rig, not the Quest APK. On Quest, the README uses the left stick to walk, the right stick to teleport and snap-turn, and either trigger to select what the gaze ray hits.

2

What the session writes

GazeProvider emits one gaze ray per frame. AttentionTarget stores dwell, look count, and time to first look for a labeled area. SdgStation records visits. StudyEventLogger writes clicks, key presses, station enter and exit, docent guidance, quiz responses, and session start and end. A web sample can POST the CSVs through RemoteDataUploader. VeraBridge is the seam to the VERA plugin. Portal credentials load from vera_credentials.json, which is gitignored.

3

WebGL when Meta's registry fails

WEBGL_BUILD.md says Unity can fail the whole package resolve when Meta's npm registry is unreachable, which also blocks VERA's dependencies. The documented escape hatch removes com.meta.xr.sdk.core and the scoped registry, then adds the scripting define NSFGRANT_NO_META so gaze scripts compile against stubs. Those stubs are not a headset runtime. The note says to put the Meta package back and clear the define before a Quest build.

Challenges

  • Quest 3 has no eye tracker. Head gaze is the fallback, and the two signals have to stay separable. Dropping gaze_source would mix them.
  • The Discovery Hall scene file is generated. An editor build that skips the menu command ships whatever scene was already on disk. SCREENSHOTS.md also says the scene files are not in the repository until that command runs.
  • The README treats eye-tracking data as identifiable. Logs go to the app's private storage, and StudyData plus CSV exports are gitignored. This page does not include session files, and it does not claim an IRB status.

What I Learned

  • A frame-aligned gaze sample is not the headset's native eye-tracker clock. The README says analyses that need the native timestamps should resample on timestamp_utc_ms.
  • The browser demo and the lab headset are not the same signal. WEBGL_BUILD.md is explicit that the WebGL build is the desktop rig. I do not want a share link described as the Quest study.