Проверьте, поместится ли объект в пространстве, используя смешанную реальность

Вы можете использовать элемент управления Измерение камерой, чтобы определить, поместится ли объект известного размера в определенном пространстве. В этой статье мы создадим приложение на основе холста, чтобы сделать именно это.

Совет

Элементы управления mixed-reality (MR) лучше всего работают в хорошо освещенных средах с плоской текстурой поверхностей. Отслеживание лучше на устройствах с поддержкой LIDAR.

Добавление полей ввода минимальных размеров в приложение на основе холста

Сначала создадим пустое приложение на основе холста. Затем мы добавим способ, позволяющий пользователю вводить минимальные размеры для проверки (то есть наименьшее пространство, которое будет содержать объект, который мы хотим разместить).

  1. Создайте пустое приложение на основе холста.

  2. Выберите вкладку Вставка, вставьте и разместите три элемента управления Текстовая подпись на экране.

  3. Измените свойство Text меток на Минимальная ширина, Минимальная глубина и Минимальная высота соответственно.

    Снимок экрана метки текста в процессе разработки в Microsoft Power Apps Studio, рядом со свойствами.

  4. Выберите вкладку Вставка, вставьте три элемента управления Ввод текста и разместите их справа от трех меток.

  5. Переименуйте элементы управления Ввод текста вводом текста в minWidth, minDepth и minHeight соответственно.

    Снимок экрана элемента управления Ввод текста в процессе разработки в Microsoft Power Apps Studio, рядом со свойствами.

  6. Выберите все три элемента управления Ввод текста. Изменить свойство Format группы на Количество и установите свойство Default как 1,0.

    Снимок экрана трех элементов управления Ввод текста в процессе разработки в Microsoft Power Apps Studio, рядом со свойствами выбранной группы.

Добавьте и привяжите элемент управления Измерение камерой

Далее мы добавим элемент управления Измерение камерой, чтобы пользователь мог измерять трехмерное пространство. Мы привяжем измерения к таблице данных для последующего использования.

  1. Выберите вкладку Вставить и разверните Мультимедиа.

  2. Выберите Измерение камерой, чтобы разместить элемент управления на экране приложения. Перетащите элемент управления в нижней части экрана.

  3. Измените свойства элемента управления следующим образом:

    Имя свойства Значение Где
    Unit of measurement Футы или метры Выберите на вкладке Свойства
    Measurement type Объем Выберите на вкладке Свойства
    Box draw Вкл Выберите на вкладке Свойства
    Items Table({label:"Test Volume"}) Войдите на вкладку Дополнительно
    ItemsLabels "метка" Войдите на вкладку Дополнительно
    OnMixedRealitySelect Set(testVolume, LookUp(MeasureInMR1.Measurements, Label = "Test Volume")); Войдите на вкладку Дополнительно

Свойства Items, ItemsLabels и OnMixedRealitySelect элемента управления Измерение камерой должны выглядеть, как в следующих примерах:

Снимок экрана элемента управления Measure in 3D в процессе разработки в Microsoft Power Apps Studio, рядом со свойствами Items и ItemsLabels.

Снимок экрана элемента управления Measure in 3D в процессе разработки в Microsoft Power Apps Studio, рядом со свойством OnMixedRealitySelect.

Формула в Items получает размеры измеренного пространства в таблице данных под названием «Тестовый объем». Формула в OnMixedRealitySelect устанавливает переменную с именем testVolume со значениями, полученными в таблице «Тестовый объем».

Показать результаты

Наконец, мы добавим текстовые метки для отображения выполненных измерений и результатов теста (то есть, поместится ли объект в измеренном пространстве).

  1. Выберите вкладку Вставка, вставьте и разместите четыре элемента управления Текстовая подпись на экране.

  2. Измените свойство Text элементов управления Подпись следующим образом. (Совет: скопируйте каждую формулу и вставьте ее в строку формул или на вкладке свойство Дополнительно в зависимости от того, что вы предпочитаете.)

    • Первая метка:

          If(IsBlankOrError(testVolume), "No Measurement captured",
              If(testVolume.Height >= Value(minHeight.Text) &&
              ((testVolume.BoundingWidth >= Value(minWidth.Text) && testVolume.BoundingDepth >= Value(minDepth.Text)) ||
              (testVolume.BoundingWidth >= Value(minDepth.Text) && testVolume.BoundingDepth >= Value(minWidth.Text))),
              "Fit Test Succeeded", "Fit Test Failed"))
      

      Эта формула устанавливает текст метки в зависимости от того, был ли тест успешным или нет, на основе минимальных размеров, необходимых для размещения объекта, который мы хотим разместить. Если тест не был выполнен из-за того, что измерения не были захвачены или произошла ошибка, текст метки отражает это.

      Снимок экрана элемента управления Текстовая подпись в процессе создания в Microsoft Power Apps Studio со свойством Text в строке формул и на вкладке дополнительных свойств.

    • Вторая метка:

          Concatenate("Bounding Width: ", Text(testVolume.BoundingWidth))
      

      Эта формула задает для текста метки значение «Ширина границы:», за которым следует размер ширины измеряемого пространства.

    • Третья метка:

          Concatenate("Bounding Depth: ", Text(testVolume.BoundingDepth))
      

      Эта формула задает для текста метки значение «Глубина границы:», за которым следует размер глубины измеряемого пространства.

    • Четвертая метка:

          Concatenate("Bounding Height: ", Text(testVolume.Height))
      

      Эта формула задает для текста метки значение «Высота границы:», за которым следует размер высоты измеряемого пространства.

Экран приложения должен выглядеть следующим образом:

Снимок экрана окончательного экрана приложения.

Тестирование приложения

Нажмите кнопку предварительного просмотра, чтобы запустить приложение в режиме предварительного просмотра. Выберите Измерение камерой, чтобы метки были заполнены данными. Чтобы убедиться, что привязки меток работают, введите новые значения в поля ввода текста.

Снимок экрана приложения в режиме предварительного просмотра после ввода новых минимальных размеров.

Значения для Глубина границы и Ширина границы можно поменять местами при выполнении теста.

Сохраните и опубликуйте свое приложение. Откройте его на устройстве с поддержкой смешанной реальности, чтобы проверить, впишется ли объект с указанными размерами в границы любого захваченного измерения.

Фильтрация источника данных

Созданное нами приложение тестирует один набор измерений, которые задает пользователь при запуске приложения. Однако вы можете расширить его, чтобы проверить для любого источника данных, применив формулу как предикат Фильтр.

Например, предположим, что наше приложение содержит ссылку на таблицу Dataverse с именем Продукты, которая включает три столбца Ширина, Глубина и Высота (соответствует размерам каждого продукта). Чтобы отфильтровать коллекцию только по тем измерениям, которые соответствуют измеренному объему, мы можем применить следующую формулу.

    If(IsBlankOrError(testVolume), Products,
    Filter(Products, testVolume.Height >= Height &&
        ((testVolume.BoundingWidth >= Width && testVolume.BoundingDepth >= Depth) ||
        (testVolume.BoundingWidth >= Depth && testVolume.BoundingDepth >= Width))))

См. также

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).