Sceneform Дочерние узлы перемещаются относительно родителя при повороте телефона - PullRequest
0 голосов
/ 11 сентября 2018

В HelloSceneform при замене этих строк ...

          TransformableNode andy = new TransformableNode(arFragment.getTransformationSystem());
      andy.setParent(anchorNode);
      andy.setRenderable(andyRenderable);
      andy.select();

... этими строками и запустите приложение.

  Texture.builder()
      .setSource(getApplicationContext(), R.drawable.boardbackground)
      .build()
      .thenAccept(backtexture ->
          MaterialFactory.makeTransparentWithTexture(getApplicationContext(), backtexture)
              .thenAccept(backmaterial -> {
                ModelRenderable backrenderable = ShapeFactory.makeCube(new Vector3(1f, 0.01f, 1f), Vector3.zero(), backmaterial);

                Node background = new Node();
                background.setLocalPosition(Vector3.up());
                background.setParent(anchorNode);
                background.setRenderable(backrenderable);


                Texture.builder()
                    .setSource(getApplicationContext(), R.drawable.img_20180609_115300)
                    .build()
                    .thenAccept(texture ->
                        MaterialFactory.makeTransparentWithTexture(getApplicationContext(), texture)
                            .thenAccept(material -> {
                              ModelRenderable renderable = ShapeFactory.makeCube(new Vector3(0.5f, 0.01f, 0.5f), Vector3.zero(), material);

                              Node foreground = new Node();
                              foreground.setLocalPosition(new Vector3(0.2f, 0.1f, 0f));
                              foreground.setParent(background);
                              foreground.setRenderable(renderable);
                            })
                    );

              })
      );

В результате следующий эффект : даже когда дочерний узел находится над родительским узлом, вращение телефона приводит к перемещению дочернего узла к задней части родительского узла.

Это происходит, когда в центре или в локальной позициидочернего узла имеет значение, отличное от 0.

Эта проблема была сначала сообщена ARCore в июле, а затем сообщена в Sceneform в конце августа, но обе команды полностью игнорируют ее.Таким образом, ARCore совершенно непригоден для меня.Любая идея решить эту проблему приветствуется.

1 Ответ

0 голосов
/ 16 сентября 2018

Решение проблемы состоит в том, чтобы установить приоритет рендеринга вручную с помощью Renderable.setRenderPriority. Это происходит даже тогда, когда родитель и потомок находятся на расстоянии 50 см друг от друга, и существует отношение родитель-потомок.

...