こんちにちはmorimori(@TatsunoriMorita)です。
仕事の関係でARアプリ開発することになり、これまで開発してきたデスクトップアプリ、web、スマホアプリと違った技術に戸惑いながら、少しずつ調べたことをメモして行こうと思います。
前回の続きで、プロジェクトを新規作成した際のテンプレートコードを見て行きます。
開発環境
Xcode ver10.1
iPhone7 Plues(iOS12.1)
コードに刮目する!!
UIViewControllerに対してdelegateを設定しています。
これによって以下のメソッドの実装をUIViewControllerに委譲しています。適時必要な処理についてはUIViewControllerさん、お任せしますということですね。
SCNSceneRendererプロトコルのshowsStatisticsプロパティを使用して、アプリの画面下にレンダリングのパフォーマンスとGPUリソース情報を表示しています。
画面下にいろいろ表示されています。
debugOptionsプロパティを追加してみました。
これはARKitが平面を認識すると特徴点を黄色の点で表示をしてくれます。
ちょっと分かりづらいですね。。。
現状、白や黒の平面だと認識がされずらいです。後は暗いところで認識されないので、夜間に使用するようなアプリが作成できないのは、使用用途が限定されてしまうので、あまり実用的ではないですね。この辺の制度をどれだけ上げていけるかが、今後のARの課題でもありそうです。
ここでAssetsフォルダ内にある3Dオブジェクトを取り込んで、SCNSceneを作成して、ARSCNViewのsceneプロパティにセットしています。
ここにあるscnファイルを変更してあげれば他のオブジェクトが表示できます。
実際にセッションの実行をしているのはviewwillAppearイベント内のsession.runメソッドになります。
画像認証やフェイス認証をするにはARWorldTrackingConfigurationをARImageTrackingConfigurationやARFaceTrackingConfigurationに変更して使います。
まとめ
コード量が少ないのでそれほど難しくはないですね。次回はもう少しコードを追加しながら動作を確認したいと思います。