场景窗体 旋转手机时,子节点相对于父节点移动



在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对我来说完全无法使用。欢迎任何解决此问题的想法。

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

最新更新