お題目のような感じで2台のiPhoneを横に並べて同時に写真を撮ってみたんですよ。写真撮ったのは先月なんすけど...。えー、7とSE2はレンズ位置や形状がほぼ一緒なんで、単純に並べるだけで良さげな立体視画像が得られるのではないかと。『同時』にってのがなかなか難しく、シャッター音が『同時』に聞こえたと思えたものを採用しました。
交差法。左: SE2、右: 7。
下総利根大橋と筑波山の図。改めて見ますと、SE2の方は雲やアスファルトに立体感がありますね。7はつぶれちゃってるなー。んで、やっぱりどうしても時間差ができちゃってる。橋の上のクルマが破綻してるわ。時速36kmなら0.1秒で1mも動いちゃうもんね。クルマはキビシー。
交差法。左: SE2、右: 7。
関宿城址んとこの公園。千葉県内なら「関宿にこにこ水辺公園」て名称らしいんですが、茨城県側は名前なんだろ?「中の島公園」の一部扱いなのかな? まぁとにかく、利根川の向こう岸、国道354号を走るクルマがやっぱり破綻。『同時』に撮るのはキビシー。
以上を踏まえて、つづく。
2台のiPhoneを横に並べた状態で被写体に向け、同時に画面をタップして写真を撮る...。手動ではツラい。ツラすぎる。てなわけで、1台を操作すれば2台連動で撮影出来るようなアプリを作ろうかと。僅かな遅延も致命的なので、2台のiPhoneを無線通信で同期させ、1台の画面をタップしたら0.5秒後とかの同時刻に2台同時に撮影するって感じ。アプリ名はTwinCamでと思ったら、そんな名前はすでに使われてた<当たり前だ。
iPhone間の通信は何がイイの? 検索すると MCSession の紹介が多い感じなのでそれでイってみよう(と思ってヤっていたら、いつのまにやら MCSesssion は Deprecated になってしまった。がーん。"Use Network Framework instead" とな。んー、まぁ自分用だし、今回はこのまま MCSession を利用しよう...)。
フツー、iPhoneは時刻合わせが自動で行われるので、特に気にしてません。でも2台並べてみると、やっぱりちょっとズレてたり。これはイカーン。NTP の同期技、4つのタイムスタンプで2台を同期させてみよう。つづく。
とゆーわけで、iPhone間で通信して、4つのタイムスタンプを用いて時刻同期を試すアプリをテキトーに作る。アプリとして同期出来ればイイので、iPhone自体の時刻を合わせるわけではないです。以下の写真は画面奥がiPhoneSE(第2世代)、手前がiPhone6s。画面にゴミ付いてた...。
初期。
桁数の多い数字はUNIX時間(1970年1月1日基点の経過秒数)。iPhone内の時刻にオフセット(初期値0)を足したものを表示してます。目まぐるしく数値が動くので、数値の小数第1位が0のときに画面左上に赤い四角を表示してます。併せて音も鳴らします。上記画像では、手前の6sの時刻の方がSE2よりも僅かに早いです。
SE2にオフセット0.15秒を設定。
時刻同期をはっきりと分かりやすくするため、予めSE2に0.15秒のオフセットを設定してみた。これでSE2の時刻の方が6sよりも早くなった。
接続して時刻同期実行。
6s側が追従して0.1355秒ほどオフセットしました。元々6sが少し早かったので、0.15より小さい値となりました。なりましたけど、んー、画像の数字は、ぴったりではなさそうな...。
オフセットの数値は、20回繰り返し測定してRTTの悪い10個を破棄、残り10個の平均で...って感じなんすけど、こんなんでイイすか? まぁなんにせよ、厳密に計測してもどこまで意味があるのかなぁと。計測中や計測後にiPhoneが時刻合わせを実施すればズレちゃうし。撮影のときに必ず同期を実施するとか? 撮影しようとして実際に撮るのは1秒後です、なんてのは、んー、どうなんだろ。考えるのはちゃんとアプリ作ってからですかね。2台のiPhoneの機種やOSが異なれば動作も違うだろうし。んー。そのうち、つづく。