【问题标题】:ARCore – How to set default scale for a Transformable node?ARCore – 如何为可转换节点设置默认比例?
【发布时间】:2018-05-16 06:46:33
【问题描述】:

我正在使用Transformable 节点并且能够设置最小和最大比例值。但是我使用的模型的默认尺寸要大得多,所以我必须使用手势使其变小。

如何设置模型/可变形节点的默认比例值?

【问题讨论】:

    标签: java android augmented-reality arcore sceneform


    【解决方案1】:

    我认为您可以在设置实际的 Renderable 之前使用 TransformableNode 的 setLocalScale 方法。像下面的代码

    TransformableNode andy = new TransformableNode(arFragment.getTransformationSystem());
          andy.setLocalScale(new Vector3(0.1f, 0.1f, 0.1f));
          andy.setParent(anchorNode);
          andy.setRenderable(andyRenderable);
          andy.select();
    

    x、y、z值我用了0.1f,然后看起来更好

    【讨论】:

    • 请注意,比例由TransformableNodeScaleController 的最大值/最小值限定。您可以使用transformableNode.getScaleController().setMaxScale(maxScale)transformableNode.getScaleController().setMinScale(minScale) 进行更改。
    • 您能告诉我如何获得TransformableNode 的缩放尺寸(以米为单位)。假设我在 y 方向上缩放了一个立方体。现在我想以单位米为单位获得它的缩放大小。请帮我怎么做?
    • 如果上述解决方案不起作用,您可能必须通过执行以下操作来设置最小比例。就我而言,现有的 minScale 是 .75f andy.getScaleController().setMinScale(0.1f));
    【解决方案2】:

    您可以轻松地使用此代码为可转换节点设置默认比例:

    TransformationSystem arTS;
    arTS = MainActivity.getArFragment().getTransformationSystem();
    
    TransformableNode node = new TransformableNode(arTS);
    node.setRenderable(modelRenderable);
    node.getScaleController().setMinScale(0.1999f);
    node.getScaleController().setMaxScale(0.2000f);
    node.setLocalScale(exhibit.getModelScale());
    node.setLocalPosition(exhibit.getModelPosition());
    //node.setParent(anchorNode);
    node.setParent(sceneView.getScene());
    
    node.getRotationController().setEnabled(true);
    node.getScaleController().setEnabled(true);
    
    sceneView.getScene().addChild(node);
    node.select();
    

    【讨论】:

    • 我得到 java.lang.IllegalStateException: maxScale must be greater than minScale when I do this。你确定 MinScale 和 MaxScale 可以相等吗?
    • 这种情况下可以这样设置:.setMinScale(0.1999f).
    【解决方案3】:

    imho 设置节点默认比例的最简单方法是在 sfa 文件中定义 3d 模型的比例属性

    【讨论】:

      【解决方案4】:

      在您的 .sfa 文件中,更改 scale 的默认值,然后加载模型并重新构建应用程序

      【讨论】:

        猜你喜欢
        • 2019-02-22
        • 1970-01-01
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 2016-02-19
        • 2018-04-21
        • 2013-12-15
        • 2012-04-14
        相关资源
        最近更新 更多