[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,187 +2,175 @@
|
||||
id: wiki-2026-0508-vr-sickness
|
||||
title: VR Sickness
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
aliases: [Cybersickness, VR Motion Sickness, Simulator Sickness]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [auto-consolidated, technical-documentation]
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [vr, ux, perception, comfort]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
language: csharp
|
||||
framework: unity-xr
|
||||
---
|
||||
|
||||
# [[VR Sickness|VR Sickness]]
|
||||
# VR Sickness
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> VR 멀미(VR Sickness, 또는 모션 병, 사이버 멀미)는 헤드마운트 디스플레이(HMD)를 비롯한 가상현실 기기를 사용할 때 발생하는 메스꺼움, 방향 감각 상실, 시각적 장애 등의 부작용을 의미합니다 [1], [2]. 이는 주로 시각적 경험과 신체적 전정 감각 간의 충돌로 인해 발생하며 [3], 사용자의 실재감(Presence)을 저해하고 작업 수행 능력과 즐거움을 크게 감소시키는 주요 요인입니다 [2].
|
||||
## 매 한 줄
|
||||
> **"매 vestibular system 매 시각-전정 mismatch 매 만들면 매 nausea 의 발생"**. 매 1990s simulator sickness 연구의 매 VR 확장 — 매 2026 매 Quest 3, Vision Pro, Pico 4 Ultra 매 90Hz+ / foveated rendering 으로 매 줄어들고 있지만 매 design choice (locomotion, FOV) 가 매 dominant factor.
|
||||
|
||||
---
|
||||
## 매 핵심
|
||||
|
||||
> VR 멀미(VR Sickness 또는 Cybersickness)는 헤드마운트 디스플레이(HMD)를 사용하는 가상현실(VR) 경험 중 다수의 사용자가 겪는 부정적인 상태로, 메스꺼움, 방향 감각 상실, 시각적 장애 등의 증상을 동반합니다 [1, 2]. 이러한 멀미 증상은 가상현실에서의 몰입감(presence), 동기 부여, 즐거움 및 과제 수행 능력을 저하시키며, 결과적으로 평균 15.6%의 높은 중도 포기율(dropout rate)을 초래하는 주요 원인이 됩니다 [2].
|
||||
### 매 원인 (Sensory Conflict Theory)
|
||||
- **Visual-vestibular mismatch**: 눈은 movement 보지만 inner ear 는 stationary 신호 — 매 brain 의 "독 상태" 추정.
|
||||
- **Latency**: motion-to-photon > 20ms 매 sickness 급증.
|
||||
- **Low frame rate**: < 90Hz, 특히 dropped frame, 매 trigger.
|
||||
- **FOV manipulation**: peripheral vision movement 매 강한 vection.
|
||||
- **IPD mismatch**: 매 잘못된 inter-pupillary distance 매 eye strain → nausea.
|
||||
- **Acceleration in virtual locomotion**: 매 constant velocity OK, 매 acceleration 의 매 worst.
|
||||
|
||||
---
|
||||
### 매 완화 기법
|
||||
- **Teleport locomotion**: 매 smooth move 보다 매 sickness ~80% 감소.
|
||||
- **Tunneling / vignette**: peripheral 의 dark mask, vection 줄임.
|
||||
- **Snap turn**: smooth turn 대신 30~45° 매 step rotation.
|
||||
- **Static reference frame**: cockpit, helmet rim 등 매 fixed visual anchor.
|
||||
- **High refresh + reprojection**: 90Hz 이상 + ATW/ASW.
|
||||
- **Foveated rendering**: 매 GPU budget 매 free up → frame stability.
|
||||
|
||||
> VR 멀미(VR sickness)는 헤드 마운트 디스플레이(HMD) 사용 시 발생하는 부정적인 부작용으로, 주로 메스꺼움, 방향 감각 상실, 안구 피로 및 시각적 장애와 같은 증상으로 나타납니다 [1, 2]. 가상 세계의 시각적 경험과 실제 신체의 감각이 일치하지 않을 때 발생하는 시각-전정 감각의 충돌(visual-vestibular conflict)이 주요 원인으로 지목됩니다 [3]. 이러한 멀미 증상은 사용자의 몰입감(presence)을 떨어뜨리고, 게임이나 작업의 동기 부여와 즐거움을 감소시키며, 종국에는 수행 능력을 저하시키는 원인이 됩니다 [2].
|
||||
### 매 응용
|
||||
1. Beat Saber: stationary play, 매 sickness rare.
|
||||
2. Half-Life Alyx: teleport + smooth 양쪽 옵션, comfort slider.
|
||||
3. Microsoft Flight Sim VR: cockpit anchor, 매 long-session OK.
|
||||
4. No Man's Sky VR: smooth locomotion default — 매 highest sickness reports.
|
||||
|
||||
---
|
||||
## 💻 패턴
|
||||
|
||||
> 가상현실 멀미(VR Sickness)는 헤드마운트 디스플레이(HMD)와 같은 가상현실 기기를 사용할 때 다수의 사용자가 경험하는 메스꺼움, 방향 감각 상실, 시각적 장애 등의 부작용을 의미합니다 [1, 2]. 이 현상의 정확한 발병 원인에 대해서는 학계의 완전한 합의가 이루어지지 않았으나, 가상 환경과 실제 신체 경험 간의 시각-전정 감각 충돌(visual-vestibular conflict)이 주요 원인으로 지목되고 있습니다 [3]. 가상현실 멀미는 사용자의 몰입감과 즐거움을 저하시키고 과제 수행 능력에 부정적인 영향을 미칩니다 [2].
|
||||
### Comfort vignette (Unity URP)
|
||||
```csharp
|
||||
// 매 movement speed 매 따라 매 peripheral mask 매 강도 조절
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **발생 원인:** VR 멀미의 가장 유력한 원인으로는 가상 세계와 현실 세계의 불일치에서 오는 **시각-전정 충돌(visual-vestibular conflict)**이 꼽힙니다 [3]. 시각적으로 인지되는 환경과 실제 신체적 감각이 일치하지 않을 때 감각 통합에 교란이 일어나며 발생합니다 [3]. 또한, HMD의 특성상 화면의 초점과 안구의 움직임이 어긋나는 **폭주-조절 불일치([[Vergence-Accommodation Conflicts|Vergence-Accommodation Conflicts]])** 역시 안구 운동 증상 및 피로를 유발하는 핵심 원인입니다 [3].
|
||||
- **주요 증상 및 파급 효과:** 사용자는 메스꺼움, 방향 감각 상실, 시각적 장애 외에도 피로, 발한, 두통, 눈의 통증 및 복시 등을 겪을 수 있습니다 [2], [4], [5]. 이러한 증상들은 사용자가 가상 세계에 몰입하는 **실재감을 깨뜨리고**, 동기 부여와 즐거움을 떨어뜨리며 작업 수행 능력을 저하시킵니다 [2]. VR 멀미로 인한 실험 중단율(dropout rate)은 평균 약 15.6%에 달하며 [2], [6], 어떤 사용자는 VR을 종료한 후 최대 24시간 이후에 나타나는 지연된 증상(latent symptoms)을 경험하기도 합니다 [7].
|
||||
- **영향 요인:** **콘텐츠의 특성**(카메라 이동, 사용자 움직임, 시각적 복잡성 등)과 **기기의 특성**이 멀미 발생과 심각도에 중요한 역할을 합니다 [8], [9]. 특히 노출 시간은 증상 발생의 핵심 요소로, 장시간 노출될수록 심각한 증상을 보고할 확률이 높아집니다 [10]. 이와 함께 연령, HMD의 착용감, 자세 안정성, 개인의 멀미 감수성 등 **개인차(Individual differences)**도 중요한 영향을 미칩니다 [11].
|
||||
- **완화 전략:** 멀미 증상을 피하기 위해 자주 휴식을 취하거나, 짧고 반복적인 노출을 통해 VR 환경에 적응(습관화)하는 전략이 도움이 될 수 있습니다 [11]. 장시간 노출 전에 짧게 체험해 보는 것이 권장되며, 증상이 나타나면 즉시 사용을 중단하고 회복될 때까지 기다려야 합니다 [11], [12].
|
||||
public class ComfortVignette : MonoBehaviour {
|
||||
[SerializeField] Vignette vignette;
|
||||
[SerializeField] CharacterController player;
|
||||
[SerializeField] float maxIntensity = 0.6f;
|
||||
|
||||
---
|
||||
|
||||
- **발생 원인 및 이론:** VR 멀미의 정확한 병인에 대해서는 아직 학계의 완전한 합의가 이루어지지 않았으나, 가장 유력한 이론은 가상 세계와 현실 세계 간의 '감각 불일치(mismatch)' 현상입니다 [3, 4]. 특히 사용자의 시각적 경험과 신체적/전정 기관의 경험이 일치하지 않을 때 발생하는 시각-전정 갈등(visual-vestibular conflict)이 주요 원인으로 꼽힙니다 [3]. 또한, HMD 사용 시 발생하는 폭주-조절 갈등([[Vergence-Accommodation Conflicts|Vergence-Accommodation Conflicts]])으로 인해 시각적 피로와 같은 안구 운동 관련 증상이 유발될 수 있습니다 [3].
|
||||
- **주요 증상:** VR 멀미의 증상은 크게 메스꺼움(nausea), 안구 운동 이상(oculomotor symptoms: 눈의 피로, 초점 맞추기 어려움 등), 방향 감각 상실(disorientation: 현기증, 어지러움) 등 3가지 범주로 나뉩니다 [5]. 신체 활동이 수반되는 VR 엑서게임(Exergame)을 플레이할 경우, 피로, 땀, 방향 감각 상실 등 고강도 유산소 운동에서 나타나는 증상과 VR 멀미 증상이 겹쳐 이 둘을 구별하기 어려울 수 있습니다 [6].
|
||||
- **영향을 미치는 요인:**
|
||||
- **콘텐츠 및 기기:** 화면의 높은 시각적 움직임(visual motion), 장면의 복잡성, 이동 방식(locomotion) 및 몰입감 등은 멀미를 악화시키는 주요 요소이며, 기기와 콘텐츠 특성이 멀미의 발현 및 진행에 핵심적인 역할을 합니다 [7, 8].
|
||||
- **개인차:** 사용자의 연령, HMD 착용 상태(fit), 자세 안정성, 그리고 사용자가 평소 가지고 있는 멀미에 대한 감수성(susceptibility) 등 개인의 특성도 멀미 발생 가능성에 상당한 영향을 미칩니다 [9].
|
||||
- **노출 시간 및 회복:** VR 노출 시간이 길어질수록 사용자는 더 심각한 멀미 증상을 보고하는 경향이 있습니다 [7, 10]. 사용 후 나타나는 후유증의 지속 시간은 짧게는 10분에서 길게는 4시간 이상까지 다양하며, 증상을 경험하는 사용자는 즉각 VR 사용을 중단하고 완전히 회복될 때까지 휴식을 취해야 합니다 [11]. 또한, 짧은 노출 시간만으로도 심한 멀미를 겪는 사용자는 긴 시간 노출될 경우 유사하거나 더 심각한 증상을 경험할 가능성이 매우 높습니다 [9, 12].
|
||||
|
||||
---
|
||||
|
||||
* **발생 원인 및 메커니즘:**
|
||||
VR 멀미의 명확한 발병 원인에 대한 완전한 합의는 없지만, 가상과 현실 간의 감각 불일치 이론이 가장 유력합니다 [3]. 뇌로 전달되는 시각적 감각과 신체적(전정) 감각이 충돌하면 감각 통합에 교란이 생겨 메스꺼움이나 방향 감각 상실을 유발합니다 [3]. 또한, HMD 환경에서 제공되는 깊이 단서의 충돌로 인해 발생하는 '폭주-조절 불일치([[Vergence-Accommodation Conflicts|Vergence-Accommodation Conflicts]])' 역시 안구 운동 관련 증상(oculomotor symptoms)을 증가시킵니다 [3, 4].
|
||||
|
||||
* **증상 및 측정:**
|
||||
멀미 증상은 크게 세 가지 범주, 즉 메스꺼움(위장 자극, 트림, 타액 분비 증가), 안구 운동 이상(눈의 피로, 초점 문제), 방향 감각 상실(현기증, 어지러움)로 나뉩니다 [5]. 이러한 증상들은 주로 시뮬레이터 멀미 설문지(SSQ)를 통해 측정되며, 증상이 심할 경우 약 15.6%의 평균 사용자 이탈률을 초래합니다 [2, 5]. 멀미 증상은 VR 종료 직후뿐만 아니라 최대 24시간 이후에 심각한 잠복 증상(latent symptoms)으로 나타날 수도 있습니다 [6].
|
||||
|
||||
* **주요 영향 요인:**
|
||||
* **노출 시간:** VR 노출 지속 시간은 후유증의 발생과 심각도에 결정적인 역할을 합니다 [7]. 연구에 따르면 10분의 짧은 노출보다 50분의 긴 노출 직후에 메스꺼움 등의 증상이 유의미하게 더 많이 보고되었습니다 [8].
|
||||
* **콘텐츠 및 기기 특성:** 시각적 움직임의 강도, 장면의 복잡성, 이동 방식(locomotion) 등이 VR 멀미 발생에 직접적인 영향을 미칩니다 [9]. 모니터 기반 게임보다 HMD 착용 환경에서 더 높은 수준의 멀미가 유발되는 경향이 있습니다 [10].
|
||||
* **개인차:** 연령, HMD의 착용 상태, 사용자의 자세 안정성, 멀미에 대한 개인적 민감성 등이 복합적으로 작용합니다 [11]. 특히, 짧은 시간의 노출에도 심한 증상을 겪는 사람은 긴 노출 시 훨씬 더 심각한 증상을 겪을 가능성이 높습니다 [11].
|
||||
|
||||
* **완화 및 회복 전략:**
|
||||
VR 사용 후 후유증이 기저 수준으로 회복되는 데 걸리는 시간은 증상의 초기 심각도에 따라 다릅니다 [12]. 일반적인 경우, VR 노출 후 약 40분의 대기 시간을 가지면 증상이 정상 수준으로 돌아옵니다 [8, 13]. 멀미를 완화하기 위해서는 가상 세계의 시각적 움직임과 사용자의 실제 신체 움직임을 일치시키고, 장시간 사용 전 짧은 세션으로 테스트하거나 자주 휴식을 취하여 적응(habituation)을 유도하는 전략이 권장됩니다 [10, 11, 13].
|
||||
|
||||
---
|
||||
|
||||
* **발병 원인 및 메커니즘:** 가상현실 멀미의 가장 유력한 발생 이론은 시각적 경험과 물리적 신체 경험이 일치하지 않을 때 발생하는 시각-전정 감각의 충돌입니다 [3]. 이와 같은 감각 통합의 교란은 사용자에게 메스꺼움이나 방향 감각 상실을 초래할 수 있습니다 [3]. 또한 HMD 기기 사용 시 흔히 나타나는 양안 수렴-조절 불일치([[Vergence-Accommodation Conflicts|Vergence-Accommodation Conflicts]]) 역시 눈의 피로를 유발하며 안구 운동과 관련된 멀미 증상의 주된 원인으로 작용합니다 [3].
|
||||
* **주요 증상 및 파급 효과:** 멀미의 증상은 크게 메스꺼움 계열, 안구 운동 장애 계열, 방향 감각 상실 계열로 분류됩니다 [4]. 이러한 증상들은 사용자가 가상현실 내에서 느끼는 존재감(presence)을 깨뜨리고 동기를 저하시켜 결과적으로 평균 15.6%에 이르는 높은 사용자 이탈률(dropout rate)을 유발하는 것으로 나타납니다 [2].
|
||||
* **멀미 발생 및 악화 요인:**
|
||||
* **콘텐츠 및 기기 특성:** 카메라의 움직임, 사용자의 물리적 모션, 그리고 방향 감각을 상실하게 만드는 콘텐츠 요소가 멀미를 유발할 수 있습니다 [5]. 특히 엑서게임(exergames)과 같이 신체 활동과 고도의 시각적 자극이 요구되는 콘텐츠는 멀미 발생과 밀접한 연관이 있습니다 [6, 7].
|
||||
* **가상현실 노출 시간:** 가상현실 환경에 머무는 시간은 멀미 증상의 발달과 심각도에 결정적인 역할을 합니다 [8].
|
||||
* **개인차:** 사용자의 연령, HMD 착용 상태의 적합성, 자세 안정성, 그리고 개인의 멀미 민감도 등은 증상 발현에 영향을 미칩니다 [9]. 특히 짧은 노출 시간에도 심각한 멀미 증상을 겪은 사용자는 더 긴 노출 환경에서 유사하거나 더 악화된 증상을 경험할 가능성이 높습니다 [9].
|
||||
* **사후 효과(Aftereffects) 및 회복:** 기기 사용을 종료하더라도 증상은 즉시 사라지지 않고 서서히 감소하며, 초기 증상이 심각했던 사용자일수록 회복에 더 오랜 시간이 소요됩니다 [10]. 또한 사용 후 최대 24시간이 지난 뒤에 잠복성 증상(두통, 피로 등)이 발생할 수도 있기 때문에, 증상이 나타나면 완전히 회복될 때까지 기기 사용을 중단하고 대기하는 것이 권장됩니다 [10-12].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
---
|
||||
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
---
|
||||
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
---
|
||||
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** Visual-Vestibular Conflict, Vergence-Accommodation Conflict, Presence, Head-Mounted Displays (HMD)
|
||||
- **Projects/Contexts:** VR [[Exergaming|Exergaming]] (예: [[Beat Saber|Beat Saber]]를 활용한 VR 노출 시간 및 후유증 연구 [13], [14])
|
||||
- **Contradictions/Notes:** 일반적으로 VR 노출 시간이 길어질수록 증상이 심해진다고 알려져 있으나, 한 연구 검토에서는 10~20분 노출된 경우보다 20분 이상 노출된 연구에서 평균적으로 덜 심각한 증상이 보고되기도 했습니다. 이는 노출 시간 자체의 문제라기보다는 각 연구에 사용된 VR 콘텐츠의 유형(예: 360도 비디오, 게임, 정적 풍경 등) 분포 차이로 인한 결과일 수 있습니다 [10].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
- **Related Topics:** [[시각-전정 갈등 (Visual-Vestibular Conflict)|시각-전정 갈등 (Visual-Vestibular Conflict]], 폭주-조절 갈등 (Vergence-Accommodation Conflict), 몰입감 (Presence), [[헤드 마운트 디스플레이(HMD)|헤드마운트 디스플레이 (HMD]]
|
||||
- **Projects/Contexts:** [[VR 엑서게임 (VR Exergaming)|VR 엑서게임 (VR Exergaming]]
|
||||
- **Contradictions/Notes:** VR 멀미의 정확한 발병 원인(etiology)에 대해서는 학계 내에서 여전히 일치된 합의가 없습니다 [3, 4]. 덧붙여, VR 엑서게임 환경에서는 멀미 증상이 격렬한 신체 운동으로 인해 유발되는 자연스러운 신체 반응과 중복되기 때문에 정확한 멀미를 식별해 내는 것이 까다로울 수 있습니다 [6].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
- **Related Topics:** [[시각-전정 감각 충돌(Visual-Vestibular Conflict)|시각-전정 감각 충돌(Visual-Vestibular Conflict]], 폭주-조절 불일치(Vergence-Accommodation Conflict), [[시뮬레이터 멀미 설문지(SSQ)|시뮬레이터 멀미 설문지(SSQ]], 몰입감(Presence)
|
||||
- **Projects/Contexts:** 비트 세이버([[Beat Saber|Beat Saber]]) 엑서게이밍 연구 (10분 및 50분의 VR 노출이 사용자의 시각, 인지 및 자기 보고된 멀미 후유증에 미치는 영향을 조사한 연구 [14, 15]).
|
||||
- **Contradictions/Notes:** 고강도 신체 활동을 동반하는 VR 엑서게임(Exergame)을 수행할 경우, 피로, 방향 감각 상실, 땀 흘림, 메스꺼움 등 격렬한 유산소 운동으로 인한 생리적 증상과 VR 멀미 증상이 겹치게 됩니다. 이로 인해 운동 중 순수한 VR 멀미 증상만을 명확히 구분해 내는 데에는 어려움이 따릅니다 [16].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
- **Related Topics:** 시각-전정 감각 충돌 (Visual-Vestibular Conflict), 양안 수렴-조절 불일치 (Vergence-Accommodation Conflict)
|
||||
- **Projects/Contexts:** 엑서게임 ([[Exergaming|Exergaming]]), [[헤드 마운트 디스플레이(HMD)|헤드마운트 디스플레이 (HMD]]
|
||||
- **Contradictions/Notes:** 가상현실 멀미의 발병 원인(etiology)에 대해 아직 학계의 완전한 합의(consensus)는 존재하지 않습니다 [3]. 또한, 노출 시간과 멀미 심각도의 관계가 항상 선형적이지는 않다는 점도 관찰됩니다. 10분 미만 노출보다 10~20분 노출에서 증상이 더 심하게 나타나지만, 20분 이상 노출된 연구에서는 오히려 10~20분 노출보다 증상이 덜 심각하게 보고되는 상반된 양상이 발견되기도 합니다(이는 360도 비디오, 게임, 정적 풍경 등 연구에 사용된 콘텐츠 유형의 분포 차이에 기인한 것으로 추정됩니다) [8].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
void Update() {
|
||||
float speed = player.velocity.magnitude;
|
||||
float t = Mathf.Clamp01(speed / 4f); // 4 m/s 매 full vignette
|
||||
vignette.intensity.value = t * maxIntensity;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
### Snap turn input
|
||||
```csharp
|
||||
public class SnapTurn : MonoBehaviour {
|
||||
[SerializeField] Transform xrRig;
|
||||
[SerializeField] float snapDegrees = 30f;
|
||||
[SerializeField] float deadzone = 0.7f;
|
||||
bool armed = true;
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
void Update() {
|
||||
float x = OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick).x;
|
||||
if (Mathf.Abs(x) < deadzone) { armed = true; return; }
|
||||
if (!armed) return;
|
||||
xrRig.Rotate(0, Mathf.Sign(x) * snapDegrees, 0);
|
||||
armed = false;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
### Teleport locomotion (XR Interaction Toolkit)
|
||||
```csharp
|
||||
// 매 XRI 의 매 TeleportationProvider + arc raycaster 사용
|
||||
using UnityEngine;
|
||||
using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation;
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
public class TeleportTrigger : MonoBehaviour {
|
||||
[SerializeField] TeleportationProvider provider;
|
||||
public void RequestTeleport(Vector3 destination) {
|
||||
var req = new TeleportRequest {
|
||||
destinationPosition = destination,
|
||||
matchOrientation = MatchOrientation.WorldSpaceUp,
|
||||
};
|
||||
provider.QueueTeleportRequest(req);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
### Frame timing budget check
|
||||
```csharp
|
||||
// 매 frame budget 위반 매 detect — Quest 3 매 11.1ms@90Hz, 8.3ms@120Hz
|
||||
void LateUpdate() {
|
||||
float budget = 1f / Application.targetFrameRate;
|
||||
if (Time.unscaledDeltaTime > budget * 1.2f) {
|
||||
Debug.LogWarning($"Frame overran: {Time.unscaledDeltaTime*1000f:F1}ms");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
### IPD calibration
|
||||
```csharp
|
||||
// OpenXR 매 user IPD 매 read — 매 잘못 설정 매 nausea 의 hidden cause
|
||||
using UnityEngine.XR;
|
||||
|
||||
float GetIpdMeters() {
|
||||
var head = InputDevices.GetDeviceAtXRNode(XRNode.Head);
|
||||
head.TryGetFeatureValue(CommonUsages.eyesData, out var eyes);
|
||||
var l = eyes.leftEye.position;
|
||||
var r = eyes.rightEye.position;
|
||||
return Vector3.Distance(l, r);
|
||||
}
|
||||
```
|
||||
|
||||
### Dynamic foveated rendering toggle (Quest 3)
|
||||
```csharp
|
||||
// Quest 3 매 eye-tracked foveation — frame stability 의 강력한 도구
|
||||
OVRManager.eyeTrackedFoveatedRenderingEnabled = true;
|
||||
OVRManager.foveatedRenderingLevel = OVRManager.FoveatedRenderingLevel.HighTop;
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Casual / first-time user | Teleport + snap turn default |
|
||||
| Action / FPS | Smooth + vignette + snap turn option |
|
||||
| Sim (flight, racing) | Cockpit anchor, smooth, 90Hz+ guaranteed |
|
||||
| Standing-only experience | 거의 sickness-free — Beat Saber model |
|
||||
| Seated narrative | Static camera + cuts, no virtual locomotion |
|
||||
|
||||
**기본값**: Comfort menu 의 매 모든 option 매 expose — user 가 choose.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[VR UX Principles]] · [[Vestibular System]]
|
||||
- 변형: [[Cybersickness]] · [[Simulator Sickness]]
|
||||
- 응용: [[XR Locomotion Patterns]] · [[Comfort Settings UI]]
|
||||
- Adjacent: [[Foveated Rendering]] · [[Asynchronous Timewarp]] · [[Motion-to-Photon Latency]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: VR comfort design review, locomotion option 추천, frame budget 분석.
|
||||
**언제 X**: AR / pass-through 만 (vestibular conflict 적음), non-immersive VR / 360 video.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Forced smooth locomotion**: comfort option 의 X — 매 user churn.
|
||||
- **Cinematic camera shake**: VR 매 절대 X — 매 immediate nausea.
|
||||
- **Acceleration / deceleration smooth curve**: linear 보다 매 더 sick.
|
||||
- **Stuttering / dropped frames**: 60Hz 의 매 X — 매 90Hz minimum.
|
||||
- **High-altitude vertigo without snap**: 매 some users 매 panic + sickness.
|
||||
- **No comfort settings menu**: 2026 매 standard expectation.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Oculus Best Practices 2025, Apple Vision Pro HIG, IEEE VR 2025 cybersickness papers).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — sensory conflict theory, mitigation patterns, Unity XR code |
|
||||
|
||||
Reference in New Issue
Block a user