当前位置: 首页 > 知识库问答 >
问题:

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

公良昕
2023-03-14

我显示的三维对象中的ArFra缔约国。因此,我把. obj文件和. mtl文件放在sam部长级文件夹中。然后右键单击obj文件,选择导入Sceneform Asset以添加. 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文件?(导入场景表单资产)

如果你知道的话,请帮帮我。

共有3个答案

锺离良哲
2023-03-14

使用以下代码在ARCore中调整模型的大小:

TransformationSystem transSys;
transSys = MainActivity.getArFragment().getTransformationSystem();
TransformableNode myNode = new TransformableNode(transSys);

myNode.setLocalScale(new Vector3(0.25f, 0.25f, 0.25f));
myNode.setParent(anchorNode);
//myNode.setParent(sceneView.getScene());
myNode.setRenderable(myModelRenderable);

sceneView.getScene().addChild(node);
myNode.select();
羊昊苍
2023-03-14

不同的方法取决于您的项目:

  1. 更改缩放值,重新生成sfb文件
  2. 将您的节点放入TransformableNode中,让ScaleController扩展您的模型
  3. 直接使用setLocalScale或setWorldScale
  4. 缩放. obj文件,然后生成. sfa和. sfb文件
萧宏峻
2023-03-14

对象缩放由缩放控制器更改。通过设置minScale和maxScale值。在设置父锚点节点之前。见下面的例子。

      // 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();
 类似资料:
  • 了解如何在 Adobe XD 中选择对象、调整对象的大小和旋转对象。 选择对象 您需要先将一个对象与其周围的对象区分开来,然后才能修改该对象。只需选择该对象,即可加以区分。在您选择了对象或者对象的一部分之后,您可以根据需要对其进行编辑。 单击选择工具,当光标变为指针时,单击对象或对象组。  如需选择多个对象,请使用选择工具在对象周围绘制选框,或按住 Shift 键并单击对象。  如需选择组中的对象

  • 问题内容: 如何调整JTextField的大小? 问题答案: 如果看一下Javadoc,您会看到JTextField是从Component派生的,并且具有setSize()方法。如果您没有布局管理器,那就很有用。 如果你 这样做 有一个布局管理器,则有必要对setPreferredSize() / / 是要走的路。

  • 问题内容: 我正在制作一个具有以下布局()的Java Swing应用程序: 当用户添加或删除图标时,其他图标应缩小或增长。 我的问题很简单:我有一个包含;如何调整此图标的大小? 问题答案: 调整图标大小并不容易。您需要使用Java的2D图形来缩放图像。第一个参数是Image类,您可以从类中轻松获取。您可以使用class加载图像文件,然后只需调用getter方法即可获取图像。

  • 我有下面的代码,它设置了一个特定大小的窗口。它还从外部URL加载图像。

  • 在javaFX中,调整画布大小没有这样的方法,唯一的解决方案是从画布扩展。 “从画布扩展”是使画布可调整大小的唯一解决方案吗?因为这个解决方案只有在我们不想使用FXML的情况下才起作用,如果我们在FXML中声明一个画布,我们如何使它可以调整大小? 这是我的代码: