左右に左目用画像と右目用画像が並んだ画像を見たことがあるでしょうか?遠くを見るようにして左右の画像が重なるようにして見てみると、立体的に見えるというものです。今回は、そんな画像を作ってみます。
左右の画像をうまく重ね合わせないと、中々、立体に見えないので、見える/見え無いには個人差があります。さらに、いろいろ調べてみると、左右の立体視画像の見方には、交差法とか平行法とかいうのもあって、さらに個人差を生み出します。
Olive+の「ステレオ3D」合成フィルタは、2枚目の画像の明るい(白い)部分が手前、暗い(黒い)部分が奥になるように計算しているつもりですが、奥行きが逆に見える方もいるのかもしれません。Xi-TRACEでは、右目で見た画像を右側、左目で見た画像を左側に配置しています。もし、奥行き感が逆に見える方がいると、左右の画像を逆転する必要が出てきます。
と、いう事で、Olive+、Xi-TRACEで画像を生成してみた後で、こういう個人差を吸収するため、NINTENDOの3DSというゲーム機に画像を送り込んで、表示してみたいと思います。
まずは、Olive+を使って、作成してみます。
ランダムドット3Dという物になります。左右の赤い点が重なるように見てください。「あ」と言う文字が手前に浮き上がって見えるのが期待です。
この画像を作ってみます。用意するのは、飛び出させたい図形データだけ。今回は、以下の様に「あ」と言う文字を使いました。
まずは、この画像をOlive+で読み込みます。「ツール→ウインドウの複製」を実行、つづいて「編集→消去」を実行。真っ白な画像ができました。
さらに、「フィルタ→点描」を実行、ウインドウが表示されるのでそのままOKを押します。ここまでの手順は、ランダムなデータが欲しかっただけです。
「フィルタ→二値化」を実行。以下の様なウインドウが表示されるので、グラフの山になっている部分の中央付近に赤い線が来るように数値を調整(ざっとで良いです)。
「小さな島をぬりつぶす」のチェックを外してOKを押します。
最後に「フィルタ→スクランブル」で、「ブロックの大きさ」を「×1」にしてOKボタンを押します。ランダムドットの完成。
一番最初に読み込んだ、「あ」の表示されたウインドウを選択して、一番手前に持ってきます。次に、今完成したランダムドット画像を選択して一番手前に持ってきます。この順番が大事。「合成→ステレオ3D」を実行すると、完成です。
完成した後、「編集→簡易編集」を使って、左右の画像の中央下位置に赤い点を打ちました。ランダムドットの場合、左右の画像の同じ位置に目印があると、3Dに見えやすくなりますが、慣れてくると、目印無しでもちゃんと浮き上がって見えます。
今度は、綺麗なお花の花壇。
立体に見えますか?ちょっと違和感があるんですが、立体に見えませんか(立体と言うか、奥行きを感じる)?
作り方は簡単。Olive+で適切な画像を読み込む。「ツール→ウインドウの複製」を実行。「合成→ステレオ3D」を実行。これだけです。
違和感の正体は、本当の奥行きではなく、画像の明るさを奥行きに読み替えて画像を生成している点です。Olive+の「ステレオ3D」合成フィルタは、2枚目の画像の明るい(白い)部分が手前、暗い(黒い)部分が奥になるように計算しているので、明るいところ(白、ピンク色の花など)が手前に、暗いところ(暗い緑の葉や、赤、紫の花など)が奥になるように変換されています。実際の奥行きとは異なるので、違和感があるわけです。
まあ、簡単に作れるので、デジカメやスマホなどで撮影した画像を疑似3D化して遊ぶにはもってこいです。
左右の画像を重ねて観る時には、画像の大きさが重要なファクタです。左右を重ねるのに、個人差はありますが、距離に限界があります。作者の場合は、23インチのFull HDディスプレイで、横幅512〜640ドットくらいに抑えておかないと、うまく重ねて観ることができません。元の画像が大きい場合は、サイズを調整してください。
Xi-TRACEは、3Dグラフィックを生成するソフトウェアなので、視点を2つにスプリットして、左目で見える画像と右目で見える画像を各々レイトレーシングすると、立体画像が得られます。
まず、普通に3Dのグラフィックデータを作成しましょう。そうしたら、おまじないを追加。
stereo3d LR,2;
Xi-TRACEでは、下図の様にview命令で視野面を決定します。
通常、レイトレーシングは、(ピンホール)カメラのエミュレートになっていて、視点は1つしか存在しません。
この視野面を真上から見て、人間の目の様に、視点を2つに分割した場合の図が以下です。
さて、stereo3d命令に戻ると、第一パラメータ「LR」は、左目用の画像と右目用の画像の2枚を生成した後、それを左・右(LR=Left&Right)につなげる、と言う意味です。第二パラメータには、上図の「左右視点間距離の1/2」に当たる距離を指定します。
Xi-TRACEはこの命令を見つけると、view命令で指定した視点を自動的に左右へスプリットし、別々に2枚の画像をレイトレーシング、左右に結合します。
完成データ:husen_st3d.xitr
見たまんま、ですが、緑の球が一番手前、中央に赤い球、青い球が一番奥に配置されています。そのように奥行きが感じられたら期待通りです。
ダウンロードコーナで、Xi-TRACE R06以降のバージョンをGetして実行してください。
SDカード経由でデータをNUNTENDO 3DSに転送し、裸眼3Dディスプレイを使って、ここまでに作った3D画像を観てみましょう。
まず、3DSにSDカードをセットして、3DSの「カメラ」を起動してください。そうしたら、何でも良いので1枚、写真を撮ってください(過去に3DSで写真を撮ったことがあるなら、スキップしていただいてOKです)。これで、SDカード上にデータディレクトリが作成されたはずです。
3DSの電源を切って、SDカードを取り出します。カードリーダなどを使って、PCにマウントしてください。「E:」とか「F:」とかのドライブが見えたはずです。そのドライブを開いて、以下の様なディレクトリを開いてください。
E:\DCIM\100NIN03\
3DSでたくさん写真を撮っている方でしたら、「DCIM」の下にいくつかディレクトリがあるかもしれません。「DCIM」の下の「100NIN03」などのディレクトリには、最大で100個までしか画像ファイルが認識できないようなので、100個未満で、空きのあるディレクトリを選んでください。
Olive+やXi-TRACEで作成した3D画像をMPO形式でセーブします。画像をOlive+で読み込んでおき、「ファイル→保存」を実行すると、セーブするファイル名を問いあわせるウインドウが開きますので、ここで「ファイルの種類」から、MPOを選択してセーブします。
この時、3DSで読み込めるファイル名を指定しておくことを忘れずに。3DSは、以下の形式のファイルを認識します。
HNI_xxxx.mpo
正確には、ファイル名がこの形式になっていないと、画像ファイルとして認識してくれず、表示されません。xxxxの部分には、4桁の数字が入ります。ただし、xxxx=0000だと表示してくれませんでしたので、xxxx=0001以上にしておくのが良いでしょう。
ファイル名を指定すると、セーブパラメータを問いあわせるウインドウが開きます。ここはデフォルトでOKを押してください。JPEGには、1-1-1とか、4-2-2、4-1-1と言った、サンプリングファクタのバリエーションがあるのですが、3DSが表示可能なのは、1-1-1と4-1-1だけみたいです。Olive+は、セーブパラメータに従って、最適なサンプリングファクタを選ぶようになっているので、ここで設定を変更すると、3DSで表示できない4-2-2のサンプリングファクタでセーブされてしまう場合があります。
こっそり修正版(Olive+ R12(以降))をダウンロードコーナに置いてありますので、それを使ってください。なんと、EXIFのサムネイルが3DSの未対応フォーマットになっていたようで、表示してくれなかったため、サムネイルのフォーマットを変更してあります(サムネイルで蹴られるとは……)。
セーブしたファイルを先ほどのディレクトリ「E:\DCIM\100NIN03\(等)」にコピーしてください。
SDカードを3DSに挿入し、「カメラ」を起動します。PCから転送した画像が見えたらOKです。
以下、上で作成したデータを置いておきます。ファイル名は、重複しない様に適宜リネームしてください。
HNI_0010.mpo:MPOデータ(ランダムドット)
HMI_0011.mpo:MPOデータ(花壇)
HNI_0012.mpo:MPOデータ(レイトレーシング)
一々SDカードを抜き差ししなければならないのが難点ですが、中々面白いデバイスです。
ステレオ3Dで動画と言うのもどうか?と思ったのですが、動画も作ってみました。
Xi-TRACEデータ(1):deme9_st3d.xitr
Xi-TRACEデータ(2):demekin.xti
2つのファイルをダウンロードして、同じディレクトリに置いた後、データ(1)の方をXi-TRACEで実行してください。
3Dの動画となると、またちょっと違いますね。映画館などで見る3D映画がそうですが、まるでスクリーンから飛び出してくるかのような映像が臨場感があってすごいです。このサンプルはそれほどではないですが、カメラが移動して、出目金とすれ違う時に、「はっ」とします。人の目は、右目で見た映像と、左目で見た映像が大きく異なる時、反射的に「あぶないっ!」と思うみたいです。映画館の場合は、これにスクリーンと言う大画面が加わるのでなおさらです。
目が疲れるかもしれませんので、ほどほどに。
#PS お気づきかもしれませんが、ナレーションはsPeach(詳しくはこちら)です。Webニュースや有名人のブログなど、テキストデータの読み上げで、ながら作業のお供になります。