如何正确使用方法setLocaleScale?我在确定AR模型的大小时遇到 了问题

问题描述 投票:0回答:1

所以,我的问题分为两个层次:

  1. 如何确定增强图像的确切宽度和高度,这是我在AR中显示3D模型的标记?我通过getExtenzZ和getExtentX获取这些数据,我不知道这是否是正确的方法。
  2. 如何正确缩放ViewRenderable节点,使其具有图像的宽度和高度?在我的情况下,显示的模型总是比它应该的大,所以我认为在scalling过程中必须有一些东西,我想念... private void onUpdateFrame(FrameTime frameTime) { Frame frame = arFragment.getArSceneView().getArFrame(); Collection<AugmentedImage> augmentedImages = frame.getUpdatedTrackables(AugmentedImage.class); for (AugmentedImage augmentedImage : augmentedImages) { if (augmentedImage.getTrackingState() == TrackingState.TRACKING) { if (augmentedImage.getName().equals("painting") && shouldAddModel) { width = augmentedImage.getExtentX(); height = augmentedImage.getExtentZ(); placeImageView(arFragment,augmentedImage.createAnchor(augmentedImage.getCenterPose())); shouldAddModel = false; } } } } private void placeImageView(ArFragment arFragment, Anchor anchor){ CompletableFuture<Void> renderableFuture = ViewRenderable.builder() .setView(arFragment.getContext(),R.layout.painting_module) .setVerticalAlignment(ViewRenderable.VerticalAlignment.CENTER) .build() .thenAccept(renderable -> { ImageView imageView = (ImageView) renderable.getView(); AnchorNode anchorNode = new AnchorNode(anchor); anchorNode.setParent(arFragment.getArSceneView().getScene()); TransformableNode transNode = new TransformableNode(arFragment.getTransformationSystem()); transNode.setRenderable(renderable); transNode.getScaleController().setMinScale(0.01f); transNode.getScaleController().setMaxScale(2.0f); transNode.setLocalScale(new Vector3(width,0,height)); transNode.setLocalPosition(new Vector3(0,0.00f,0)); transNode.setLocalRotation(Quaternion.axisAngle(new Vector3(1,0,0),-90)); transNode.setParent(anchorNode); transNode.select(); }); }

在我看来,问题在于相机以及它错误计算增强图像的确切w和h的事实,但也许有人可以给我任何暗示?直到现在的效果:

enter image description here

java android augmented-reality arcore sceneform
1个回答
0
投票
  1. 应该是对的。但我不确定这些价值是多么准确。
  2. ViewRenderable大小使用ViewSizer确定。默认的ViewSizer是一个DpToMetersViewSizer,它将每个250DP渲染为1米。尝试使用其中一个固定宽度的大小调整器(例如FixedHeightViewSizer)并保持局部比例不受影响。
© www.soinside.com 2019 - 2024. All rights reserved.