Skip to content

Birdwatching VR

A Unity VR prototype: explore a low-poly forest, photograph birds and fill a star-rated field guide. On our three-person student team I built the main systems: camera capture, bird detection, photo scoring, field-guide progress, backpack tools, comfort settings and the builds.

A bird in the playable Unity prototype.
My role
Camera capture, bird detection and scoring, field-guide progress, backpack tools, comfort settings and builds
Team
Three-person student team with Felix Chughtai and Talulla Allen
Built with
Unity 6, C#, URP, XR Interaction Toolkit, OpenXR, XR Hands
Status
Playable prototype with PCVR support and Quest standalone build work; shown at an IGDA Baltimore showcase
Jump to a section

Camera to field guide

The core loop: take a photo, the game identifies and scores the bird, and the physical book in your hand updates.

  1. Hold the camera; it renders a live preview.
  2. Pull the trigger to save the view as a PNG.
  3. Rays find the most visible bird in frame.
  4. Framing, visibility, distance and fill become a 1–4 star score.
  5. Species progress is saved to disk.
  6. The field guide in your hand updates with the photo, name and stars.
Unity dev footage of the in-hand field guide: open and closed states, anchored pages and page turning.

What I built

  • VR camera capture

    Held camera with live preview, trigger capture, zoom, shutter feedback, saved PNGs and preview repair.
  • Bird detection and scoring

    Camera rays identify the bird, then score framing, visibility, distance and fill into a 1–4 star rating.
  • Bingo field guide

    In-hand book with page turning, saved photos, species names, lock states, and best and latest stars.
  • Backpack tools

    Camera, book and feeding stick stowed on the body: shoulder retrieval, stow anchors, haptics, outlines and a right-shoulder camera summon.
  • Feeding stick

    A held perch that attracts one bird, holds it briefly, then releases it before a cooldown.
  • Comfort settings

    In-headset menu for movement, turning, vignette, credits and FPS, applied live. Controllers first, with a hand-tracking fallback.
What's in the current build, and the stack

Implemented slice

  • Seven species: Robin, Blue Jay, Cardinal, Chickadee, Sparrow, Gold Finch and Crow.
  • Nine bingo-book slots, including variants where the source art supports them.
  • Saved photo and progress data, with migration for older saves.
  • Low-poly forest with baked lighting, wind shaders, outlines and in-game credits.
  • Still rough: bird materials and shaders, and some backpack and camera alignment.

Stack

  • Unity 6000.3.10f1, C#, Universal Render Pipeline 17.3.0.
  • XR Interaction Toolkit 3.3.1, OpenXR 1.16.1, XR Hands 1.7.3, Oculus XR 4.5.2.
  • Dynamic Photo Camera Mini, adapted into a VR-held camera with live preview and PNG capture.
  • PCVR/OpenXR, with Android/Quest output through IL2CPP and OpenGL ES 3.2.

Playtests and showcase

We demoed Birdwatching VR at the IGDA® Baltimore showcase at the University of Baltimore, alongside other student projects. It tested onboarding, controls and comfort: did people know what to do without us hovering?

Earlier tests were less graceful. If birds looked grabbable, people tried to grab them, or bonk them with the book. We tightened the grab flags so the game reads as observation, not bird harassment.

Live headset demo at the IGDA® Baltimore showcase.
Our demo area, with attendees watching and playing.

Dev logs and documents

Short PDFs I wrote during the semester as the camera, field guide, backpack and comfort work came together.

Build notes and the original planning deck