7.1. 定数
現在のシステムでは下記の値を使っています。
標準的なユーザーの両目の間隔 62 mm
上画面とユーザーの標準的な距離 316.5 mm (SNAKE 301 mm、CLOSER 332 mm の平均値)
スクリーンの幅 95.4 mm (SNAKE 84.6 mm、CLOSER 106.2 mm の平均値)
スクリーン中心とカメラ中心との距離 37.62 mm (SNAKE 34.38 mm、CLOSER 40.86 mm の平均値)
7.2. 仮想空間と現実空間の変換
図 7-1 に現実空間と仮想空間の座標軸を定義しました。どちらの座標軸もスクリーンの中心に原点があります。
カメラ位置のウィンドウへの正射影はウィンドウの中央だと想定します。
現実空間の座標から仮想空間の座標への距離を変換するためのスケールを示します。
Wwindow は仮想空間でのウィンドウの幅です。
Wviewport は現実空間でのビューポートの幅です。
7.3. ユーザー位置
現実空間でのユーザーの目の位置を Xlefteye 、Xrighteye と定義します。これらの位置はタンジェント、つまり角度でのみ知ることができます。
ユーザーは立体視効果を最も楽しめる最適視認距離にいると想定することで、ユーザーの目の位置を推定しています。
これらの位置をユーザー位置 Xuser と両目間ベクトル(左目から右目のベクトル) ⊿eyes に分離します。
両目間ベクトル方向の単位ベクトルを δeyes と呼びます。
ユーザーの位置は標準的な位置からの変位 X′user として表現することもあります。
7.4. カメラ間の距離の計算
カメラ間の距離 I は左目画像用のカメラと右目画像用のカメラとの間の距離です。
現実に即した構成を選んだ場合、この距離は現実に即したカメラ間距離 Irealistic と等しくなります。カメラ間の距離 Ieye. から計算可能です。
7.4.1. ワイド FOV の計算
カメラ間の距離が理想的な距離ではない場合(ワイド FOV 構成の場合)、カメラ間の距離は縮小されなければなりません。
dwindow はウィンドウとカメラの距離で、開発者が設定した dwindow base と仮想空間での標準的な距離 dideal との線形補間で計算されます。
ƒ realistic は現実に即した FOV 係数です。
7.4.2. 限界視差の計算
ユーザーが快適にプレイできるように、開発者は限界視差 Plimit を指定することができます。カメラ間距離の最大値 Imax はこの制限から導出できます。
dfar はファークリップ面の深度で、開発者が指定した dfar base から導出できます。
7.4.3. カメラ間の距離係数
最終的なカメラ間の距離 I がレンダリングに使われます。
現実に即したカメラ間距離からどれだけ縮小されたかを示す、カメラ間の距離係数 ƒI は、I から算出可能です。
7.5. カメラ中心位置の計算
仮想空間での左目カメラと右目カメラの位置を Xleftcam と Xrightcam とします。2つのカメラの中間点となる位置を Xcam と定義します。
仮想空間での z 軸上の標準距離にリファレンスカメラ位置 Xcamref を置きます。
Xcam はリファレンスカメラ位置からユーザー位置の変位を計算することで得られます。
ƒ amplitude はダイナミックパースペクティブ振幅係数です。
kfov motion はワイド FOV の運動係数 kwide から算出される振幅係数です。
clamp(X'user) は検知可能な最大ユーザー変位をクランプした、ユーザー変位です。
7.6. 最終的な目のカメラ位置の計算
最終的な目のカメラ位置は中央のカメラ位置からの変位を計算することで求めます。傾きを考慮することも可能ですし、傾きパラメータに依存しなくても構いません。
7.6.1. 傾きが有効な場合
7.6.2. 傾きが無効な場合