2026/03/21
VR酔いの原因
VR 酔い(サイバーシックネス、Cyber Sickness)の原因は視覚と感覚(内耳)の不一致にある
映像では動いているのに体が動いていないなど、脳が受け取る情報に矛盾が生じることで不快感・吐き気が発生する
視覚 → 「動いている・回転している」
感覚 → 「静止している」
↓
脳が情報の矛盾を検出
↓
自律神経が反応(吐き気・冷や汗・頭痛)
酔いを引き起こす主な要因
| 要因 | 具体例 |
|---|---|
| フレームレート不足 | 60fps以下での描画 |
| レイテンシ(遅延) | 頭の動きに対してカメラ追従が遅れる |
| 人工的な移動 | プレイヤーが移動していないのに視点が動く |
| 視野角(FOV)の不一致 | ゲーム内FOVと実際のHMDの視野角がずれている |
| 画面の揺れ・振動 | 揺れエフェクト |
| 加速度の変化 | 急発進・急停止・急旋回 |
フレームレート/レイテンシ
Motion-to-Photon レイテンシとは
頭を動かしてから画面に反映されるまでの遅延時間
20ms を超えると違和感・酔いが発生しやすくなる
頭の動き検出 → センサー読み取り → ゲームエンジン処理 → GPU描画 → 画面表示
←──────────── Motion-to-Photon レイテンシ ─────────────→
(目標:20ms 以下)
Reprojection / ASW の活用
フレームレートが目標に届かない場合の補完技術として、Meta Quest の ASW(Asynchronous SpaceWarp) や SteamVR の Reprojection を活用
直前のフレームを補間して見かけ上のフレームレートを維持する仕組み
移動設計
移動設計はVR酔いに最も直結する要素
プレイヤーの身体が動いていないのに視点が移動する「人工的移動」をいかに酔いなく実現するかが大事になる
テレポート移動
スムーズロコモーション(スライド)
スナップターン
UI・カメラ設計
カメラを直接操作しない
VR では HMD がカメラの Transform を毎フレーム上書きする
スクリプトからカメラを直接動かすと HMD の追従と競合し激しい酔いを引き起こす
Camera.main.transform.position += Vector3.up * 0.1f; // NG
Camera.main.transform.rotation = Quaternion.identity; // NG
// OK:XROrigin(カメラの親)を動かす
var xrOrigin = FindObjectOfType<XROrigin>();
xrOrigin.transform.position = newPosition; // 親を動かす
カメラボブ・揺れの禁止
VRではカメラの上下揺れは強烈な酔いを引き起こす
歩行感の演出はコントローラーの振動(ハプティクス)で代替する
// NG:歩行時のカメラボブ
void Update()
{
float bobOffset = Mathf.Sin(Time.time * bobFrequency) * bobAmplitude;
cameraTransform.localPosition += new Vector3(0, bobOffset, 0); // NG
}
World Space UI の設計
VRのUIは World Space で実装する
// UI の配置ガイドライン
// ・適切な距離:1.5m〜3m(近すぎると目が疲れる)
// ・視野角内に収める:正面から±30度以内
// ・頭の動きに追従させない(固定 World Space に置く)
// ・追従させる場合はラグ付きで緩やかに追従させる
FOV の固定
VR では FOV(Field of View、視野角)を HMD のデフォルト値から変更しない
FOV を下げると「見えている範囲が狭い」違和感が強くなり酔いを悪化させる
コンフォート設定
コンフォートビネット
移動・回転時に画面周辺を暗くすることで、周辺視野からの移動感を軽減し酔いを抑える
コンフォートオプション
ユーザーによって酔いへの耐性は大きく異なる
設定で切り替えられるようにしておく
□ 移動方式の選択(テレポート/スムーズ)
□ 回転方式の選択(スナップ/コンティニュアス)
□ スナップターンの角度(30°/45°/60°)
□ コンフォートビネットのON/OFF・強度
□ 移動速度の調整
参考
- Unity XR Interaction Toolkit:https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.5/manual/index.html
- OVR Metrics Tool:https://developer.oculus.com/documentation/unity/ts-ovrmetricstool/