Skip to content

Looking Glass(ルッキンググラス)はどのようにして立体映像を表示しているのでしょうか?

この文書は、Looking Glassがどのようにしてホログラフィックな視覚的錯覚を作り出しているかを解説します。

それほど複雑な仕組みではありません。

Looking Glassの仕組みを理解することはより良い立体視体験ができるコンテンツ製作に役に経つでしょう。

実際にサンプルアプリを動かしながら読んでみましょう

この文章だけを読むだけで済ますのも良いでしょう。しかしあなたがLooking Glassを持っているならば、この文章の解説で使われているサンプルアプリを動かしてみながら読むと、より理解が深まります。

サンプルアプリはこちらでダウンロードできます。

Windows用/mac

このサンプルはHoloPlay Unity SDKを使って作成されていますので、この文章で解説している仕組みは(基本的に)すべてのLooking Glassコンテンツに共通に使われていると考えていただいても問題はありません。

サンプルアプリの操作方法:

  • キーボード矢印キー左右: 3つのシーンを切り替えます。
  • 最初シーン

スペースバーで数字列表示を切り替えます。

  • 2番目のシーン

キーボード矢印キー上下: 文字の奥行き位置を調整します。

  • 3番目のシーン

キーボードスペースキー: 被写界深度的なぼかしの有り/無しを切り替えます。

多数の異なる方向から見える映像をまとめて、立体視表示する仕組み

Looking Glassはホログラフィックな立体映像を作り出すために、正面から見て水平方向約50度の角度内を45ヶビューに分け、それぞれの位置(視点)に対応した映像を表示して鑑賞できるようになっています。

この多視点表示トリックにより、現実世界にもある以下2つの立体視効果をLooking Glassで再現することができます。

  • 鑑賞者の横移動によって変化する映像によって得られる立体視効果 - 運動視差立体視(運動立体視)
  • 左右の目それぞれに水平方向に位置がずれた映像が見えることによる立体視効果 - 両眼視差立体視(両眼立体視)

動画で図解します

下記の3つの動画は、Looking Glassで見える45ヶビュー分の映像の配置とその見え方の関連を示しています。

  • 中央の動画はLooking Glassを鑑賞している状態を上から見ています。中央上にある四角形がLooking Glass本体です。
  • Looking Glassには棒と輪と2つの球体による3Dモデルが表示されています。(Looking Glassの下で動いている黒い直線は、右方向に移動しながらLooking Glassを鑑賞している場合の視線方向を示しています。)
  • 右側の動画は、中央動画の黒い線の視線方向から見たときに表示される映像を示しています。中央動画の黒い線の移動角度と対応して見えかたが変化しています。

  • 左側の動画は、右側の動画で見られる45ヶビューからの映像を一枚にまとめて表示しています- 我々はこの状態の画像をquilt(キルト)と名付けています。quilt上に見える赤い枠の移動している位置は、中央動画の黒い線の移動角度と対応しています。

Multiplex diagram

The Quilt(キルト)

元々Quilt(キルト)はこういう物です。

上記のキルト図を近くでご覧ください。

(上の動画解説で出てきました、Quiltの拡大図です。横5枚、縦9枚で5x9=45枚の画像が並んでいます。)

Quilt

キルトの左下は一番左端の角度から見えるシーンで、右上は一番右端の角度から見えるシーンです。Looking Glassアプリ開発者が自前で自己流なQuilt画像を作成することも歓迎しますが、Looking Glass FactoryはQuilt画像をさまざまな3Dプログラミング環境(Unity、three.jsなど)でも使えるようなLooking Glassソフトウェアを皆様に協力してほしいです。Quilt画像を作成する時の技術的情報については、HoloPlay C/C++ APIマニュアル内のQuiltの仕様書の quilt specを参考にしてください。

Quiltを表示してみる

上記のQuilt画像を実際にLooking Glassに表示すると、このようになります:

On Looking Glass

表示される数字の増加によって、鑑賞者が水平移動すると見える画像が変わっていることがわかります。これを元にして立体視的錯覚が作られます。

注意:

Looking Glassで実際にこのサンプルを試すときは、片目を閉じて見るようにしてください。このQuilt解説用サンプル映像に限ったことですが、このサンプルを両目で見るのは眼精疲労の原因となります。何故かというと、このサンプルを両目で見るとそれぞれの目で見える黄色の文字がまったく異なってしまう為に視覚的な混乱が髪際するからです。片目で見ればこの混乱は発生しません。

視差0面(輻輳面)

Looking Glassに表示される立体視空間内では、奥行き位置によって映像が鮮明にに見える位置とぼやけて見える位置があります。 映像が最も鮮明に見える奥行き位置が視差0面(輻輳面)になります。 下左側の動画では、LookingGlass内中央の赤い線が視差0面を示しています。

Close up on animation

奥行き位置が視差0面上に設定されている映像は、鑑賞者が水平方向に移動しながら見ても位置が変化しません。上の動画例では、中央の球体はこの視差0平面上にあります。45ヶビューから見た映像すべてでこの球体は常に画像内の同じ位置に表示されています。

しかしながら、視差0面より奥行き位置が手前に設定されている、もしくは視差0面より奥行き位置が向こう側に設定されている映像には視差が発生します。サンプルの場合、鑑賞者がが右に動くと、視差0面より手前の位置に設定されている球は左に移動し、奥の位置に設定されているの赤い輪は右に移動して見えます。

視差によるぼやけ問題について

視差は映像の品質にどのような影響を与えるかを見てみましょう。

Looking Glassに表示される映像は、それぞれの目には45ヶビューのうち1ヶビューの映像だけではなく、複数視点分の映像が見えるようになっています。 下の撮影画像では、37〜41の5視点分の映像が見えています。

Close up on Looking Glass

こうして複数視点分の映像が一度に見えていることの利点は、鑑賞者が移動したときに見える映像の変化のしかたが、かっちりかっちりと瞬間で切り替わるのではなく、滑らかに繋がって変化して見えるようになるという点にあります。

しかし良くない点もあります、それはぼやけが発生してしまうことです。撮影画像でも部分によってモデルの鮮明さが違っているのがわかります。

  • 中心の球体は奥行き位置が視差0面に設定されているので鮮明に見えています。視差がゼロなので表示のずれが無いからです。
  • 手前側の球体と奥側の赤いリングはぼやけて見えています。これは見えている5視点分の画像間で視差によるずれが生じている為です。

故にこの撮影画像ではカメラには37-41を混合して見えているのでぼやけが発生しています。

視差によるぼやけをサンプルで確認してみましょう

"This text is moving"の文字が視差0面の前後を移動するサンプルを試すことによって、視差量によるぼやけの出かたを確認することができます。サンプル実行中にキーボード矢印キーの上下を押すと、手動で文字の奥行き位置を調節できます。

Moving Text

サンプル実行中にキーボード矢印キーの上下を押すと、手動で文字の奥行き位置を調節できます。

視差によるぼやけを改善するには

Looking Glassに表示するシーンの構成を工夫する

視差量によって発生するぼやけの発生を防ぐベストな方法は、シーン中ではっきり見せたい重要な部分の奥行き位置をを視差0面に設定することです。文字は鮮明に読めるようになりますし、3Dモデルも視差0面の位置に近づくとかっちり鮮明に見えるようになります。

被写界深度に合わせたボケを加える

視差量が極端に大きくなってしまっている映像では、表示されている各視点画像のずれが大きくなる為に、ずれた画像が重なっているようにしか見えなくなてってしまい、立体感にも影響が出てきます。この現象は被写界深度に合わせたボケ(一般的なCG用エフェクトで言うとこころのDepth of Field Blurring)をシーンに適用すると軽減させることができます。

Depth of Field Blurringは弊社が公開しているSDKの一部で利用可能です。

DOF explanation