我需要更好地理解 ARCore 的 Sceneform 场景的缩放过程。
据我所知,为了缩放 Renderable ,我们有三种选择:
1)在 sfa(s) 文件中执行此操作,这可能是生产工作流程中的先决条件,但对我没有帮助试图了解 ARCore-Sceneform 的缩放过程,所以我希望重点介绍以下两个选项;
2)通过 AnchorNode 缩放模型:
...
Anchor anchor = hitResult.createAnchor();
//
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(_arFragment.getArSceneView().getScene());
anchorNode.setRenderable(_renderable);
anchorNode.setLocalScale(new Vector3(0.01f,0.01f,0.01f)); //m -> cm
...
3)通过节点对其进行缩放:
...
Anchor anchor = hitResult.createAnchor();
//
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(_arFragment.getArSceneView().getScene());
//
TransformableNode node = new TransformableNode(_arFragment.getTransformationSystem());
node.setParent(anchorNode);
node.setRenderable(_renderable);
node.setLocalScale(new Vector3(0.01f,0.01f,0.01f)); //m -> cm
...
这种情况是,无论使用 AnchorNode 还是使用 Node ,我都没有试验相同的结果,因为只有第一个显示正确(预期)缩放。怎么了?
并行地,我不知道对API的节点调用中的正确顺序是什么,即:setParent + setRenderable + setLocalScale,setRenderable + setParent + setLocalScale,...对此有任何帮助吗?
提前感谢您的宝贵时间。