Можно ли отобразить 3d-объект вне плоскости и без касания? - PullRequest
0 голосов
/ 30 января 2019

Я разрабатываю приложение для 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();
    }

1 Ответ

0 голосов
/ 01 февраля 2019

Я полагаю, что ARCore позволит вам получить доступ к отслеживаемым характерным точкам (например, если вы используете Unreal, см. https://developers.google.com/ar/reference/unreal/arcore/blueprint/Get_All_Trackable_Points).. Вы можете искать характерные точки, отслеживаемые ARCore, в пределах области изображения, определяемой координатами.Вы получаете от обнаруженного текста. Я полагаю, что вы можете получить позу отслеживаемых точек, но я не уверен, будет ли элемент ориентации позы иметь высокую достоверность без достаточных характерных точек, чтобы сделать вывод о существовании плоскости.

...