2010-06-04[n年前へ]
■赤青メガネをかけて、iPhoneを立体ディスプレイにしよう
iPhoneやiPad(もちろん、いつも使っているタブレットPCも)を物体が画面から飛び出す立体ディスプレイにしたくなり、赤青メガネをかけて立体を表示できるプログラムを作ってみることにしました。共通のソースで動くようにしたいということで、OpenGL ES をいじってみることにしました。
まずは、地球を回転表示するOpenGL ESのサンプル・プログラムを、glFrustumを使うことで左右の目から液晶表面を介して見える画像を自然な見え方にした上で、両眼分の画像を作成し、さらに、アナグリフ(赤青メガネ)用画像として色変換をした上で、iPhone画面にアニメーション描写するようにしてみたののが、下の動作画面になります。
コードを書き、そして、ビルドしたアプリケーション走らせ、赤青メガネをかけて画面から飛び出す「立体的な地球」を眺めていると、何度もビルド&実行をさせたい欲望にかられます。
OpenGL ESでのプログラミングに慣れたなら、以前作った、「(加速度センサ対応)体感・実感バストシミュレータ」のC++ソースを流用し、モバイル用(加速度センサ対応)体感・実感"3D"バストシミュレータでも作ってみることにしましょうか。
2013-06-19[n年前へ]
■iOS 8のメニュー画面には「フロントカメラを使った環境光のリアルタイムマッピングレンダリング」くらいはして欲しい!?
iOS 7のアイコン表示時の新機能として、画面の傾きに応じてアイコン位置を変えることで、画面の中に描かれたアイコンや背景に遠近感を与える、というものがあります。
思い起こせば、「未来の立体ディスプレイ」を作る と称して、同様の遊びをしてみたのが8年前…それが今やスマホで実現できる時代になった、と考えると感慨深くもあり、同時に身の回りの世界というのは10年程度ではあまり変わり栄えしないのだな…とも思わされます。
さて、今日は(iOS 7の先の未来で登場するはずの)iOS 8のアイコン表示では「これくらいはして欲しい!?」というものを、iPad miniで行ってみました。やってみたことは、iOS 7同様に加速度センサ値を使って背景とアイコンに遠近感を与えつつ、(ディスプレイ面を向く)フロントカメラから「ディスプレイ面にあたる光(色)分布」を取得して、その状況をリアルタイムに反映したアイコンや背景をレンダリングをする実験をしてみました。それが、下の動画です。動画前半でiPad miniを色々な向きで眺めた後に、その後「さまざまな色の光」をiPad miniに色んな方向からあてるさまを撮影したものです。
iPad miniの加速度センサとフロントカメラから得られる値・映像をもとにして、「(使用者が手に持つ)iPad miniは”こんな光”に囲まれていて」「使用者は”こんな風=向きに”iPad miniを持っていて」…そして、「画面内のオブジェクトはこんな風に光を受け・反射しているはず」…だから、使用者からは「こんな風に(リアルタイムに)見える」はず…というものをレンダリングしてみました。
だから、傾ければ「オブジェクト面の反射光沢の状態」や「オブジェクトの間の距離感」も変わりますし、照明状態が変わると「画面中にある各種オブジェクトの色・見え方」も当然変わります。青い光に照らされている時には、青色波長に対応する光しか(背景もアイコンも)反射・返すことをしませんし、照明スペクトルが赤色ならば、赤色の反射光しか返しません(画面上に反映させません)。
iOS 7はともかく…iOS 8くらいになった暁には「フロントカメラを使った環境光のリアルタイムマッピングレンダリング」くらいはして欲しい…と思いませんか?(…そんな過剰で不必要でつまりはムダなことには電流消費したくないぜ!という声がたくさん聞こえてきそう…)