AR系アプリ作成に必要な要素 その1

何かandroidアプリを作ろうと思いつつ、ぱっとしたアイディアが出てこないので、アプリ開発の練習もかねて、いまさらながらAR系のアプリを作ろうと思います。ネタは完成するまで秘密。

AR系アプリの動作の流れとしては、下記になると思います。

  1. 端末の現在地(緯度/経度)、端末の向いている方角/姿勢を取得。
  2. 情報表示したい対象の位置(緯度/経度)、向いている方角/姿勢を取得。
  3. 1.と2.の相対的な位置関係から、画面にオーバレイ表示する位置/大きさ/角度などを決定。この際に画面上の厳密な位置にオーバレイする場合は、カメラの画角情報が必要。
  4. 画面上にカメラプレビューにオーバレイして情報表示。

確認すべき技術要素は、下記になります。(順番はサンプルを作りやすい順にシャッフル)
今日は、とりあえず1と2のサンプル作成まで。

  1. カメラプレビューへのオーバレイ表示
  2. 端末の向いている方角/姿勢の取得
  3. 端末の現在地(緯度/経度)の取得
  4. カメラの画角情報取得
  5. 2-4の情報から表示情報を計算

カメラプレビューへのオーバレイ表示

まずはカメラプレビューの表示。Anadroid Developersのサンプルを実装するだけ。
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

次に画像のオーバレイ表示は、こちらのコードを参考に実装。
http://ayakix-lablog.blogspot.com/2011/09/androidoverlay.html

端末の向いている方角/姿勢の取得

下記のサイトに詳しい説明あります。最終的にはAndroid Developersを確認。
http://techbooster.jpn.org/andriod/ui/443/

remapCoordinateSystem() の使い方で混乱したときに下記サイトの説明に助けられました。
http://www.binzume.net/diary/2010-07-24:A3

その他

取得したセンサ値をcanvasに描画する際は下記サイトを参考に。
http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=80

描画の更新は、View#invalidate() を使用。
http://www.hakkaku.net/articles/20090206-341

ARアプリで磁気偏角の補正は必要でしょうか?今後確認します。
http://ameblo.jp/seccager/entry-10898411084.html