2007-12-29[n年前へ]
■未来の立体ディスプレイが目の前にいる
Head Tracking for Desktop VR Displays using the WiiRemoteを見た。 Wiiリモコンの先端には赤外線カメラがついていて、赤外光を発する点の座標などを検出して、BluetoothでPCに送信することができる。その機能を使い、赤外レーザーダイオードをメガネにとりつけたユーザの顔位置をWiiリモコンで検出し、その位置に合わせた画像を描画するというシステムだ。結構面白い。
前に『「未来の立体ディスプレイ」を作る』で遊んでみたディスプレイも類似のテクニックを使った立体表示法だ。Head Tracking for Desktop VR Displays using the WiiRemoteがディスプレイが固定されていて、そのディスプレイに対して動くユーザ視点を検地するのに対して、Thinkpadの加速度センサを使った立体ディスプレイの方は、固定されているユーザ視点に対して(位置を変える)ディスプレイが動く、という違いである。Wiiリモコンでなく普通のビデオカメラで同様なことをした例であれば、「ViewFrame2-マーカレス顔部検出手法を利用した“ViewFrame”-」などがある。
誰もが携帯電話や、人によっては、PDAを持ち歩いている。そして、それらの機器には加速度センサや小型カメラといった各種センサが搭載されている。つまり、上にリンクしたような「立体表示」が可能な機器を私たちは持ち歩いている、ということだ。だから、未来の立体ディスプレイがもうすぐ手に入るような気がする。
そして、「視差がないのに立体を表示するディスプレイ」の課題を解消するための鍵は、実は「遠山式立体表示法」の効果原理にあるかもしれない、と素人考えをすることがある。遠山式立体表示法の大きな効果は(そういう発表記事を見たことはないのだが)目のピントが合う領域をごく限られた部分だけにすることができるところに実はあったりするのではないか、と思うことがある。だとしたら、傾けたディスプレイ・デバイスで立体表示すると非常に効果的ではないだろうか、と妄想したりするのである。2010-06-04[n年前へ]
■赤青メガネをかけて、iPhoneを立体ディスプレイにしよう
iPhoneやiPad(もちろん、いつも使っているタブレットPCも)を物体が画面から飛び出す立体ディスプレイにしたくなり、赤青メガネをかけて立体を表示できるプログラムを作ってみることにしました。共通のソースで動くようにしたいということで、OpenGL ES をいじってみることにしました。
まずは、地球を回転表示するOpenGL ESのサンプル・プログラムを、glFrustumを使うことで左右の目から液晶表面を介して見える画像を自然な見え方にした上で、両眼分の画像を作成し、さらに、アナグリフ(赤青メガネ)用画像として色変換をした上で、iPhone画面にアニメーション描写するようにしてみたののが、下の動作画面になります。
コードを書き、そして、ビルドしたアプリケーション走らせ、赤青メガネをかけて画面から飛び出す「立体的な地球」を眺めていると、何度もビルド&実行をさせたい欲望にかられます。
OpenGL ESでのプログラミングに慣れたなら、以前作った、「(加速度センサ対応)体感・実感バストシミュレータ」のC++ソースを流用し、モバイル用(加速度センサ対応)体感・実感"3D"バストシミュレータでも作ってみることにしましょうか。
2010-06-10[n年前へ]
■3D AVS Player用アナグリフ・ビュアーを作ろう
「3D AVS Player+YouTubeでお手軽三次元可視化をしてみよう」の続きとして、今日は、3D AVS Player"で視差画像を左右表示させているWindowを、アナグリフ(赤青メガネ)表示で時々刻々と眺めることができるようなソフトを作ってみることにしました。そのソフトウェアの動作画面が下になります。動作の仕組みはとても単純で、「選んだウィンドーの左半分と右半分を視差画像であるとして、アナグリフ用画像として合成したものをWindowに(20msに一回の割合で繰り返し)表示する」というだけのものです。
ところで、良く見ると、上の動作画面ではAVS Playerでなく、ペイントのWindowに対して処理を行っていることがわかります。これは、OpenGLをハードウェア・レンダリングされると、Window描画内容を取得する方法が(私にはわからないのに)AVS Playerはステレオ表示しようとするとOpenGLレンダリングが必須となっていて、私のノートPCではOpenGLのレンダリングをソフトウェアで行うように切り替えることが(スイッチひとつで簡単に、という具合には)できなかったからです。
この問題に対しては…明日にでも対応してみることにしましょうか。これから作るソフトウェアは、ひとまずここに置いておいていくことにします。スタートボタンを押した後、(3秒以内に)任意のウィンドウをアクティブにしてやれば、そのウィンドウの描画内容に対してアナグリフ化を行います。
2010-06-11[n年前へ]
■続 3D AVS Player用アナグリフ・ビュアーを作ろう
「3D AVS Player用アナグリフ・ビュアーを作ろう」の続きです。3D AVS Player"でステレオ表示をした際の画面を常時アナグリフ画像として合成表示するソフトウェアを作りました。
3D AVS Player"では、ステレオ表示をOpenGLレンダリング・モードでないと行うことができません。そこで、ウィンドウ描画内容を3D AVS PlayerのWindowのデバイスコンテキストからではなく、デスクトップウィンドウのデバイスコンテキストから引っ張ってくることで、描画内容コピー&加工を行うようにしました。私の二世代くらい前のB5ノートPCでも50Hzで処理を行うことができていますから、処理速度についても問題なさそうです。動作画面は下のようになります。
作ったソフトウェアは、ここに置いておいておきます。スタートボタンを押した後、(3秒以内に)3D AVS Playerのウィンドウをアクティブにしてやれば、そのウィンドウの描画内容に対してアナグリフ化を行います。
赤青メガネはひとつ持っておくと便利だと思います。できれば、複数個用意して、自分のノートPCを使って他の人にも立体画像を楽しんでもらうのも良いかもしれません。
2010-06-13[n年前へ]
■続々 3D AVS Player用アナグリフ・ビュアーを作ろう
「続 3D AVS Player用アナグリフ・ビュアーを作ろう」で作ったソフトウェアを動かしているようすを VMware workstationでムービーキャプチャしてみました。それが下に貼り付けた動画になります。画面上半分を占めているWindowが3D AVS Playerのもので、画面左下に位置しているのが、3D AVS Player用アナグリフ・ビュアーのWindowになります。残念なことに、VMwareのムービーキャプチャ動画では、カクカクした動きになってしまっていたり、オリジナルのWindowのキャプチャがあまりできていなかったりしますが、およそどんな動作をするかがわかるかと思います。
これまでにも何度もやってきて、そして、いつもポシャり続けている「立体テレビ・立体ディスプレイの波」がまた訪れています。今回の波の行方がどうなるかはわかりませんが、とりあえず、古くからある技術を使いこなして色々と遊ぶことができたら良いな、と思います。