ぬるぽ

ゆるくプログラミングなどを語っていくブログ

ARKit入門 その2

f:id:nooootion:20181201102101p:plain

 

こんちにちはmorimori(@TatsunoriMorita)です。

 

仕事の関係でARアプリ開発することになり、これまで開発してきたデスクトップアプリ、web、スマホアプリと違った技術に戸惑いながら、少しずつ調べたことをメモして行こうと思います。

 

前回の続きで、プロジェクトを新規作成した際のテンプレートコードを見て行きます。

www.nullnullpon.com

 

開発環境

Xcode ver10.1

iPhone7 Plues(iOS12.1)

 

 コードに刮目する!!

UIViewControllerに対してdelegateを設定しています。

f:id:nooootion:20181201102657p:plain

これによって以下のメソッドの実装をUIViewControllerに委譲しています。適時必要な処理についてはUIViewControllerさん、お任せしますということですね。

f:id:nooootion:20181201102725p:plain

 

SCNSceneRendererプロトコルのshowsStatisticsプロパティを使用して、アプリの画面下にレンダリングのパフォーマンスとGPUリソース情報を表示しています。

f:id:nooootion:20181201102814p:plain

画面下にいろいろ表示されています。

f:id:nooootion:20181201102909p:plain 

 

debugOptionsプロパティを追加してみました。

これはARKitが平面を認識すると特徴点を黄色の点で表示をしてくれます。

f:id:nooootion:20181201102956p:plain

ちょっと分かりづらいですね。。。

現状、白や黒の平面だと認識がされずらいです。後は暗いところで認識されないので、夜間に使用するようなアプリが作成できないのは、使用用途が限定されてしまうので、あまり実用的ではないですね。この辺の制度をどれだけ上げていけるかが、今後のARの課題でもありそうです。

f:id:nooootion:20181201103035p:plain

 

ここでAssetsフォルダ内にある3Dオブジェクトを取り込んで、SCNSceneを作成して、ARSCNViewsceneプロパティにセットしています。

ここにあるscnファイルを変更してあげれば他のオブジェクトが表示できます。

f:id:nooootion:20181201103119p:plain

 

実際にセッションの実行をしているのはviewwillAppearイベント内のsession.runメソッドになります。

画像認証やフェイス認証をするにはARWorldTrackingConfigurationをARImageTrackingConfigurationARFaceTrackingConfigurationに変更して使います。

f:id:nooootion:20181201103147p:plain

 

まとめ

コード量が少ないのでそれほど難しくはないですね。次回はもう少しコードを追加しながら動作を確認したいと思います。

www.nullnullpon.com