Я разрабатываю приложение для Android, способное распознавать тексты (делаю это с помощью Google Vision).
Моя цель - обернуть текст, распознанный прямоугольником AR (я использую ARcore), как толькоэто соответствует последовательности символов.Проблема, с которой я сталкиваюсь, заключается в том, что текст, который я хочу распознать, находится на маленьком кусочке металла.Это делает невозможным обнаружить плоскость на нем ---> невозможно разместить трехмерный прямоугольник.
Мне было интересно, получаю ли я по координатам, полученным из текста (я получаю либо 4 угловые точки, либо getboundingbox()
) можно создать собственную плоскость на металлическом предмете, чтобы отобразить мой прямоугольник.
Я уже пробовал разные способы сделать это, и я не могу это сделать.
ArFragment fragment;
Session session = fragment.getArSceneView().getSession();
float[] pos = {0, 0, -1};
float[] rotation = {0, 0, 0, 1};
Anchor anchor = session.createAnchor(new Pose(pos, rotation));
placeObject(fragment, anchor, Uri.parse("model.sfb"));
private void placeObject(ArFragment arFragment, Anchor anchor, Uri uri) {
ModelRenderable.builder()
.setSource(arFragment.getContext(), uri)
.build()
.thenAccept(modelRenderable -> addNodeToScene(arFragment, anchor, modelRenderable))
.exceptionally(throwable -> {
Toast.makeText(arFragment.getContext(), "Error:" + throwable.getMessage(), Toast.LENGTH_LONG).show();
return null;
}
);
}
private void addNodeToScene(ArFragment arFragment, Anchor anchor, ModelRenderable renderable) {
AnchorNode anchorNode = new AnchorNode(anchor);
TransformableNode node = new TransformableNode(arFragment.getTransformationSystem());
node.setRenderable(renderable);
node.setParent(anchorNode);
arFragment.getArSceneView().getScene().addChild(anchorNode);
node.select();
}