web-dev-qa-db-ja.com

ARCore –フィーチャーポイントのない壁などのサーフェスにオブジェクトを配置/作成するにはどうすればよいですか?

例:2D画像を垂直面に配置することに興味があります(例:特徴点が存在しない白または単色の壁)。

さまざまな回避策は何ですか?

ARCoreが他のオブジェクトに対するオブジェクトの配置をサポートしていることを知っています。これを拡張して、特徴点が検出されない他のオブジェクトに対してオブジェクトを配置するという要件を満たすにはどうすればよいですか?

任意のアイデアや回避策は大歓迎です。

4

カメラの位置を基準にしてアンカーを設定できます。つまり、取り付けたい壁にカメラを向けます。

奥行きを正しくするには、設定したプリセット距離でカメラを保持するか、オブジェクトを前後に移動する機能を追加する必要があります。 @ALiが述べたように、ドリフトが発生しますが、現時点では一般的です。

以下のコードは、カメラビューの中央にアンカーを追加します。

          //Add an Anchor and a renderable in front of the camera       
          Session session = arFragment.getArSceneView().getSession();
          float[] pos = { 0,0,-1 };
          float[] rotation = {0,0,0,1};
          Anchor anchor =  session.createAnchor(new Pose(pos, rotation));
          anchorNode = new AnchorNode(anchor);
          anchorNode.setRenderable(andyRenderable);
          anchorNode.setParent(arFragment.getArSceneView().getScene());

これに関するその他の議論については、ここを参照してください。

このアプローチは機能し、必要に応じて深さを設定できます。

レンダリング可能なものも前後に移動したい場合は、それを行うためのより良い方法があるかもしれませんが、別のGitHubディスカッションのアドバイスに従って、私が見つけた最も信頼できるアプローチは、アンカーを削除して新しいアンカーを作成することでした新しい位置の後ろまたは前に設定された位置-つまり、ユーザーがレンダリング可能なものを0.1M前後に移動できるボタンがあります。

4
Mick

シーンに3Dオブジェクトを配置するために使用できる方法は少なくとも5つあります。ただし、3Dジオメトリは、ピボットポイントにあるオブジェクトのローカル座標系であるAnchorなしでは存在できません

オブジェクトの配置には次のアプローチを使用できます

  • プレーン検出が有効になっている場合、ARCoreは現在のセッションにAnchorを自動的に追加できます。
  • 画面をタップすると、アンカーを配置して、仮想平面に点を投影できます。
  • ARCore Cameraの変換(その位置と方向)は、アンカーの配置に使用できます。
  • フィーチャーポイント(高コントラストのマージン上のポイント)は、アンカーを配置する場所を提供します。
  • フィーチャポイントのクラスターを使用すると、後で取得するために実際の環境マップを保存できます。

ご覧のように Feature pointsオプションが常に使用されるとは限りません。創造性を発揮し、シーンに3Dを配置するためのすべての効率的な方法を使用してください。

2
Andy

オブジェクトを任意のTrackableに固定してから、壁まで移動するようにユーザーに依頼することができます。あなたは距離を計算し、それからあなたはどういうわけかその追跡可能なものからその壁のあなたの奥行き知覚を持っています。もちろん、いくつかのドリフトが見られますが、それはARCoreで常に発生します。

1
Ali Kanat