ARKit Native or Unity?
Tatsuya Shimada
Tatsuya Shimada(@usagani, @usaganikki)
リクルート住まいカンパニーの方から来ました
最近はARVRの人です
その前はAndroidの人でした
自己紹介
Index
- LT概要
- ARKit概要
- 作るもの
- Nativeでの作り方
- Unityでの作り方
- メリットデメリット比較
- 最後に
LT概要
現実世界に何かを通じて情報を付加するのがAugumented Reality
(Micrsoft decode基調講演より抜粋)
AR概要
スマホARが8割
このビッグウェーブに
乗るしかない!!!
でもどうやって作るの?
Native(Xcode)でできる
の?
Native(Xcode)
or
ゲームエンジン(Unityと
か)
ARKit概要
- iOSの機能としてAR機能が実装!!!
- これまではサードパーティSDKを使うしかなかった・・・
- できること
- 平面(空間)認識
- カメラ上に何かを表示、平面の上に何かを表示
- (iPhoneXでは顔認識系が入るらしい)
- できないこと
- オクルージョンとか
- 表示しているものが何かの影になっても隠れたりしない
- 画像認識とモーションセンサーによって実現
詳しくは公式をどうぞ
Interface Guideline
https://developer.apple.com/documentation/arkit/about_augmented_reality_and_arkit?changes=la
test_minor
About Augmented Reality and ARKit
https://developer.apple.com/documentation/arkit/about_augmented_reality_and_arkit
作るもの
平面を認識して、そこにエフェクトを出す
Nativeでの作り方
@shu223さんが最高のサンプルを作ってくださったのでこちらを参考にしましょう
ARKit-Sampler
https://github.com/shu223/ARKit-Sampler
こちらのPlaneDetectionを今回解説します
https://github.com/shu223/ARKit-Sampler/tree/master/ARKit-Sampler/Samples/PlaneDetection
他のサンプルも最高なのでみてみましょう
Nativeでの作り方
Nativeでの作り方
Nativeでの作り方まとめ
良い点
- ARSCNViewがSceneKitベースに作られているためSceneKitを使ったことがある人ならある程度サクサ
クかける
- NodeやAnchorの概念がわかればあとは気合いけるところまではいける
- 慣れ親しんだswift, iOSの流れで書くことができる
- viewDidLoad, viewWillAppearで初期処理、viewWillDisappearで後始末する
- delegateでコールバックを処理するなどこれまでのアプリと似たような形で作ることができる
- アプリUIを作り込むことが簡単
微妙な点
- そもそもSceneKitそんなに使ったことない人が意外と多い印象
- 3Dコンテンツをゴリゴリ動かそうと思うとすごい頑張らなくちゃいけない、Unityみたいに気軽にでき
ない
- スマホに適した品質にしようと思うとSceneKitを使いこなす必要はでてくる
Untiyでの作り方
開発環境
- Unity2017 1.1f
- スライド力がないので直接説明します!!!
Untiyでの作り方まとめ
良い点
- 3D Contentsを操作するノウハウが豊富
- AssetStoreに3D Contentsがたくさん落ちてる
- パフォーマンスを測定、調整(PostProcessingStackなど)するノウハウが豊富
- 将来ARCoreとかに対応して一つのプロジェクトでiOS, Androidの両方のARに対応できるかもしれない
微妙な点
- ビルドが遅い
- Unityの学習コスト
- C#で書かなくちゃいけない
- GUI操作を覚えなくちゃいけない
- スマホ用のUIが作りにくい
- 既存アプリに入れる方法が今のところない
- ドキュメントが少なく、登場人物が多い
メリデメまとめ
メリット デメリット
Native 既存アプリへの導入なら一択
ARSCNViewが優秀なのでAndroidより簡
単にできる(AndroidはOpenGLES)
iOS既存知識がある程度使える
UIをアプリっぽくできる
3D表現のノウハウが少ない
実はSceneKitそんなにメジャーじゃない
Untiy 3D表現のノウハウが多い
AssetStoreに3D Contentsたくさん落ちて
る
マルチプラットフォームなのでAndroid対
応が楽になるかも
ビルド遅い
Unityの学習コストがかかる
スマホ用のUIが作りにくい
既存アプリに追加する方法は今のところない
登場人物が多い
個人的まとめ
- 既存アプリに追加するならNative一択
- 新たに作る場合でも簡単なアプリならUnityを使う必要はないと思う、SceneKit覚える学習コストより
Unity覚える学習コストの方が高いと感じた
- ARSCNView(SceneKit)は本当によくできてる
- Androidにも対応したい or リッチな3D Contentsをグリグリ動かしたい!!!的なものであればUnity
を使ってもいいかも?
- 将来的にUnityがARCoreとARKitをいい感じに対応してくれる可能性は大いにある
最後に
Untiyでの作り方
- ARVRはこれまで特別な知識が必要でとっつきにくい印象が僕にはあった
- だが、ARKitはかなりアプリっぽく書くことができて、ARKitによりアプリエンジニアもARを作り込め
る環境が揃って来たと感じている
- これまで平面でしか表現できなかったことがARだと、現実世界に溶け込むように3Dで表示することが
できるようになる!新しいUXの誕生!!!
みんなでARを楽しんで、盛り上げていこうぜ!!!

ARKit native or unity