[2019年6月] ARKitとは?実現できる事をまとめてみた。
ARKitとは? ARKitは2017年6月にAppleが公開したARアプリケーション開発用のAPIです。 https://developer.apple.com/videos/play/wwdc2017/602/ ARKitで特筆すべきは、特殊なハードウェアを使わずにiPhone内のセンサと、画像解析データを元にソフトウェアベースで空間構造を認識し、AR体験を実現している点です。
ARKitとは? ARKitは2017年6月にAppleが公開したARアプリケーション開発用のAPIです。 https://developer.apple.com/videos/play/wwdc2017/602/ ARKitで特筆すべきは、特殊なハードウェアを使わずにiPhone内のセンサと、画像解析データを元にソフトウェアベースで空間構造を認識し、AR体験を実現している点です。
先日の記事で紹介したARKitで絵を描くデモと同じく有名なのがARメジャーアプリ。 ※ARKitで絵を描いてみた前回記事はこちら https://techpartner.jp/blog/drawing
ARKitの紹介でよく見る、空間に絵を書くデモ。どの様な仕組みで書いているのか調べてみました。 実装する内容
ARKitを利用し、検出した平面に3Dモデルを常にカメラの方に向かせてみます。 最初は現在のカメラの位置を取得し、3Dモデルノードのポジションを常にアップデートをしようと考えましたが、もっと簡単にできる方法がありました。 SCNBillboardConstraint
前回の記事では、SceneKitで3Dオブジェクトに重力を付与しました。 前回記事:https://techpartner.jp/blog/physical-simulation
前回、SceneKitの3次元世界がどの様に構築されているかを確認しました。 今回は、SceneKitの世界に重力や、あたり判定などの物理シュミレーションを設定していきたいと思います。 球体に重力を設定する
非ゲーム系アプリの開発が中心だと、3Dオブジェクトを取り扱う事がほとんどないので、3Dゲーム開発用のフレームワークであるSceneKitを利用する機会がありません。 しかし現在リサーチしている、ARKitを使いこなすには、SceneKitの理解は必須です。なぜならARKitが現実世界の検出したあとの3DオブジェクトのハンドリングはSceneKitが担当するからです。 2次元世界であるUIKitの文化圏と大分異なるSceanKitですが、しっかり理解していきたいと思います。
前回、ARKitで認識した平面に3Dモデルを配置しました。 今回は、配置した3Dモデルをタップする事で消したり、また配置したりと出し入れしてみます。
ARSessionをRunした後に、トラッキングがはじまるまでの1秒程度の時間タイムラグがあります。 また特徴量が少なすぎたり、カメラがぶれていたりすると精度高くトラッキングできません。 こういったカメラの状態を適切にハンドリングする為に、ARCamera.TrackingStateを利用していきます。
前回は平面検出後に、平面上の位置を指定せずに3Dモデルを置きました。 今回はARSCNViewのhitTestメソッドを利用して検出した平面上の任意箇所をタップで指定して、3Dモデルを置いてみます。 ※平面検出は前回の記事参照