例:2D画像を垂直面に配置することに興味があります(例:特徴点が存在しない白または単色の壁)。
さまざまな回避策は何ですか?
ARCoreが他のオブジェクトに対するオブジェクトの配置をサポートしていることを知っています。これを拡張して、特徴点が検出されない他のオブジェクトに対してオブジェクトを配置するという要件を満たすにはどうすればよいですか?
任意のアイデアや回避策は大歓迎です。
カメラの位置を基準にしてアンカーを設定できます。つまり、取り付けたい壁にカメラを向けます。
奥行きを正しくするには、設定したプリセット距離でカメラを保持するか、オブジェクトを前後に移動する機能を追加する必要があります。 @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前後に移動できるボタンがあります。
シーンに3Dオブジェクトを配置するために使用できる方法は少なくとも5つあります。ただし、3Dジオメトリは、ピボットポイントにあるオブジェクトのローカル座標系であるAnchor
なしでは存在できません。
オブジェクトの配置には次のアプローチを使用できます:
Anchor
を自動的に追加できます。ご覧のように
Feature points
オプションが常に使用されるとは限りません。創造性を発揮し、シーンに3Dを配置するためのすべての効率的な方法を使用してください。
オブジェクトを任意のTrackableに固定してから、壁まで移動するようにユーザーに依頼することができます。あなたは距離を計算し、それからあなたはどういうわけかその追跡可能なものからその壁のあなたの奥行き知覚を持っています。もちろん、いくつかのドリフトが見られますが、それはARCoreで常に発生します。