Files
2nd/10_Wiki/Topic_Programming/Programming & Language/시각-전정 충돌(Visual-vestibular conflict).md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

4.3 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-시각-전정-충돌-visual-vestibular-confl 시각-전정 충돌(Visual-vestibular conflict) 10_Wiki/Topics verified self
VVC
visual-vestibular mismatch
sensory conflict
none A 0.95 applied
vr
perception
sickness
vestibular
2026-05-10 pending
language framework
any vr

시각-전정 충돌(Visual-vestibular conflict)

매 한 줄

"매 visual motion 과 vestibular system 의 input mismatch 가 sickness 를 유발한다". Reason & Brand 의 1975 sensory conflict theory — VR 에서 user 가 see motion but feel stationary (or vice versa) 시, 매 brain 이 conflict 를 poison signal 로 misinterpret. 매 modern VR 의 #1 design constraint.

매 핵심

매 메커니즘

  • 시각 cue: optic flow 가 forward motion 을 indicate.
  • 전정 cue: 머리 actual movement 가 zero (sitting still).
  • Mismatch detection: vestibular nuclei 가 conflict 를 detect.
  • Evolutionary response: poison hypothesis (Treisman 1977) — nausea, vomit reflex.

매 영향 요소

  • FOV: wider FOV → 매 stronger optic flow → 매 worse VVC.
  • Acceleration: linear acceleration > constant velocity.
  • Yaw rotation: smooth turning 이 worst (snap turn 으로 mitigate).
  • Latency: motion-to-photon > 20ms 시 sickness 가속.

매 응용 (mitigation)

  1. Teleportation locomotion (no continuous motion).
  2. Vignette / tunneling on movement.
  3. Snap turn (e.g., 30° increments).
  4. High refresh rate (90Hz+, 2026 standard 120Hz).
  5. Cockpit / static reference frame.

💻 패턴

Vignette on locomotion (Three.js)

import * as THREE from "three";

const vignette = new THREE.ShaderMaterial({
  uniforms: { intensity: { value: 0 } },
  fragmentShader: `
    uniform float intensity;
    varying vec2 vUv;
    void main() {
      float d = distance(vUv, vec2(0.5));
      gl_FragColor = vec4(0., 0., 0., smoothstep(0.3, 0.7, d) * intensity);
    }`
});

function onLocomotion(speed: number) {
  vignette.uniforms.intensity.value = THREE.MathUtils.clamp(speed / 5, 0, 0.7);
}

Snap turn implementation

const SNAP_DEGREES = 30;
let lastSnap = 0;
function onThumbstickX(x: number) {
  const now = performance.now();
  if (Math.abs(x) > 0.7 && now - lastSnap > 250) {
    camera.rotation.y -= Math.sign(x) * THREE.MathUtils.degToRad(SNAP_DEGREES);
    lastSnap = now;
  }
}

Teleport locomotion

function teleport(target: THREE.Vector3) {
  fadeToBlack(100);
  setTimeout(() => {
    rig.position.copy(target);
    fadeFromBlack(100);
  }, 100);
}

Frame-rate enforcement

// 90Hz minimum on Quest 3, 120Hz on Vision Pro
const targetFPS = navigator.userAgent.includes("Vision") ? 120 : 90;
renderer.setAnimationLoop((t, frame) => {
  // skip work if budget exceeded
});

매 결정 기준

상황 Approach
Seated experience continuous + vignette OK
Standing / room scale teleport + snap turn 권장
Racing / cockpit sim static cockpit ref → 매 reduces VVC
Audience first-time always teleport default
Pro user option for smooth

기본값: teleport + snap turn 30° + vignette on continuous motion.

🔗 Graph

  • 부모: VR Sickness
  • 변형: Vergence-Accommodation Conflicts
  • Adjacent: 가상현실 멀미 (VR Sickness) · 안구 운동 기능 (Oculomotor Functions)
  • 응용: 가상현실(VR) 자전거 시뮬레이터

🤖 LLM 활용

언제: locomotion 설계 review · sickness 원인 분석 · UX option 추천. 언제 X: actual user testing 의 substitute (subjective experience 측정 필수).

안티패턴

  • Smooth locomotion default: 매 first-time user 의 30%+ 가 sick.
  • No comfort options: accessibility 실패.
  • Frame drop tolerance: 60Hz fallback → severe sickness.
  • Forced rotation: cinematic 의도 → 즉시 sick.

🧪 검증 / 중복

  • Verified (Reason & Brand 1975 · Stanney VR Handbook · Meta VR Comfort guidelines).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — VVC mechanism + mitigation 코드