9148c358d0
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 폴더 제거.
6.1 KiB
6.1 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-vr-sickness | VR Sickness | 10_Wiki/Topics | verified | self |
|
none | A | 0.9 | applied |
|
2026-05-10 | pending |
|
VR Sickness
매 한 줄
"매 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.
매 핵심
매 원인 (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.
매 응용
- Beat Saber: stationary play, 매 sickness rare.
- Half-Life Alyx: teleport + smooth 양쪽 옵션, comfort slider.
- Microsoft Flight Sim VR: cockpit anchor, 매 long-session OK.
- No Man's Sky VR: smooth locomotion default — 매 highest sickness reports.
💻 패턴
Comfort vignette (Unity URP)
// 매 movement speed 매 따라 매 peripheral mask 매 강도 조절
using UnityEngine;
using UnityEngine.Rendering.Universal;
public class ComfortVignette : MonoBehaviour {
[SerializeField] Vignette vignette;
[SerializeField] CharacterController player;
[SerializeField] float maxIntensity = 0.6f;
void Update() {
float speed = player.velocity.magnitude;
float t = Mathf.Clamp01(speed / 4f); // 4 m/s 매 full vignette
vignette.intensity.value = t * maxIntensity;
}
}
Snap turn input
public class SnapTurn : MonoBehaviour {
[SerializeField] Transform xrRig;
[SerializeField] float snapDegrees = 30f;
[SerializeField] float deadzone = 0.7f;
bool armed = true;
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;
}
}
Teleport locomotion (XR Interaction Toolkit)
// 매 XRI 의 매 TeleportationProvider + arc raycaster 사용
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation;
public class TeleportTrigger : MonoBehaviour {
[SerializeField] TeleportationProvider provider;
public void RequestTeleport(Vector3 destination) {
var req = new TeleportRequest {
destinationPosition = destination,
matchOrientation = MatchOrientation.WorldSpaceUp,
};
provider.QueueTeleportRequest(req);
}
}
Frame timing budget check
// 매 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");
}
}
IPD calibration
// 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)
// 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
🤖 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 |