当前位置: 首页 > 知识库问答 >
问题:

旋转手机时,Sceneform子节点相对于父节点移动

方心思
2023-03-14

在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对我来说是完全不可用的。任何解决这个问题的想法都是受欢迎的。

共有1个答案

薛承基
2023-03-14

解决问题的方法是,手动设置渲染优先级与Renderable.set渲染优先级。即使父母和孩子有50厘米的比例,并且存在父子关系,也会发生这种情况。

 类似资料:
  • 如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?

  • 我想从父节点复制到子节点。我真的不确定这是如何实现的。 我的源xml 我想得到输出为 我想要XSLT1.0中的解决方案。 我想将这些节点复制到子节点 谢谢。

  • 我有一个这样的结构` ...等等,在

  • 在JavaFX中,我试图通过单击并拖动节点来移动它。如果节点不旋转,它工作得很好,但是当我旋转它时,它开始表现得很奇怪。 在45°左右,当我移动它时,它开始抖动,在60°时,它剧烈地来回抖动。在90°时,只要我开始移动节点,它就会飞离屏幕。 下面是我用来旋转和移动节点的代码。它来自连接到节点的鼠标侦听器。 编辑:这是一些示例输出,以及显示不同节点的图片。 未旋转且缓慢向左移动时的输出: 旋转时缓慢

  • 我需要将子元素复制到父元素中。 输入 期望输出 我尝试的内容(输出与输入保持相同): 我肯定会错过一些非常简单的事情。子元素与父元素具有相同的名称,这应该不是问题?