りゃおの学びログ

ARを中心に学びを記録

【ARCore】検出平面に衝突判定をつける

検出された平面にアンカーを作成してオブジェクトを置く方法が確認できたので、今度は平面にオブジェクトを乗っける方法を勉強しました。

以下の記事を参考にさせていただき、ARCore1.3.0のサンプルソースに合うよう一部修正しました。
tks-yoshinaga.hatenablog.com

開発環境

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

修正箇所

  • "TrackedPlaneVisualizer"は1.3.0では"DetectedPlaneVisualizer"
  • "Frame.GetNewPlanes(ref m_newPlanes);"は1.3.0では"Session.GetTrackables(m_AllPlanes);"
  • "// Iterate over planes found in this frame and instantiate corresponding GameObjects to visualize them."以下の検出平面を可視化する処理は"Plane Generator"がやってくれてるので1.3.0のHelloARサンプルのコードにはない

また、生成するCubeにマテリアルを明示的に指定してやらないとUnity特有のピンク(紫?)色になってしまうので、以下のコードでランダムに色を付けるようにしました。

// マテリアルの設定
Material material = new Material(Shader.Find("Diffuse")) {
    color = new Color(Random.value, Random.value, Random.value)
};
cube.GetComponent<Renderer>().material = material;

結果


・・・一投目がピンク色で失敗したかと思いました。紛らわしい。

おまけ

先日文面上で確認した1.4.0の変更点についても一部を実際に動かして確認してみました。

オートフォーカスモードのオン/オフ切り替えについてはDeffaultSessionConfigの中に項目が増えていました。
f:id:ryaoucn:20180805190817j:plain
実際に動かしてみましたが、たしかにオートフォーカスしてくれてるような。。。
すみません、はっきりわかる画像を用意できませんでした。

また、HelloARサンプルも検出された平面に置くか点に置くかでアンディが色分けされていました。
f:id:ryaoucn:20180805191056j:plain
平面に置いたアンディはこっちを向いてくれますが、点に配置したアンディはうまくこっちをむいてくれません。なんでだろ。

他の変更点についても後々確認していこうと思います。