iOSアプリ開発5日目〜その4〜
ARKitを用いたARアプリ開発の続き。平面を検知するコードを実装する。
今回は、ARKitのPlane Detection(水平の平面を検知)という機能を使う。垂直の平面検知は未実装である。3次元空間では、横方向のX、奥行き方向のY、縦方向のZを用いて位置を指定する。座標のポイントとポイントの距離を計測したり、ピタゴラスの定理を使ってiPhoneで写した物体の長さを計測したりする。平面を検知したら、平面の上に物体を配置することができる。何回な数学計算をしなくても自動で計測してくれる。
前回は、空間に物体を配置してきた。前回のメモはこちら。
0.新規プロジェクトの作成
まず、新規作成からAugmentedReality Appを選択し、New Project「DetectPlane」を作成
DetectPlaneの「ViewController.swift」を選択し、コードを表示する
今回追加したは以下の3つ。
1.水平方向の平面を検知する
ビューを表示するviewWillAppearの中に、以下の処理を追記する。
configuration.planeDetection = .horizontal
2.初期アセット(飛行機)の削除
今回も飛行機のアセットは使わないので、引数を空にする
let scene = SCNScene()
3.FeaturePointsを表示する
メインビューであるviewDidLoadの中に、サブビューを追加してFeaturePoints(特異点)を表示する
self.sceneView = ARSCNView(frame: self.view.frame)
self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints,ARSCNDebugOptions.showWorldOrigin]
self.view.addSubview(self.sceneView)
1行目:ARのシーンビューをひとつ追加
2行目:デバッグオプションの追加。画面上で平面の点を探し表示する。引数は2つあり、ARSCNDebugOptions.showFeaturePointsで検出できた平面の点を表示する、ARSCNDebugOptions.showWorldOriginで初期位置に座標表示する。
3行目:サブビューを追加
<ビルドして実機で実行>
このように、平面を検知してFeaturePointsが、黄色い丸で表示された。
平面を検知したらFeaturePointsを表示する処理を実装した。次回は平面を検知したらラベルが表示されるようにしていく。