[iOS][AR]七夕にちなんで天の川の位置を探すiOSのソースコードを公開しました!〜HAPPY BIRTHDAY!Classmethod〜

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、モバイルアプリサービス部の田中孝明です。

7月7日は弊社クラスメソッドの創立記念日です。
あとは七夕ということで天体観測をされる方もおられるのではないでしょうか?
そこでAR(拡張現実)という技術を使って天の川(アルタイル)を探すiOSのソースコードを公開しました。

AR

ARとは?

拡張現実(Augmented Reality)という、スマートフォン等のデバイスを通して現実の空間情報を拡張する技術です。
スマートフォンの各種センサー(方位、位置情報、加速度)の値からデバイスの方向を検出し、カメラにオーバーレイさせるというのが一般的な実現方法になります。
今回は自分がAR関係のプロジェクトに携わった際に利用した技術類のサマリーとソースコードを展開いたします。

ソースコード

ソースコードはGitHubに公開しています。
コード自体は昔Objective-Cで組んだものをSwiftで作り直したものです。

CelestialObservationViewer

argif
※シミュレータには対応していませんので、実機(iPhone、iPod touch)でお試しください!

Event Handling Guide for iOS

デバイスの角度(方位、仰角)の算出には電子コンパス加速度ジャイロスコープを利用しています。

Location and Maps Programming Guide
Event Handling Guide for iOS

The Balance Filter

加速度ジャイロスコープを統合的に利用することで端末の動作に追随させるThe Balance Filterという技術を利用しています。

The Balance Filter

この技術を適用することで、デバイスの向きがPortraitLandscapeに限らず対象物を追随させることができます。
Screen Shot 2016-07-04 at 22.19.35 Screen Shot 2016-07-04 at 22.19.48

OpenGL

目的の座標に描画するためにカメラの画像の上にOpenGL ES 1.1を利用しています。
GLKitMetalが出ていない時期に組んだものですのであまり参考にならないと思います。

iOS OpenGL ES プログラミングガイド

星座の座標計算

目的の星(アルタイル)の座標計算(赤道座標→地平座標変換)には下記のサイトを参考にさせていただきました。

お星様とコンピュータ

最後に

最近はVRが話題に上ることが多く、ARが話題に上ることも少なくなりました。
それでもスマートフォンに搭載されているセンサー類を駆使した技術でもあるので、プログラミングするお題としては楽しいと思います。
自分も技術者として新しい技術に積極的にチャレンジし、アウトプットできるようにしてまいります!

HAPPY BIRTHDAY!Classmethod!!