如何在 ARCore 中调整对象大小?

我在ArFragment中展示了3D对象。所以我把.obj文件和.mtl文件放在样本数据文件夹中。我右键单击obj文件,然后选择导入场景表单资源以添加.sfa / .sfb文件。

因此,当我标记图像时,我可以显示3d对象,但对象太大。

这是我的 .sfa 文件详细信息

{
   bound_relative_root: {
      x: 0.5,
      y: 0,
      z: 0.5,
   },
   materials: [
      {
         name: "Material.001",
         parameters: [
            {
               baseColor: null,
            },
            {
               baseColorTint: [
                  0.80000000000000004,
                  0.80000000000000004,
                  0.80000000000000004,
                  1,
               ],
            },
            {
               metallic: 1,
            },
            {
               roughness: 0.120695,
            },
            {
               opacity: null,
            },
         ],
         source: "build/sceneform_sdk/default_materials/obj_material.sfm",
      },
   ],
   model: {
      attributes: [
         "Position",
         "TexCoord",
         "Orientation",
      ],
      collision: {},
      file: "sampledata/dongbaek.obj",
      name: "dongbaek",
      recenter: "root",
      scale: 0.200000
   },
   version: "0.52:1",
}

我认为它可以通过比例部分调整大小,但我更改了值,它不会改变。相同尺寸

那么如何调整3d对象的大小呢?

添加3d对象文件以制作.sfa / .sfb文件时是否有任何问题?(导入场景表单资源)

如果您知道,请帮助我。


答案 1

对象缩放由缩放控制器更改。通过设置最小刻度和最大刻度值。在设置父节点 - 锚点节点之前。请参阅下面的示例。

      // Create the Anchor.
      Anchor anchor = hitResult.createAnchor();
      AnchorNode anchorNode = new AnchorNode(anchor);
      anchorNode.setParent(arFragment.getArSceneView().getScene());

      // Create the transformable andy and add it to the anchor.
      TransformableNode node = new TransformableNode(arFragment.getTransformationSystem());
// Maxscale must be greater than minscale
        node.getScaleController().setMaxScale(0.02f);
        node.getScaleController().setMinScale(0.01f);

        node.setParent(anchorNode);
        node.setRenderable(renderable);
        node.select();

答案 2

根据您的项目的不同方法:

  1. 更改缩放值,重新生成 sfb 文件
  2. 将节点放入可转换节点,让 ScaleController 扩展模型
  3. 直接使用 setLocalScale 或 setWorldScale
  4. 缩放 .obj 文件,然后生成 .sfa 和 .sfb 文件

推荐