PASoftware Developer
Case study

Floex VR

VR Training Simulator for a Heart-Lung Machine

UnityC#Meta Quest 3OpenXRMeta XR SDKURP

Overview

A VR training simulator for Floaid's Floex 3.0 Heart-Lung Machine — built solo in Unity for Meta Quest 3. It lets a perfusionist get familiar with the machine without the real hardware, and doubles as a showcase Floaid uses with investors and at conferences. Reproduces the machine's four pump-head touchscreens, the main pole screen, and physical RPM knobs as interactive 3D objects, with RPM-coupled rotor spin and spatial audio. Floaid is an IIT Madras Research Park-incubated startup developing an artificial heart.

  • Reproduced the HLM's four pump-head touchscreens and the main pole screen, plus physical RPM knobs, as interactive 3D objects in Unity (Meta Quest 3, OpenXR).
  • Dual VR input — laser-pointer ray + direct-touch poke — working simultaneously across all five world-space canvases.
  • RPM-coupled rotor spin and pitch-shifting spatial audio, driven one-way off a display-decoupled state model.
  • Began an engine-independent, unit-tested patient-physiology framework (12 variables, fixed-step 20 Hz driver).
  • Maintain a daily devlog documenting development decisions and progress.

The problem

Floaid needed a way to familiarize people — perfusionists especially — with their Floex 3.0 heart-lung machine without shipping or risking the real hardware, plus a portable way to showcase the machine to investors and at conferences and workshops.

My approach

A VR simulator in Unity for Meta Quest 3 that reproduces the Floex 3.0 HLM — its four pump-head touchscreen panels, the main pole screen, and physical RPM knobs — as interactive 3D objects, so trainees can rehearse the controls hands-on and the team can demo the machine anywhere.

What I owned

Hired as the sole developer to build the product end-to-end. Built the full Unity app: a JSON-driven screen pipeline (screens declared in JSON, generated by an editor tool, so adding elements needs no re-wiring), the dual ray+poke input layer, four independent pump heads (incl. a double-pump tracking two pumps + a shared flow ratio), the physical RPM knobs, RPM-coupled rotor spin, and pitch-shifting spatial audio. I also presented the app to investors, who responded well.

The hard part

Meta XR Interaction SDK's PointableCanvasModule only routes pointer events to one of several coplanar world-space canvases, which broke the five-canvas cockpit. I reimplemented ray-to-UI clicking from scratch (CanvasClickBypass): each frame it does its own ray→plane intersection, converts the hit to screen coords, runs a GraphicRaycaster, and dispatches synthetic pointer events via ExecuteEvents — with selector edge-detection for one click per press and a per-target cooldown to suppress flicker re-fires — while leaving poke input on PCM so both pipelines coexist.

Asset pipeline

Seven-stage CAD→Quest asset pipeline: SolidWorks STEP (~100MB) → FreeCAD (import keeping part names → mesh-from-shape at ~0.5mm surface deviation → export OBJ) → Blender (import & cull internal parts → decimate while watching the silhouette → export FBX) → Unity (ARM64, IL2CPP).

Impact

Presented to investors (well received). Floaid uses it both to familiarize people with the Floex 3.0 HLM without the real machine and to showcase the machine at conferences, workshops, and investor meetings.

Context

Built at Floaid Medtech, an IIT Madras Research Park-incubated startup developing an artificial heart. Branding use approved by Floaid's CEO. Ongoing — now being handed to another intern; this is a case study of what I built.

CAD → Quest asset pipeline

SolidWorks

STEP export · ~100 MB machine assembly

FreeCAD

Import keeping part names · mesh-from-shape (~0.5 mm deviation) · export OBJ

Blender

Cull internal parts · decimate to the silhouette · export FBX

Unity

Meta Quest 3 · ARM64 · IL2CPP · URP

Honest status

Product complete and in a polish pass. The patient-physiology model is scaffolded — a typed 12-variable container plus a unit-tested 20 Hz bypass clock — but inter-variable coupling and clinical behavior are the work ahead. Truthfully: the physiology FRAMEWORK is built; it is not yet a working physiological simulation.