見出し画像

iOSアプリ開発5日目〜その4〜

ARKitを用いたARアプリ開発の続き。平面を検知するコードを実装する。

今回は、ARKitのPlane Detection(水平の平面を検知)という機能を使う。垂直の平面検知は未実装である。3次元空間では、横方向のX、奥行き方向のY、縦方向のZを用いて位置を指定する。座標のポイントとポイントの距離を計測したり、ピタゴラスの定理を使ってiPhoneで写した物体の長さを計測したりする。平面を検知したら、平面の上に物体を配置することができる。何回な数学計算をしなくても自動で計測してくれる。

前回は、空間に物体を配置してきた。前回のメモはこちら。

0.新規プロジェクトの作成

まず、新規作成からAugmentedReality Appを選択し、New Project「DetectPlane」を作成

画像2

DetectPlaneの「ViewController.swift」を選択し、コードを表示する


今回追加したは以下の3つ。

スクリーンショット 2020-05-19 12.26.59


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が、黄色い丸で表示された。

画像3


平面を検知したらFeaturePointsを表示する処理を実装した。次回は平面を検知したらラベルが表示されるようにしていく。



よろしければサポートお願いします。いただいたサポートを皆さんに還元していきたいと思っております。