運動視差

視差の話です。近年視差(パララックス)といえば多重スクロールするWebサイトを指しますが、ここでは3D空間におけるカメラの運動視差について。

サイドバイサイド映像に非ず。両者同じ位置から、左は視差なし、右は視差ありでカメラをパンした様子。立体感の違いがわかる


HMDの流行で主観視点のVR/ゲームアプリが増えています。FPSはじめ主観視点の3Dゲーム等は古くからありますが、HMDによって自分の視点と画面とが本当に一致するようになると、これまであまり気にならなかったことが気になってきます。そのひとつが運動視差。視点または対象が動いたとき、近いものほど速く、遠いものほど動きが遅く見える現象で、遠近感・立体感を得る手がかりのひとつです。

それならすべてのVR/ゲームに備わっている、歩けば視野はそのように変化すると思われるかもしれませんが、問題は頭だけをぐるりと回したときです。頭を回すと、その方向へカメラも回転します。あたりまえのようですが、これだけではじつは十分ではありません。

頭を回すと、ヒトの眼は「回転」と同時に「移動」もします。なぜなら眼は頭の回転軸上、つまり首の真上にはないからです。

Turn-Head

頭は首を中心に回る。眼は首よりも前方・上方にある(さらに両眼は左右に離れている)

首を回すとそこを中心として眼は弧を描くように移動し、その結果運動視差が生じます。逆にいえば、首を回すだけで運動視差を得られるようヒトや動物はできているのかもしれません。

ポジショントラッキング付きのHMDであればこの問題は自動的に解決されるかもしれませんが(装置自体が眼といっしょに「移動」するから)、スマホHMDなどでジャイロ=角度しか使っていない場合は意識してこの移動を作り出す必要があります。そこで試してみたのが冒頭の映像。単にカメラ位置を回転軸からずらしているだけですが、これだけでも立体感が向上することがわかります。とくにハコスコのような両眼視差を得られない単眼HMDにおいては、運動視差が立体感の手がかりとして役に立つでしょう(眼が横についていて両眼視差を得られない動物は、代わりに首を積極的に動かして運動視差を得ているとか?)。

ちなみにこうした回転による運動視差は本物のカメラでも生じます。レンズの瞳は三脚の回転軸より前方・上方にあるためです。パノラマ撮影においてはスティッチに具合が悪いのでこの視差を嫌い、回転軸を瞳部分へずらすための専用雲台を用います。よって実写パノラマでは必然的に運動視差が生じないわけですが、最近はあえて視差を設けて立体視を可能にするコロンブスの卵的な手法も編み出されているようですね。

Panorama rig

以前も登場した自前のパノラマ雲台。CG処理と相性が良いため、映画撮影などでも同様のリグを用いて視差をなくすことがある