Sitemap
ATNO For AR / VR / MR / XR Developer

ATNO For AR / VR / MR / XR Developer

Write about - Augmented Reality ( AR ) | Virtual Reality (VR) | Mixed Reality ( MR ) |Extended Reality ( XR ) | AR VR Game ✌️🍎Visit Here: atno.io/domain/arvr

Spatial UI/UX Design Principles: Why Flat Design Rules Don’t Apply in XR 🧠

10 min readMar 13, 2026

--

Press enter or click to view image in full size
Photo by Anastasia Saldatava on Unsplash

❌ Why 2D Design Rules Break in XR

Flat UI was designed for one thing: a rectangle on a desk.

Fixed dimensions. Known viewing distance. Mouse precision. Gravity doesn’t exist. Depth doesn’t exist.

In XR, all of that changes:

Press enter or click to view image in full size

The physical body is now part of the interface. That changes everything. πŸ‘‡

🎯 The Comfort Zone β€” Most Important Concept in Spatial UI

Before any visual design decision β€” understand the comfort zone first.

The Three Zones

Distance from user  β”‚  Zone         β”‚  What it's for
────────────────────┼───────────────┼──────────────────────────────
< 0.5m (50cm) β”‚ Intimate β”‚ Avoid for UI - causes eye strain
0.5m – 1m β”‚ Near β”‚ OK for brief interactions only
1m – 3m β”‚ Conversationalβ”‚ βœ… Sweet spot for most UI panels
3m – 10m β”‚ Social β”‚ Environmental cues, large labels
> 10m β”‚ Public β”‚ Wayfinding, world markers only

The sweet spot: 1.5m β€” 2.5m from the user.

At this distance:

  • Eyes converge comfortably βœ…
  • UI panels feel natural in scale βœ…
  • Users can read without leaning or squinting βœ…
  • Depth cues read correctly βœ…

Height Positioning

Don’t put UI above or below eye level without good reason.

Bad positions:
❌ Above eye level β†’ users strain neck upward
❌ Below waist level β†’ users look down, disorienting in VR
❌ Behind the user β†’ discovery problem

Good positions:
βœ… Slightly below eye level (5–10Β°) β†’ most natural reading angle
βœ… Center field of view for primary content
βœ… Peripheral zone for secondary / ambient info

Field of View Consideration

Human comfortable FOV for reading: ~60Β° cone straight ahead.

Beyond that cone β€” things exist, but reading and fine interaction become uncomfortable. Put your critical UI within 30Β° of center. Navigation and ambient info can live up to 60Β°.

πŸ“ Depth & The Z-Axis β€” Your New Design Dimension

In flat design you have X and Y. In spatial design you have Z too β€” and it’s not decoration. It carries meaning.

Using Depth Intentionally

Far (background)     β†’  Environmental / world-anchored content
Decorative 3D elements
Atmospheric fog, sky

Mid (content zone) β†’ Primary content panels
Virtual objects users interact with
Spatial menus

Near (foreground) β†’ Heads-up information
Notification toasts
Critical alerts

Depth as Visual Hierarchy

Depth replaces z-index in spatial UI.

  • Closer = more important β€” pull critical elements slightly toward the user
  • Further = ambient / background β€” push secondary info back
  • Layer separation β€” use 10–30cm depth gaps between UI layers so they read as distinct

The Depth Comfort Rule

Never place two interactive elements at the same depth when they’re adjacent. The eye can’t resolve which to focus on β€” it causes fatigue.

❌ Bad: Two buttons side by side, both at z = 2.0m
βœ… Good: Primary button at z = 2.0m, secondary at z = 2.05m
Small offset creates clear visual separation

Drop Shadows Are Depth Cues

In flat UI, shadows are decorative. In spatial UI, shadows tell the user how far something is from the surface below it.

  • Shadow directly below = object is on the surface
  • Shadow offset and soft = object is floating above
  • No shadow = object is part of the surface

Use them accurately. Users read depth from shadows instinctively. Lying to them breaks trust in the space. 🧠

πŸ‘οΈ Gaze, Cursor & Dwell Interaction

Gaze is to XR what hover is to desktop β€” but much less precise, and it carries a weight that mouse hover doesn’t.

The Problem With Direct Gaze Targeting

Eyes move constantly. Saccades, micro-tremors, natural scanning β€” your gaze point is never truly still. Designing UI that responds directly to gaze position = jittery, exhausting interfaces.

Solutions:

  • Gaze smoothing β€” apply a rolling average over 3–5 frames before registering gaze position
  • Dead zones β€” only register gaze if it stays within a target for 100ms+
  • Large hit targets β€” minimum 5Β° Γ— 5Β° for gaze-selectable elements (larger than you think)

Dwell Interaction

Dwell = user looks at target for a defined duration β†’ action triggers.

Good dwell durations:
Destructive actions (delete, close): 1.5 – 2.0 seconds
Navigation / selection: 0.8 – 1.2 seconds
Quick actions (next, confirm): 0.5 – 0.8 seconds

Always show a visual progress indicator:
βœ… Fill arc around target
βœ… Expanding ring
βœ… Color shift over time
❌ Nothing - users don't know if it's working

Gaze + Confirm Pattern

For most interactions, gaze alone isn’t enough. Pair it with a confirm action:

Pattern 1: Gaze + Controller Button
Look at target β†’ button press confirms

Pattern 2: Gaze + Hand Pinch
Look at target β†’ pinch gesture confirms

Pattern 3: Gaze + Dwell (no controller)
Best for accessibility / no-controller scenarios
Needs generous dwell times and clear feedback

The Midas Touch Problem

Don’t trigger actions on gaze alone without confirmation.

Named after King Midas β€” everything he touched turned to gold, which sounds great until you touch your food. If looking at something triggers it, users will accidentally activate things just by scanning the UI.

Get ATNO For AR / VR / MR / XR Developer’s stories inΒ yourΒ inbox

Join Medium for free to get updates fromΒ thisΒ writer.

Always require explicit intent: dwell, pinch, voice, or button. πŸ‘‘

πŸ“ Text Legibility in 3D Space

Text in XR is hard. Genuinely hard. And most developers underestimate it until they’re squinting at blurry 12pt labels through a headset.

Font Size Rules (Angular Size)

Forget pixel sizes. In XR, angular size (how big something appears to the eye at a given distance) is what matters.

Minimum comfortable angular size for body text:
~0.5Β° – 1.0Β° of visual angle

Practical translation at 2m distance:
Minimum body text height: ~3.5cm in world units
Recommended body text height: 4–5cm
Heading text: 6–8cm
Large labels / wayfinding: 10cm+

In Unity world units (1 unit = 1 meter):
Body text: 0.035 – 0.05 world units tall
Headings: 0.06 – 0.08 world units tall

Font Choice

  • βœ… Sans-serif fonts β€” much more legible in headsets (Inter, Roboto, SF Pro)
  • βœ… Medium weight (400–600) β€” thin fonts disappear at distance
  • βœ… High contrast β€” white text on dark surfaces, or vice versa
  • ❌ Thin decorative serifs β€” look blurry on current headset displays
  • ❌ All-caps for body text β€” harder to read in XR than flat screens
  • ❌ Colored text on colored backgrounds β€” contrast gets crushed by headset optics

Text Rendering Quality in Unity

The most common beginner mistake: using Unity’s default TextMeshPro settings without tuning them.

// TextMeshPro settings for crisp XR text:

// In the TMP font asset:
Atlas Resolution: 4096 Γ— 4096 (not the default 512!)
Padding: 8
Sampling Point Size: 90

// On the TextMeshPro component:
Font Size: calculate based on distance (see formula below)
Overflow: Truncate (never let text overflow its container)
Wrapping: enabled
Raycast Target: OFF if not interactive (saves performance)

// Quick formula for font size at known distance:
// WorldHeight = 2 Γ— distance Γ— tan(angularSize_radians / 2)
// For 0.7Β° text at 2m:
// WorldHeight = 2 Γ— 2 Γ— tan(0.00611) = 0.0488m β‰ˆ 0.05 world units

Line Length & Spacing

  • Max line length: 50–60 characters per line (same rule as web, for same reason β€” eyes get lost tracking back)
  • Line height: 1.4Γ— β€” 1.6Γ— font size (more generous than flat UI)
  • Paragraph spacing: give spatial text more breathing room than flat UI β€” the 3D environment is already complex

Text Don’ts in XR

  • ❌ Text that curves aggressively (mild curves OK, sharp curves = motion sickness risk)
  • ❌ Text that moves with head movement (fixed HUD text causes fatigue)
  • ❌ Text billboarding without smoothing (snapping to face camera = jarring)
  • ❌ More than 3–4 lines of body text in a single panel

πŸ›οΈ Spatial Layout Patterns That Actually Work

Forget nav bars. Forget hamburger menus. Forget sidebars. Here are the spatial equivalents.

Pattern 1: The Floating Panel

The XR equivalent of a modal or card.

Characteristics:
β€’ Positioned at 1.5–2m in front of user
β€’ Slightly curved to wrap user's FOV (~cylinder radius: 3m)
β€’ Soft drop shadow or subtle depth glow
β€’ Dismissible - always give user an exit
β€’ Never fills more than 40% of FOV

Good for:
Settings menus, informational displays,
object property panels, confirmation dialogs

Pattern 2: The Radial / Pie Menu

Replaces linear dropdown menus. Works great with gaze + controller.

Why it works:
β€’ Each item equidistant from center gaze point
β€’ User can select with small eye movement
β€’ Avoids long vertical scroll lists
β€’ Works with 4–8 items comfortably (more = clutter)

Implementation tip:
Space items at minimum 15Β° apart
Highlight on gaze, confirm on trigger

Pattern 3: World-Anchored UI

UI attached to objects in the world, not to the user’s head.

Best practices:
β€’ Label appears when user looks at object (gaze-triggered)
β€’ Label faces toward user (billboard behavior, smoothed)
β€’ Appears 10–20cm above the object it describes
β€’ Fades in - never pops instantly

Use cases:
Object labels in AR, object inspector panels,
interactive hotspot tooltips, spatial annotations

Pattern 4: The Wrist Menu

A menu attached to the user’s wrist (or controller). Discovered by rotating the hand inward.

Why developers love it:
β€’ Always accessible without looking far from hands
β€’ Natural "glance down at watch" discovery gesture
β€’ Doesn't occlude the world when not needed

Key rules:
β€’ Maximum 6 quick-action items
β€’ Large hit targets (finger imprecision is real)
β€’ Confirm on press, not on hover
β€’ Include haptic feedback on item hover

Pattern 5: The Diegetic UI

UI that exists as part of the world β€” a virtual screen, a holographic display on a table, a dashboard on a virtual vehicle.

Why it's powerful:
β€’ Increases immersion massively
β€’ Reduces cognitive load (UI feels like part of the world)
β€’ Easier to spatially anchor (user knows where to look)

When to avoid:
β€’ When the UI needs to be always-accessible (user can move away from it)
β€’ When information is critical (diegetic UI can be missed)

πŸ–οΈ Input Modality Design

Your UI must be designed for a specific input method. Designing for β€œall inputs at once” = designing for none of them well.

Controller-Based Input

Design rules:
βœ… Minimum button / hit target: 5cm Γ— 5cm in world space
βœ… Pointer ray origin from controller, not from user head
βœ… Visual ray line to confirm where user is pointing
βœ… Haptic feedback on hover AND on press (they're different sensations)
βœ… Trigger = primary action, grip = grab/hold, thumbstick = navigation
❌ Never require two-handed input for primary actions
❌ Never put critical UI behind the user's body

Hand Tracking Input

Hand tracking is less precise than controllers. Design accordingly:

βœ… Even larger targets - 7–8cm minimum
βœ… Pinch gesture for selection (most reliable hand gesture)
βœ… Visual feedback when pinch is detected (glow, sound, haptic if available)
βœ… Near-field interaction: user can "poke" buttons physically
βœ… Far-field interaction: ray from index finger for distance selection
❌ Avoid wrist twists, complex multi-finger combos as primary interactions
❌ Never require high precision (dragging small sliders = frustrating)

Best interactions for hand tracking:
Button press, pinch-to-select, grab-and-move,
two-hand resize, point-and-confirm

Gaze-Only Input (Accessibility / No Controllers)

  βœ… Dwell as primary selection mechanism
βœ… Very large targets (10cm+)
βœ… Long dwell times for destructive actions
βœ… Clear, animated progress indicators
βœ… "Back" always accessible without precise gaze
❌ Never require selection of small adjacent targets
❌ Avoid menus with more than 5 items

🎨 Color, Contrast & Visual Style in XR

Contrast Ratios

WCAG 2.1 AA requires 4.5:1 for body text on flat screens. In XR, aim for 7:1 minimum β€” headset optics and lens diffraction reduce apparent contrast.

Translucency & Glass Effects

Frosted glass / translucent panels look stunning in XR demos

When translucency works:
βœ… Panel content is short and high-contrast
βœ… Background behind panel is relatively calm
βœ… Panel has clear depth separation from background

When translucency fails:
❌ Complex, busy backgrounds bleed through β†’ unreadable text
❌ Animated backgrounds β†’ motion behind text β†’ eye strain
❌ On Quest 2 (limited passthrough quality) β†’ looks muddy

Safe default: semi-opaque dark background (80–90% opacity)
then add translucency as enhancement on capable hardware.

Colors That Work in XR

βœ… Work well:
High-saturation accent colors on neutral backgrounds
White/near-white on dark (navy, charcoal, black)
Warm neutral backgrounds (easier on eyes than pure white)

❌ Problematic:
Pure white large surfaces β†’ glare in headsets
Red on black β†’ chromatic aberration at display edges
Very low contrast (light gray on white) β†’ disappears
Rainbow gradients β†’ color fringing through lenses

πŸ“± Platform-Specific Quick Reference

Meta Quest (VR/MR)

  • Comfort zone: 1–3m
  • Recommended text size: 0.04–0.06 world units at 2m
  • Primary input: Touch controllers or Hand Tracking
  • Panel curve radius: ~3m
  • πŸ”— Meta Quest Design Guidelines

Apple Vision Pro (visionOS)

  • Emphasizes window-based UI (familiar app windows in space)
  • Primary input: Eye tracking + hand pinch (no controller)
  • Minimum tap target: 60pt
  • Glass morphism encouraged (but follow Apple’s material system)
  • πŸ”— visionOS Human Interface Guidelines

Mobile AR (ARKit / ARCore)

  • UI exists on a 2D screen overlay OR in 3D world space
  • Comfort zone matters less (user holds device)
  • Primary challenge: not occluding the AR content with UI chrome
  • Keep UI to edges β€” center is for the AR experience
  • πŸ”— Google AR Design Guidelines

HoloLens 2 / Enterprise MR

  • Narrower FOV than Quest β€” design conservatively within 52Β° horizontal
  • Users often in workplace β€” UI must work with gloves in some cases
  • Prefer dwell + air-tap over complex gestures
  • πŸ”— MRTK Design Documentation

🏁 The Big Takeaway

  • Spatial UI isn’t harder than flat UI. It’s just different.

The principles that make 2D UI good clarity, hierarchy, feedback, consistency, still apply completely. But the execution changes because:

  • The body is part of the interface now
  • Distance and depth carry meaning they never had on a flat screen
  • Comfort is a first-class design constraint, not an afterthought
  • Precision is lower across almost every input modality

--

--

Written by ATNO For AR / VR / MR / XR Developer

Write about - Augmented Reality ( AR ) | Virtual Reality (VR) | Mixed Reality ( MR ) |Extended Reality ( XR ) | AR VR Game ✌️🍎Visit Here: atno.io/domain/arvr