gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:20:57 27 4
gpt4 key购买 nike

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

  1. 如何确定增强图像的确切宽度和高度,该图像是我在 AR 中显示 3D 模型的标记?我通过 getExtenzZ 和 getExtentX 获取这些数据,我不知道这是否是正确的方法。

  2. 如何正确缩放 ViewRenderable 节点以使其具有图像的宽度和高度?就我而言,显示的模型总是比应有的大,所以我认为在缩放过程中一定有一些东西我错过了......

    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

最佳答案

  1. 应该是正确的。但我不确定这些值有多准确。
  2. ViewRenderable 大小由 ViewSizer 确定。默认 ViewSizer 是 DpToMetersViewSizer将每个 250DP 渲染为 1 米。尝试使用固定宽度调整器之一(例如 FixedHeightViewSizer )并保持局部比例不变。

关于java - 如何正确使用setLocaleScale方法?我在确定 AR 模型的大小时遇到​​问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54343837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com