Как мне изменить размер объекта в ARCore? - PullRequest
0 голосов
/ 10 октября 2018

Я показываю 3D-объект в ArFragment.Поэтому я поместил файл .obj и файл .mtl в папку sampledata.И я щелкаю правой кнопкой мыши на файле 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",
}

Я думаю, что он может быть изменен в масштабе, но я изменяю значение, оно не меняется.тот же размер

Итак, как я могу изменить размер трехмерного объекта?

Есть ли какие-либо проблемы при добавлении файла трехмерного объекта в файл .sfa / .sfb? (Импорт объекта сцены)

Если вы знаете об этом, пожалуйста, помогите мне.

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

Масштабирование объекта изменяется контроллером масштабирования.Установив значения 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());

        node.getScaleController().setMaxScale(0.01f);
        node.getScaleController().setMinScale(0.01f);

        node.setParent(anchorNode);
        node.setRenderable(renderable);
        node.select();
0 голосов
/ 22 апреля 2019

Используйте следующий код для изменения размера вашей модели в 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();
0 голосов
/ 06 ноября 2018

Различные подходы в зависимости от вашего проекта:

  1. Измените значение масштаба, восстановите ваши файлы sfb
  2. Поместите свой узел в TransformableNode и позвольте ScaleController масштабирование вашей модели
  3. Непосредственное использование setLocalScale или setWorldScale
  4. Масштабирование файла .obj, а затем создание файлов .sfa и .sfb
...