<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ubc.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DorukOn</id>
	<title>UBC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ubc.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DorukOn"/>
	<link rel="alternate" type="text/html" href="https://wiki.ubc.ca/Special:Contributions/DorukOn"/>
	<updated>2026-09-13T20:58:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.ubc.ca/index.php?title=Emerging_Media_Lab&amp;diff=903502</id>
		<title>Emerging Media Lab</title>
		<link rel="alternate" type="text/html" href="https://wiki.ubc.ca/index.php?title=Emerging_Media_Lab&amp;diff=903502"/>
		<updated>2026-08-19T00:13:08Z</updated>

		<summary type="html">&lt;p&gt;DorukOn: Added VestibuLearn wiki page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Emerging Media Lab}}&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Emerging Media Lab (EML) is an experimental space where faculty, students, and staff from all disciplines collaborate with industry and community. Its mission is to evolve learning by creating tools and techniques using emerging media including Augmented, Mixed, and Virtual Reality.&lt;br /&gt;
&lt;br /&gt;
===About this wiki===&lt;br /&gt;
&lt;br /&gt;
This section of the UBC wiki complements our public-facing website and GitHub repositories. Here you can find information on how to download and build our projects, as well as general technical information available to anyone. For all other EML documentation, including operations and administration info, consult [[Documentation:EML Where to find it]].&lt;br /&gt;
&lt;br /&gt;
All EML members are welcome to contribute to this documentation. Find out more about how to contribute: [[Documentation:EML How to Contribute]]&lt;br /&gt;
&lt;br /&gt;
== What you can do at EML ==&lt;br /&gt;
&lt;br /&gt;
We work with staff, faculty, students, volunteers, and student workers. Here&#039;s a short list of some of the ways you can get involved with EML, or visit the [http://eml.ubc.ca Emerging Media Lab website] for more information.&lt;br /&gt;
&lt;br /&gt;
=== UBC Faculty ===&lt;br /&gt;
&lt;br /&gt;
* [https://eml.ubc.ca/call-for-proposals/ Propose a project]&lt;br /&gt;
* [https://eml.ubc.ca/book-a-visit/ Bring your class to EML]&lt;br /&gt;
* [https://eml.ubc.ca/course-support/ Integrate your course with EML]&lt;br /&gt;
&lt;br /&gt;
=== UBC Students ===&lt;br /&gt;
&lt;br /&gt;
* [https://eml.ubc.ca/contact-us/get-involved/ Work on an EML project as a volunteer or paid student worker]&lt;br /&gt;
* [https://eml.ubc.ca/emlx/ Join EMLx to work on your own project using EML resources]&lt;br /&gt;
* [https://eml.ubc.ca/contact-us/get-involved/ Run demos and represent EML at our drop-ins and events]&lt;br /&gt;
* [https://eml.ubc.ca/course-support/ Do your coursework, capstone project, or directed studies at EML]&lt;br /&gt;
* Find out more about [[EML Learning Outcomes]]&lt;br /&gt;
&lt;br /&gt;
=== Everyone at UBC ===&lt;br /&gt;
&lt;br /&gt;
* [https://eml.ubc.ca/drop-ins/ Connect with us to check out our projects, and try out emerging technologies like virtual and augmented reality]&lt;br /&gt;
* [https://eml.ubc.ca/book-a-visit/ Book a visit to EML]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://eml.ubc.ca/contact-us/ Contact us or stop by a drop in to find out more!]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== EML Code of Conduct ==&lt;br /&gt;
When visiting the Emerging Media Lab itself, working with EML, or participating in EML spaces online, you agree to the [[EML Code of Conduct]].&lt;br /&gt;
&lt;br /&gt;
== EML locations ==&lt;br /&gt;
EML has several lab spaces on the UBC Vancouver campus. Most meetings happen in the main development space in McGavin. [[https://eml.ubc.ca/drop-ins/ Public demos and drop-ins are held in Irving K. Barber Learning Centre]].&lt;br /&gt;
&lt;br /&gt;
Please note that not all locations are open to the public. [[https://eml.ubc.ca/book-a-visit/ Book a visit on our website.]]&lt;br /&gt;
&lt;br /&gt;
[https://eml.ubc.ca/locations/ Get directions and find out more about our locations.]&lt;br /&gt;
&lt;br /&gt;
== EML resources ==&lt;br /&gt;
We have a variety of equipment, tools, and know-how that you&#039;re welcome to use. Contact us for more information.&lt;br /&gt;
&lt;br /&gt;
==Current projects== &lt;br /&gt;
&lt;br /&gt;
Current projects documentation:&lt;br /&gt;
*26-1001 EPISODE (Enhanced Practice for Integrated Simulation of Drug-Related Encounters)&lt;br /&gt;
*[[Documentation:Immersive Education in Mining|25-3002 IMLE (Immersive Materials Learning Environment)]]&lt;br /&gt;
*[[Documentation:26-1001 Vestibulearn: An Interactive XR Guide to Vestibular Anatomy|26-1001 Vestibulearn: MR BPPV Treatment]]&lt;br /&gt;
*[[24-3002 Procedural Poetry Funhouse|25-3001 Procedural Poetry Funhouse]]&lt;br /&gt;
*26-1001 ARCADE (Augmented Reality Community Authoring &amp;amp; Development)&lt;br /&gt;
&lt;br /&gt;
==Past projects==&lt;br /&gt;
We have worked on a variety of projects across UBC faculties and departments. [https://eml.ubc.ca/projects Learn more about them on our website&#039;s Projects page.]&lt;br /&gt;
*[[Documentation:25-1002 Virtual Soils|25-1002 Virtual Soils]]&lt;br /&gt;
*[[Documentation:24-1002 Augmented Reality Assisted Standard Operating Procedures (AR-A-SOP)|25-1002 Augmented Reality Assisted Standard Operating Procedures (AR-A-SOP)]]&lt;br /&gt;
*[[Documentation:23-1003 Nurse Practitioner|25-1003 Nurse Practitioner]]&lt;br /&gt;
*[[Documentation:24-1001 Enhanced Auditory Simulation Improved Map|24-1001 Enhanced Auditory Simulation Improved Map (EARSIM)]]&lt;br /&gt;
*[[24-3001 Head Spin: Multisensory Integration of 3D Orientation in VR]]&lt;br /&gt;
*[[24-3003 Online Course Enhanced Learning Intelligent Assistant (OCELIA)]]&lt;br /&gt;
*[[Documentation:23-3001 Judicial Interrogatory Simulator|23-1001 Judicial Interrogatory Simulator]]&lt;br /&gt;
*[[Documentation:23-1002 Behavioural Biomarker|23-1002 Behavioural Biomarker]]&lt;br /&gt;
*[[Documentation:23-1003 Nurse Practitioner|23-1003 Nurse Practitioner]] &lt;br /&gt;
*[[Documentation:23-1004 VR Makerspace|23-1004 Virtual Makerspace]]&lt;br /&gt;
*[[Documentation:23-3002 Tapestry Tool ML|23-3002 Tapestry Tool ML]]&lt;br /&gt;
*[[Documentation:23-3003 Vestibular Assessment|23-3003 Vestibular Assessment]]&lt;br /&gt;
*[[Documentation:23-3004 Shakespeare xR|23-3004 Shakespeare xR]]&lt;br /&gt;
*[[Documentation:Metabolism|19-3001 3D Metabolism]]&lt;br /&gt;
*[[3D Educational Resources]]&lt;br /&gt;
*[[Documentation:Moot Court|Moot Court]]&lt;br /&gt;
*[[Documentation:COGS 300|COGS 300 Labs]]&lt;br /&gt;
*[[Documentation:Pterygopalatine Fossa VR|Pterygopalatine Fossa VR]]&lt;br /&gt;
*[[Documentation:AAC Simulator|AAC Simulator]]&lt;br /&gt;
*[[Documentation:Radiology Diagnostic Trainer|Radiology Diagnostic Trainer]]&lt;br /&gt;
*[[Documentation:Gamifying Forestry|Gamifying Forestry]]&lt;br /&gt;
*[[Documentation:OER Geomatics|OER Geomatics]]&lt;br /&gt;
*[[Documentation:Geospatial Audio|Geospatial Audio]]&lt;br /&gt;
*[[Documentation:Taxidi_Ancient_City|Exploration of Ancient City]]&lt;br /&gt;
*[[Documentation:Holographic Brain Project|Holobrain]]&lt;br /&gt;
*[[Documentation:Soil_TopARgraphy|Soil TopARgraphy]]&lt;br /&gt;
*[[Documentation:Syrian Digital Storytelling Experience|Syrian Digital Storytelling Experience]]&lt;br /&gt;
*[[Documentation: UBC Time Machine|UBC Time Machine]]&lt;br /&gt;
*[[Documentation: Pain Box|Pain Box]]&lt;br /&gt;
*[[Documentation: Math World|Math World]]&lt;br /&gt;
*[[Documentation: Digital Glass|Digital Glass]]&lt;br /&gt;
*[[Documentation: Pocket Pelvis|Pocket Pelvis]]&lt;br /&gt;
*[[Documentation:Virtual Co-Locator|Virtual Co-Locator]]&lt;br /&gt;
*[[Documentation:VR in Pain Control|VR in Pain Control]]&lt;br /&gt;
*[[Documentation:MindCraft|MindCraft]]&lt;br /&gt;
*[[Documentation:Physics World|Physics World]]&lt;br /&gt;
*[[Documentation:Stanley Park Virtual Field Trip|Stanley Park Virtual Field Trip]]&lt;br /&gt;
*[[Documentation:Interactive Orchestra|Interactive Orchestra]]&lt;br /&gt;
*[[Documentation:AR Design|AR Design]]&lt;br /&gt;
*[[Documentation:Jupyter3D|Jupyter3D]]&lt;br /&gt;
*[[Documentation:Language Chatsim|Language Chatsim]]&lt;br /&gt;
*[[Documentation:ScholarsVR|ScholarsVR]]&lt;br /&gt;
*[[Interactive Animation Toolkit for Unity]]&lt;br /&gt;
*[[Documentation:Main Mall Hustle|Main Mall Hustle]]&lt;br /&gt;
*[[ECG Terrain]]&lt;br /&gt;
*[[Digital Play]]&lt;br /&gt;
*[[Documentation:EML Electrocardiogram (ECG) Project|ECG Classification]]&lt;br /&gt;
*[[Documentation:Socratic Dialogues|Socratic Dialogues]]&lt;br /&gt;
&lt;br /&gt;
==Technical documentation==&lt;br /&gt;
These are instructions for how to do some of what EML does. Looking for help or a place to work on your project? Contact us.&lt;br /&gt;
* [[Documentation:Unity&#039;s UI Toolkit Guide]]&lt;br /&gt;
*[https://docs.google.com/document/d/1UyUrTLm6t_5IHcvABwkONOL4VwfsBHHjzIQSE_bq-Vw/edit A Guide To Capturing and Preparing Photogrammetry For Unity]&lt;br /&gt;
*[[Documentation:ZBrush Optimization Workflow]]&lt;br /&gt;
*[[Documentation:Emerging Media Lab Tools]]&lt;br /&gt;
*[[Documentation:Maya Optimization Workflow]]&lt;br /&gt;
&lt;br /&gt;
==How to contact EML==&lt;br /&gt;
Please contact us via the [https://eml.ubc.ca/contact-us Contact page on our website.]&lt;br /&gt;
&lt;br /&gt;
== EML Documentation License ==&lt;br /&gt;
{{cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Emerging Media Lab]] [[Category: EML]]&lt;/div&gt;</summary>
		<author><name>DorukOn</name></author>
	</entry>
	<entry>
		<id>https://wiki.ubc.ca/index.php?title=Documentation:26-1001_Vestibulearn:_An_Interactive_XR_Guide_to_Vestibular_Anatomy&amp;diff=903424</id>
		<title>Documentation:26-1001 Vestibulearn: An Interactive XR Guide to Vestibular Anatomy</title>
		<link rel="alternate" type="text/html" href="https://wiki.ubc.ca/index.php?title=Documentation:26-1001_Vestibulearn:_An_Interactive_XR_Guide_to_Vestibular_Anatomy&amp;diff=903424"/>
		<updated>2026-08-15T02:06:58Z</updated>

		<summary type="html">&lt;p&gt;DorukOn: Created page with &amp;quot;{{infobox Emerging Media Lab}} =VestibuLearn: An Interactive XR Guide to Vestibular Anatomy=  =Introduction= VestibuLearn is a virtual-reality educational prototype built to teach the anatomy and physiology behind Benign Paroxysmal Positional Vertigo (BPPV), one of the most common causes of vertigo. BPPV is caused by displaced calcium-carbonate crystals (otoconia / &amp;quot;canaliths&amp;quot;) migrating into the semicircular canals of the inner ear. Clinicians treat it with canalith-rep...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Emerging Media Lab}}&lt;br /&gt;
=VestibuLearn: An Interactive XR Guide to Vestibular Anatomy=&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
VestibuLearn is a virtual-reality educational prototype built to teach the anatomy and physiology behind Benign Paroxysmal Positional Vertigo (BPPV), one of the most common causes of vertigo. BPPV is caused by displaced calcium-carbonate crystals (otoconia / &amp;quot;canaliths&amp;quot;) migrating into the semicircular canals of the inner ear. Clinicians treat it with canalith-repositioning maneuvers such as the Epley Maneuver, a precise sequence of head and body rotations that guides the crystals back out of the affected canal.&lt;br /&gt;
&lt;br /&gt;
Understanding &#039;&#039;why&#039;&#039; these maneuvers work requires visualizing the 3D anatomy of the vestibular apparatus and the fluid (endolymph) / cupula mechanics the maneuvers exploit, something that is difficult to teach with 2D diagrams alone. VestibuLearn solves this by letting a learner wear a VR headset while their real head rotation drives a virtual inner-ear model in real time. A procedural fluid simulation shows endolymph flow and cupula deflection responding to head motion, so the learner can directly see how each semicircular canal responds to head rotation.&lt;br /&gt;
&lt;br /&gt;
The current focus of the prototype is the &#039;&#039;&#039;fluid-simulation explorer&#039;&#039;&#039;. In the build&#039;s current state, the primary experience (the Play button) is a free-form, head-driven vestibular fluid-simulation sandbox. Pressing Play hides the menu and reveals both inner-ear models (left and right), each driven by its own system that captures the user&#039;s head movement and visualizes endolymph flow and cupula deflection per canal in real time, with tunable simulation parameters (flow speed, display speed, short/long time constants). The story VestibuLearn tells is one of turning an invisible internal process, fluid sloshing in microscopic canals, into something a learner can watch happen in real time, in response to their own movement.&lt;br /&gt;
&lt;br /&gt;
=Primary Features=&lt;br /&gt;
* &#039;&#039;&#039;Head-driven vestibular fluid simulation (Play)&#039;&#039;&#039;: Pressing Play (`MainMenuController.OnPlayPressed()`) hides the menu, enables input, and scale-in-reveals both inner-ear models, each running a real-time simulation of endolymph flow and cupula deflection driven by the user&#039;s own head rotation.&lt;br /&gt;
* &#039;&#039;&#039;Correct-canal isolation&#039;&#039;&#039;: Fixed anatomical sensitivity axes and dominance suppression ensure only the anatomically correct canal responds to a given head movement, keeping the visual feedback readable.&lt;br /&gt;
* &#039;&#039;&#039;In-world simulation parameter controls&#039;&#039;&#039;: Adjustable flow speed, maximum display speed, and short/long time constants, with live m/s and s readouts inside the VR environment.&lt;br /&gt;
* &#039;&#039;&#039;Interactive ear manipulation&#039;&#039;&#039;: Mutually exclusive Move, Rotate, and Scale gizmos let the user manipulate the ear models via pinch or ray interactions.&lt;br /&gt;
* &#039;&#039;&#039;Interactive anatomy labels&#039;&#039;&#039;: Billboarded leader-line labels identify the semicircular canals, ampullae, utricle, saccule, and cochlea, always facing the user and avoiding overlap.&lt;br /&gt;
* &#039;&#039;&#039;User Interface&#039;&#039;&#039;: A uGUI (Canvas) based menu system with Play, Interact, Questionnaire, Options, and About panels, plus a wrist-mounted options canvas.&lt;br /&gt;
* &#039;&#039;&#039;Quiz / questionnaire&#039;&#039;&#039;: A multiple-choice module (`QuizManager` / `QuizCanvas`) covering BPPV and vestibular anatomy, with scoring and audio feedback.&lt;br /&gt;
* &#039;&#039;&#039;Accessibility / comfort options&#039;&#039;&#039;: Dark mode, comfort/smooth turning, volume adjustment, and left/right controller selection, synced across menus.&lt;br /&gt;
* &#039;&#039;&#039;Guided maneuver sequencer (legacy)&#039;&#039;&#039;: A dormant system that walks a user through the Epley maneuver step by step (head-angle targets, hold timers, audio cues). Present in the code and assets but not currently wired into the Play flow.&lt;br /&gt;
&lt;br /&gt;
=Methods=&lt;br /&gt;
VestibuLearn is a single self-contained Unity VR application; there is no separate web or server component. All content (anatomy models, fluid simulation, UI, and quiz) lives in the Unity project and runs on-device on a standalone VR headset.&lt;br /&gt;
&lt;br /&gt;
The core simulation models the cupula-endolymph system as a simplified first-order (leaky-integrator) approximation of the true damped second-order pendulum system. The true system is a damped second-order pendulum, but because its fast time constant (T2, milliseconds) is negligible next to its slow one (T1, seconds), the model collapses to a cheap first-order approximation: each frame, cupula deflection is nudged toward the current sensed angular velocity by an amount scaled by dt/T1, and &amp;quot;leaks&amp;quot; back toward zero once the head stops rotating, mimicking how inner-ear fluid keeps sloshing briefly after motion ends. This is computed per canal on a scene-root master simulator object (`VestibularFluidSimulator`) and pushed to a custom flow-overlay shader (`VestibularFluidOverlay.shader`) for visualization. Fixed anatomical sensitivity axes (calibrated once from mesh geometry via an editor-only tool) and dominance suppression logic ensure only the correct canal reacts to a given rotation.&lt;br /&gt;
&lt;br /&gt;
UI, quiz, accessibility settings, and anatomy labels are built as parallel systems layered on top of the core simulation, coordinated through a main menu controller (`MainMenuController`) that manages panel switching and enables/disables input and visuals.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
The project&#039;s central design tension was balancing physical plausibility against real-time performance and interpretability in VR. A full second-order pendulum model of the cupula-endolymph system was judged unnecessary given the negligible fast time constant, so the team adopted a first-order approximation that is both computationally cheap and visually convincing for teaching purposes.&lt;br /&gt;
&lt;br /&gt;
A recurring technical risk was that anatomical sensitivity axes were originally derived directly from mesh vertices, which broke silently whenever the model was moved or re-imported. This was resolved by calibrating and fixing the axes once via an editor-only tool (`CanalSensitivityAxisSolver`), decoupling simulation correctness from live mesh geometry, with `CanalAxisDiagnostic` flagging suspiciously non-orthogonal axis pairs.&lt;br /&gt;
&lt;br /&gt;
The guided-maneuver system (angles, hold times, audio cues, step types) was deliberately built as data-driven ScriptableObject assets rather than hardcoded per-maneuver logic, so that future maneuvers (for example, Semont or the BBQ roll) can be authored without new code. This decision trades a small amount of upfront complexity for long-term extensibility.&lt;br /&gt;
&lt;br /&gt;
=Findings=&lt;br /&gt;
* Coupling a user&#039;s real head rotation to a physically plausible, real-time fluid simulation was achievable with a first-order leaky-integrator approximation rather than a full second-order physical model, keeping the simulation performant on standalone VR hardware.&lt;br /&gt;
* Canal cross-talk (multiple canals reacting to the same head movement) was resolved through fixed anatomical axes plus dominance suppression logic.&lt;br /&gt;
* Mesh-derived anatomical axes were fragile against model re-imports; calibrating and freezing them via a dedicated editor tool fixed this permanently.&lt;br /&gt;
* Authoring maneuvers as ScriptableObject data (rather than hardcoded sequences) made the maneuver system reusable, though this system is currently dormant and not part of the active Play flow.&lt;br /&gt;
* Billboarded, overlap-avoiding leader-line labels were necessary to keep anatomy labels legible in 3D space as the user moved around the models.&lt;br /&gt;
&lt;br /&gt;
=Challenges=&lt;br /&gt;
New users getting started with the project should be aware of the following:&lt;br /&gt;
* The current build&#039;s primary experience is the free-form fluid-simulation sandbox (Play button). The guided Epley maneuver walkthrough exists in the codebase but is &#039;&#039;&#039;not&#039;&#039;&#039; active by default; the calls that launch it in `OnPlayPressed()` are commented out, and it should be wired into its own trigger rather than the existing Play button.&lt;br /&gt;
* Anatomical sensitivity axes are fixed/calibrated values, not derived live from mesh geometry. If ear models are replaced or re-imported, axes must be recalibrated using the included editor diagnostic tools before the simulation will behave correctly.&lt;br /&gt;
* The project targets standalone Android VR headsets (for example, Meta Quest); testing should be done on-device or via XR Simulation in-editor, not assumed correct from Play Mode alone.&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
* &#039;&#039;&#039;Unity version required&#039;&#039;&#039;: Unity 6 (6000.4.6f1), using the Universal Render Pipeline (URP). The active render pipeline asset is `PC_RPAsset` (with `PC_Renderer`); a mobile config (`Mobile_RPAsset` / `Mobile_Renderer`) is also present for the Android/standalone-headset target.&lt;br /&gt;
* &#039;&#039;&#039;Target platform&#039;&#039;&#039;: Android (standalone VR headset, e.g. Meta Quest).&lt;br /&gt;
* &#039;&#039;&#039;Repository&#039;&#039;&#039;: Source is maintained on the lab&#039;s Perforce server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unity packages (via Package Manager):&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;XR Interaction Toolkit (3.4.1)&#039;&#039;&#039;: Provides interactors (poke, near-far, teleport), locomotion (snap/continuous turn, teleport, grab-move, climb), and UI interaction for XR. Needed for all VR input and movement.&lt;br /&gt;
* &#039;&#039;&#039;XR Hands (1.7.3)&#039;&#039;&#039;: Provides hand-tracking skeleton/mesh visualization and pinch/poke gesture detection. Needed for hand-tracked interaction as an alternative to controllers.&lt;br /&gt;
* &#039;&#039;&#039;OpenXR Plugin (1.15.1) and Meta OpenXR (2.5.0)&#039;&#039;&#039;: Cross-vendor XR runtime and Meta-specific extensions. Needed as the primary runtime loader for headset tracking and rendering.&lt;br /&gt;
* &#039;&#039;&#039;Input System (1.17.0)&#039;&#039;&#039;: Handles all input, with custom action assets `RightControllerInput` and `RightHandInput`.&lt;br /&gt;
* &#039;&#039;&#039;Universal Render Pipeline (17.3.0)&#039;&#039;&#039;: The project&#039;s rendering pipeline.&lt;br /&gt;
* &#039;&#039;&#039;uGUI (2.0.0)&#039;&#039;&#039;: Canvas UI system. &#039;&#039;&#039;TextMeshPro&#039;&#039;&#039; is bundled inside this package (it is not a separate Package Manager dependency in Unity 6) and provides all in-scene text, including anatomy labels and UI.&lt;br /&gt;
&lt;br /&gt;
=Art Assets=&lt;br /&gt;
* &#039;&#039;&#039;Inner-ear anatomy models&#039;&#039;&#039;: Primary vestibule model (`ear_just_canals.fbx`) with all semicircular canals shown transparently; used in the active EarsScene. A secondary model (`ear.fbx`) with the posterior canal transparent and otoconia visible in the canal is retained but dormant.&lt;br /&gt;
* &#039;&#039;&#039;Epley maneuver character&#039;&#039;&#039;: A rigged humanoid character (`epley_RIGHT (NOT LEFT).fbx`) used to demonstrate body-repositioning steps of the Epley maneuver; part of the currently dormant guided-maneuver system.&lt;br /&gt;
* &#039;&#039;&#039;Scenes&#039;&#039;&#039;: `EarsScene` is the primary, shipping scene (in build settings). `Questionnaire` is a standalone quiz/interaction test scene at the Assets/ root. `SampleScene`, `HandsDemoScene`, `PlayScene`, and `AlexsScene` are template or sandbox scenes disabled in the build.&lt;br /&gt;
* &#039;&#039;&#039;Shaders/materials&#039;&#039;&#039;: The custom `VestibularFluidOverlay.shader` (with `M_FlowOverlay.mat`) drives the visible endolymph flow effect on the ear meshes. `AnatomySurfaceHighlight.shader` handles anatomy selection highlight, and supporting shaders (`LineOnTop`, `UIOnTop`, `UIOverlayDefault`, `AnchorGlow`) keep UI and label lines correctly layered over 3D geometry in VR.&lt;br /&gt;
* &#039;&#039;&#039;Audio&#039;&#039;&#039;: Pre-recorded maneuver voiceovers (`lay_down.mp3`, `rotate_body`, `sit_upright`, `next_step`), countdown clips (`one` through `five`, `ten_seconds`, `twenty_seconds`, `thirty_seconds`, `sixty_seconds`), and UI SFX (`ui-click-soft`, `ui-click-deep`, `pop_sound`, `pop_sound_2`).&lt;br /&gt;
* &#039;&#039;&#039;UI reference images&#039;&#039;&#039;: Figma-exported reference images in `Assets/UI/` guide in-editor UI layout; these are visual references only and are not required at runtime.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
The project runs entirely on &#039;&#039;&#039;first-party Unity packages&#039;&#039;&#039;; there are no third-party runtime libraries. Core packages:&lt;br /&gt;
* Unity XR Interaction Toolkit 3.4.1&lt;br /&gt;
* Unity XR Hands 1.7.3&lt;br /&gt;
* Unity OpenXR Plugin 1.15.1&lt;br /&gt;
* Meta OpenXR 2.5.0&lt;br /&gt;
* Unity Input System 1.17.0&lt;br /&gt;
* Universal Render Pipeline 17.3.0&lt;br /&gt;
* Unity uGUI 2.0.0 (includes TextMeshPro)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(The only non-Unity entry in the manifest is `UniGitHistoryViewer`, an editor-only Git history viewer used during development; it is not a runtime dependency.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prefab / GameObject component notes:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Ear model GameObjects&#039;&#039;&#039; require a mesh renderer, the canal sensitivity solver component, and the fluid simulator component parented correctly under the camera rig to receive live head-rotation data; without the fixed sensitivity axis calibration, the simulation will not isolate canals correctly.&lt;br /&gt;
* &#039;&#039;&#039;XR Origin Hands (XR Rig)&#039;&#039;&#039; must include the Main Camera as the head tracker, with poke/near-far/teleport interactors and skinned hand visualizers attached for both controller and hand-tracked interaction to function.&lt;br /&gt;
* &#039;&#039;&#039;UI Poke Components prefab&#039;&#039;&#039; is required on any canvas that needs to support VR hand-poke interaction (used in EarsScene and the Questionnaire scene).&lt;br /&gt;
* No special tags or layers are required beyond Unity/XRI defaults; standard XR Interactable layers should be preserved for interactors to detect the ear models and UI correctly.&lt;br /&gt;
&lt;br /&gt;
=First Time Setup Guide=&lt;br /&gt;
* Install Unity 6 (6000.4.6f1) and open the project with the Android build target selected.&lt;br /&gt;
* Confirm the XR Plug-in Management settings have OpenXR (with the Meta OpenXR feature group) enabled as the active loader.&lt;br /&gt;
* Load `EarsScene` (the primary scene) and press Play to enter the head-driven fluid-simulation sandbox.&lt;br /&gt;
* For headset testing, deploy to a standalone Android VR headset (for example, Meta Quest); in-editor testing can use XR Simulation.&lt;br /&gt;
* If ear models are replaced, re-run the canal-axis calibration tool (`CanalSensitivityAxisSolver`) before relying on the fluid simulation, otherwise canal isolation will be incorrect.&lt;br /&gt;
&lt;br /&gt;
=Poster=&lt;br /&gt;
&lt;br /&gt;
=Development Team=&lt;br /&gt;
* &#039;&#039;&#039;Principal Investigator&#039;&#039;&#039;: Dr. George Medvedev&lt;br /&gt;
* &#039;&#039;&#039;Project Lead&#039;&#039;&#039;: Nishant Molleti&lt;br /&gt;
* &#039;&#039;&#039;Design&#039;&#039;&#039;: Doruk On&lt;br /&gt;
* &#039;&#039;&#039;Development&#039;&#039;&#039;: Nishant Molleti&lt;br /&gt;
* &#039;&#039;&#039;Staff&#039;&#039;&#039;: Dante Cerron, Alex Day, Maryann Kempthorne, Phoebe Titus, Avni Kant, Saeed Dyanatkar&lt;br /&gt;
* &#039;&#039;&#039;Project duration&#039;&#039;&#039;: May 2026 to August 2026&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
&#039;&#039;&#039;Is the guided Epley maneuver walkthrough active in the current build?&#039;&#039;&#039;&lt;br /&gt;
No. The code and ScriptableObject-based maneuver data (`EpleyLeft.asset`, `EpleyRight.asset`) still exist, but the calls that launch it are commented out of the current Play flow. `ManeuverSequencer.RestartSequence()` only runs when returning to the menu. To restore guided maneuvers, re-enable those calls, but they should be wired into their own trigger rather than the existing Play button.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What headset does this run on?&#039;&#039;&#039;&lt;br /&gt;
The project targets standalone Android VR headsets, such as the Meta Quest line, and supports both controller and hand-tracked interaction. Hand-tracked interaction requires the headset&#039;s hand-tracking (and, where applicable, passthrough) to be enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why is the fluid simulation simplified instead of fully physically accurate?&#039;&#039;&#039;&lt;br /&gt;
The true cupula-endolymph system behaves like a damped second-order pendulum, but its fast time constant is negligible compared to its slow one, so a first-order approximation gives visually accurate behavior at a fraction of the computational cost.&lt;br /&gt;
&lt;br /&gt;
=Bibliography=&lt;br /&gt;
* X Bot 3D Character Model, [https://www.mixamo.com/#/?page=1&amp;amp;query=x+bot&amp;amp;type=Character Mixamo]&lt;br /&gt;
* Sleeping Idle (Description: Restless Sleeping) by Mixamo&lt;br /&gt;
* Lying Down Animation by Mixamo&lt;br /&gt;
* Anatomy of the Inner Ear 3D Model, [https://sketchfab.com/3d-models/anatomy-of-the-inner-ear-f80bda64666c4b8aaac8f63b7b82a0a0 University of Dundee School of Medicine]&lt;br /&gt;
* Bed, Sample 3D Model, [https://sketchfab.com/3d-models/bed-sample-b547d81073b64d3e97200fd3ae9a74af Mifu Saja]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reference links&#039;&#039;&#039;&lt;br /&gt;
* Anatomy | Physiology of the Utricle &amp;amp; Saccule [Otolithic Organs] by Catalyst University [https://www.youtube.com/watch?v=5iZAnn5HlVw]&lt;br /&gt;
* Anatomy | Physiology of the Semicircular Canals by Catalyst University [https://www.youtube.com/watch?v=uCRx5pr1n2I]&lt;br /&gt;
* The Vestibular System Endolymph Motion Demonstration by sixesfullofnines [https://www.youtube.com/watch?v=dSHnGO9qGsE]&lt;br /&gt;
* How the Inner Ear Balance System Works, Labyrinth Semicircular Canals by Fauquier ENT [https://www.youtube.com/watch?v=YMIMvBa8XGs]&lt;br /&gt;
* The Vestibular System, Animation by Alila Medical Media [https://www.youtube.com/watch?v=ryGMI3SpxCE]&lt;br /&gt;
* The vestibular system, balance, and dizziness | MCAT by khanacademymedicine [https://www.youtube.com/watch?v=1AZnFszUroI]&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
MIT License&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2026 University of British Columbia&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&lt;br /&gt;
&lt;br /&gt;
Last edit: August 14, 2026 by Doruk On&lt;br /&gt;
{{cc-by-sa-4.0}}&lt;br /&gt;
[[Category: Emerging Media Lab]] [[Category: EML]]&lt;/div&gt;</summary>
		<author><name>DorukOn</name></author>
	</entry>
</feed>