りゃおの学びログ

ARを中心に学びを記録

ARCoreを実践する

ARCore SDK for Unityのサンプルは一通り見終えたので、実際にシーンを1から作成しました。

開発環境

  • Windows10
  • Unity 2018.1.7f1
  • ARCore SDK for Unity v1.3.0
  • Galaxy S9

やったこと

  • Point Cloudを可視化
  • 検知した平面のタップした位置に神林ゆうこちゃんを召喚

以下の記事を参考にさせていただきました。
jyuko49.hatenablog.com

"GoogleARCore"のサンプルにある"HelloAR"とほぼ同じことをやっただけですが、シーンを丸ごとコピーをせずに組み立てました。
ただスクリプトなどは参考にしたりそのまま使ったりしました。

"HelloAR"ではどこに平面を検知したが分かりやすいように可視化してありましたが、今回は無しにしました。
なので、検知済み平面の可視化のためのプレハブである"Plane Generator"や"DetectedPlaneVIsualizer"は使用しません。

UIも表示しないので、引用した"HelloARController"のUI表示にあたる部分も省きました。

結果

ビルドし、実機で動作させた結果がこちら
f:id:ryaoucn:20180730195219j:plain
Point Cloudもゆうこちゃんも表示されています。

つまづいたこと

今回プロジェクト作成時にはじめからある"Main Camera"に"ARCoreBackgroundRenderer(Script)"と"TrackedPoseDriver(Script)"をアタッチし、"Pose Source"も"Color Camera"に変更したのですが、Point Cloudが表示されず平面を検知されませんでした。

"HellowAR"の"FirstPersonCamera"と比較したところ、"Camera"の設定値にある"Depth"が"-1"になっていたことが原因でした。
これによりレンダリングの順序に差ができることによって特異点の検出がうまくいかなかった・・・のでしょうか・・・。
"Depth"を"0"にしたところ、正常に検出されるようになりました。

とくにこだわりがなければGoogleARCoreのPrefabs配下の"ARCore Device"を持ってきた方が早いですね。