изобразить отображаемое изображение перпендикулярно плоскости - PullRequest
0 голосов
/ 15 февраля 2020

это то, что я хочу -> введите описание изображения здесь Здесь часть важного кода, я хочу отобразить автора книги поверх книги, но, как вы видите, изображение перпендикулярно к книга. Помогите мне, вот что я получил -> введите описание изображения здесь

  private void OnUpdateFrame(FrameTime frameTime){
                    Frame frame=arFragment.getArSceneView().getArFrame();

                    Collection<AugmentedImage> augmentedImages=frame.getUpdatedTrackables(AugmentedImage.class);
                    for(AugmentedImage augmentedImage: augmentedImages){

                        if(augmentedImage.getTrackingState()== TrackingState.TRACKING ){

                            if(augmentedImage.getName().equals("arimage") && shouldAddModel){
                                placeObject(arFragment,
                                        augmentedImage.createAnchor(augmentedImage.getCenterPose()),
                                        Uri.parse("author.jpg"));
                                shouldAddModel=false;
                            }
                    }}
                }

          private void placeObject(ArFragment fragment, Anchor anchor, Uri model){
                ViewRenderable.builder().
                        setView(this,R.layout.lol)
                        .setVerticalAlignment(ViewRenderable.VerticalAlignment.BOTTOM)
                        .build()
                        .thenAccept(viewRenderable -> addNodeToScene(fragment,anchor,viewRenderable))
                        .exceptionally(throwable -> {
                        AlertDialog.Builder builder=new AlertDialog.Builder(this);
                        builder.setMessage(throwable.getMessage())
                                .setTitle("Error!");
                        AlertDialog dialog=builder.create();
                        dialog.show();
                        return null;
                        });
            }

      private void addNodeToScene(ArFragment fragment, Anchor anchor, ViewRenderable viewRenderable) {

            AnchorNode anchorNode=new AnchorNode(anchor);

            anchorNode.setLocalScale(new Vector3(0.5f, 0.5f, 0.5f));

            TransformableNode node=new TransformableNode(fragment.getTransformationSystem());

            node.setRenderable(viewRenderable);

            node.setParent(anchorNode);
            fragment.getArSceneView().getScene().addChild(anchorNode);
            node.select();

        }

1 Ответ

0 голосов
/ 17 февраля 2020

Простое локальное вращение узла должно помочь. После того, как вы установили родителя узла, как это.

 node.setParent(anchorNode);
 node.setLocalRotation(Quaternion.axisAngle(new Vector3(0, 0, 1f), 180));
 fragment.getArSceneView().getScene().addChild(anchorNode);

Поиграйте со значениями кватерниона. Вы должны получить это.

...