0

在 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 时,就会发生这种情况。

这个问题在 7 月首先报告给 ARCore,然后在 8 月底报告给 Sceneform,但仍然被两个团队完全忽略。这样 ARCore 对我来说完全无法使用。欢迎任何解决此问题的想法。

4

1 回答 1

0

该问题的解决方案是,手动设置渲染优先级Renderable.setRenderPriority。即使父母和孩子相距 50 厘米并且存在亲子关系,也会发生这种情况。

于 2018-09-15T23:44:39.543 回答