Microtube Docs
Developers / Tutorials / Meta Quest walkthrough

Meta Quest tutorial project

Sideload the finished demo, walk its three scenes with the floating panel, and see how every object in them fires haptics.

Try it on a headset first

Put the finished demo on your Quest and feel what you are about to build. No Unity, no compiling.

Download the Quest APK (84 MB) ↓
You need a glove for the haptics

The scenes run and hand-tracking works without one, so you can look around and see how everything is put together — but nothing will actuate until a HEXR glove is connected.

Quest headsets do not install APKs from a file manager; push the build from a computer with SideQuest ↗ or adb:

shell
adb install -r HexR-Developer-Tutorial-MetaOVR.apk

Both need Developer Mode on the headset (Meta Quest phone app → your headset → settings). The app then appears under Unknown Sources, not with your store apps.

Give the headset its Bluetooth permissions

Do this before you launch the app. The glove talks over Bluetooth Low Energy, and Android will not let an app find a BLE device without these. Skip it and the app looks broken: it runs, but the glove never appears.

In the headset: Settings → Privacy and Security → App Permissions.

PermissionSet to
LocationPrecise — not just “allowed”
Nearby devicesOn
The single most common support question

“The app runs but the glove never connects.” It is almost always these two permissions. Check them before suspecting the hardware or your code.

The floating panel

Every scene has the HexR panel floating to your left. Press its buttons with your index fingertip; grab the header to move it. It stays with you when you change scene.

SectionButtonsWhat they do
GLOVESConnect Left Glove · Connect Right GloveConnects that glove. The button label shows the status: searching, connected, then ready with the battery level
VIEWShow CollidersDraws the six touch points on each tracked hand — five fingertips and the palm — so you can see where touch is detected
SCENES1.Basic Tutorial · 2.Hospital Tutorial · 3.Water EffectsLoads that scene. The current one is highlighted

To connect: power on the arm module, press Connect Left Glove, wait for “ready”, then the right. Each hand is an independent connection with its own battery.

The scenes

Each scene isolates one idea. Every haptic in them is a component on an object — select the object in Unity and read its Inspector to see how it was done.

SceneWhat it teaches
1. Basic TutorialFour props, four ways to trigger feedback: hover and grab, pinch, palm grab with a flame zone, and a poke button
2. Hospital TutorialFeeling a patient’s pulse: heartbeat zones on a mannequin
3. Water EffectsZones you reach into: a fountain and rain

1. Basic Tutorial

Four props on a desk, each with an info card behind it. Grabbing is Meta’s Interaction SDK; HEXR only adds the feel.

ObjectWhat to doHow the haptics fireWhat you feel
FoamReach for it and pick it upHexRInteractableHaptics next to Meta’s Grabbable, set to Select and Hover. No events wiredPressure on thumb, index, middle and palm from the moment the hand hovers it, held while grabbed
KeyPinch it between thumb and indexMeta’s Pointable Unity Event Wrapper: When Select calls TriggerPinchPressure(0.3), When Unselect calls RemoveAllHaptics()A light pinch on thumb and index the instant it is picked up
TorchPalm-grab it, then put a finger into the flameGrab: the event wrapper calls TriggerAllHapticsIncrease(0.5). Flame: a SpecialHaptics zone (Custom Vibrations, 30.6 Hz) on a trigger box around the fireAll six channels squeeze when grabbed; any finger in the flame vibrates
Big red buttonPoke itMeta’s Interactable Unity Event Wrapper on the poke interactable: When Select calls TriggerAllVibrations(10), When Unselect calls RemoveAllVibrations()All six channels vibrate at 10 Hz while the button is held in
The foam’s card is out of date

Its info card says “Collision Haptics — ensure collider is set to trigger”. That describes an older setup. The foam now uses HexRInteractableHaptics on Meta’s hover and grab, with a solid collider, as the table says.

Two ways to fire

The foam uses a component that reads Meta’s interaction state on its own. The key, torch and button use events wired in the Inspector to a Pressure Controller method. The torch uses both, plus a zone for the flame. All three routes are covered in Customising the haptics.

2. Hospital Tutorial

A mannequin on a hospital bed. The card reads: “You may place your index and middle finger on the patient wrist and neck to feel his pulse.”

ObjectWhat to doHow the haptics fireWhat you feel
Wrist and neck pulse zones (two each)Rest two fingertips on the wrist or the neckA trigger box on each spot with SpecialHaptics set to Heart Beat, regular rhythm, pressure 0.4, 0.4 s on and 0.3 s offA steady pulse in whichever fingertips are inside the zone, about 86 beats a minute. It stops when you lift them

There is nothing to grab here: the zones fire on contact alone, so this is the pattern for any surface that should feel alive.

3. Water Effects

A fountain and a storm cloud. Both are zones you reach into.

ObjectWhat to doHow the haptics fireWhat you feel
Fountain“Place your palm in the water fountain”A trigger capsule over the water with SpecialHaptics set to FountainEvery fingertip and the palm inside the water vibrate, a fine spray at 18 Hz
Rain“Place your palm under the raindrops”A large trigger capsule under the cloud with SpecialHaptics set to Rain DropRandom fingers tap at random, like drops landing. Only the palm touch point triggers it, so hold your hand flat

The HexR menu in Unity

Open the project and the HexR menu appears in Unity’s menu bar. It is how the tutorial scenes were set up, and how you set up your own.

ItemUse it to
Create HexR Rig → Meta OVRAdd the rig and the Pressure Controllers to a new scene and wire them up
Add Pressure ControllerAdd the pair of Pressure Controllers to a scene that has none
Add HexR MenuPut the floating panel in a scene of your own
Troubleshoot → Re-run Auto SetupRe-wire the hands and touch points after you change the scene
Troubleshoot → Validate Scene SetupCheck every hand, Pressure Controller and touch point; it lists what is unwired
HexR ToolsA window with a Haptics Tester (fire any channel in Play mode), the validator as a checklist, and Project Setup
MigrationOne-off upgrades for older projects

A good first exercise: open 1.Basic Tutorial, run Validate Scene Setup, and read what it checks. Then select the torch and follow its components in the Inspector.

Get the project

Clone it and open it in Unity 6 (6000.0 or newer). The Meta XR SDK pinned here (com.meta.xr.sdk.all 205) sets that floor, not HEXR itself.

shell
git clone https://github.com/MicrotubeTechnologies/HexR-Developer-Tutorial-Meta-OVR.git

The first open takes a while and can look hung: Unity is fetching com.microtube.hexr from GitHub. The package is a git dependency pinned to a release tag in Packages/manifest.json, so git must be on your PATH, or every HEXR script opens missing.

You also need the free Meta XR All-in-One SDK on your Unity account, installed from Package Manager → My Assets. For OpenXR, use the PICO tutorial instead.

WhereWhat it holds
Assets/Scenes/The three tutorial scenes
Packages/manifest.jsonNames the HEXR package and its tag. The package itself lands in Library/PackageCache/, which is regenerated
Assets/Tutorial/Art/Models, materials and effects for the scenes. Nothing HEXR-specific

Customising the haptics

Three routes, all used in the demo. They mix freely.

1. A component — HexRInteractableHaptics

Give the object Meta’s Grabbable and HandGrabInteractable as usual, then add HexRInteractableHaptics beside them. Nothing to wire: it reads the interaction state Meta already has. This is the foam.

SettingWhat it does
BackendLeave on Auto; it follows the rig, which is what lets the same object work on PICO
Fire onSelect (grabbed or pressed), Hover (near enough to highlight), or both
FingersThumb, index, middle, ring, pinky and palm, independently
StrengthHow firm the feedback is
Follow gripScales the pressure by how far the fingers have closed

2. An event — Meta’s event wrappers

Meta’s Pointable Unity Event Wrapper (grabs) and Interactable Unity Event Wrapper (poke) raise UnityEvents at the instant a grab, pinch or poke is recognised. Drag a Pressure Controller onto the event and pick a method. This is the key, torch and button.

Wire this eventTo this method on PressureTrackerMain
When SelectTriggerAllHapticsIncrease(float) — pressure 0.1–1 on every channel; TriggerPinchPressure(float) — thumb and index; TriggerAllVibrations(float) — vibration, the number is the frequency in Hz
When UnselectRemoveAllHaptics() or RemoveAllVibrations()

3. A zone — SpecialHaptics

A trigger collider plus SpecialHaptics: press Auto Find Hand Physics, choose an effect. This is the flame, the pulse, the fountain and the rain. Size the collider to the sensation, not the mesh.

Zone or event?

A zone answers “is a finger inside this region?” — right for surfaces and materials. An event answers “has this object been grabbed?” — right for discrete actions. The torch uses both.

Nothing happening?

Pressure Controller calls only fire while HEXR thinks the hand is near the object. On Meta that signal comes from the grab and poke interactors, so grabbing and poking handle it. For a zone on something that is not an interactable, add a ProximityCheck. HexR → Troubleshoot → Validate Scene Setup flags the rest. The full picture is in the hand-near check.

Build settings

The project is already configured for Quest. A fresh clone needs only:

  1. Switch to Android

    File → Build Settings → Android → Switch Platform. The first switch reimports every asset.

  2. Check the headset is connected

    With Developer Mode on and the headset plugged in, it appears under Run Device. Accept the “Allow USB debugging” prompt inside the headset.

  3. Build And Run

    Builds, installs and launches. Build alone gives you an APK to distribute.

SettingValue
Minimum API levelAndroid 10 (API 29)
Target architectureARM64 only
XR plug-in providerOculus
Texture compressionASTC
Building for the store?

The tutorial ships as com.Microtube.HexRTest, product name “HexR Test”. Change both in Player Settings before you distribute anything.

Where to go next

If you want to…Read
Add HEXR to a project of your ownUnity integration
See how the package fits together, and every methodSDK architecture & API
Understand what triggers feedback and whenTriggering feedback
Build the same demo for PICOPICO walkthrough

Stuck? Talk to us, or open an issue on the tutorial repository ↗.