Если вы пытаетесь показать изображение объекта, который всегда должен находиться в одном и том же месте при предварительном просмотре, например, в видоискателе или зоне фокусировки в центре предварительного просмотра, тогда вам может быть проще просто добавьте его как отдельный вид поверх AR View.
Например, на макете ниже есть кнопка, наложенная на AR Fragment, но вы можете заменить его представлением, содержащим, например, ваш объект или изображение.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="LineViewMainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.FloatingActionButton
android:id="@+id/blank_button_bottom_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:visibility="invisible"
android:src="@mipmap/ic_launcher" />
<fragment
android:id="@+id/ux_fragment"
android:name="com.google.ar.sceneform.ux.ArFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</FrameLayout>
Если ваши требования касаются реального 3D-объекта, который будет выглядеть по-другому при перемещении вокруг него, т.е. вы видите заднюю часть объекта, когда смотрите на него сзади, вы можете обнаружить, что вам нужно изменить его положение. в центре камеры для каждого кадра, при условии, что это не приведет к значительным накладным расходам для вашего приложения.
Пример кода для размещения привязки перед центром камеры и присоединения рендеринга объекта ниже:
// Place the anchor 1m in front of the camera.
Frame frame = arFragment.getArSceneView().getArFrame();
Session session = arFragment.getArSceneView().getSession();
Anchor newMarkAnchor = session.createAnchor(
frame.getCamera().getPose()
.compose(Pose.makeTranslation(0, 0, -1f)) //This will place the anchor 1M in front of the camera
.extractTranslation());
AnchorNode addedAnchorNode = new AnchorNode(newMarkAnchor);
addedAnchorNode.setRenderable(andyRenderable); addedAnchorNode.setParent(arFragment.getArSceneView().getScene());