혼합 현실을 사용하여 개체가 공간에 맞는지 테스트

측정 카메라 컨트롤을 사용하여 알려진 크기의 물체가 특정 공간에 맞는지 여부를 결정할 수 있습니다. 이 문서에서는 이를 수행하는 캔버스 앱을 만들 것입니다.

Mixed Reality(MR) 컨트롤은 표면이 평평한 조명이 밝은 환경에서 가장 잘 작동합니다. 추적은 LIDAR 지원 장치에서 더 좋습니다.

캔버스 앱에 최소 차원 입력 필드 추가

먼저 빈 캔버스 앱을 만듭니다. 그런 다음 사용자가 테스트할 최소 차원(즉, 맞추려는 개체를 담을 수 있는 가장 작은 공간)를 입력할 수 있는 방법을 추가합니다.

  1. 빈 캔버스 앱을 만듭니다.

  2. 삽입 탭을 선택합니다. 화면에 텍스트 레이블 컨트롤 세 개를 입력 및 배치합니다.

  3. 레이블의 Text 속성을 각각 Minimum Width, Minimum Depth, 및 Minimum Height로 변경합니다.

    속성과 함께 표시된 Microsoft Power Apps Studio에서 준비 중인 텍스트 레이블의 스크린샷입니다.

  4. 삽입 탭을 선택합니다. 세 개의 텍스트 입력 컨트롤을 삽입하고 이를 세 개의 레이블 오른쪽에 배치합니다.

  5. 텍스트 입력 컨트롤 이름을 minWidth, minDepth, 및 minHeight로 바꿉니다.

    속성과 함께 표시된 Microsoft Power Apps Studio에서 준비 중인 텍스트 입력 컨트롤의 스크린샷입니다.

  6. 세 가지 텍스트 입력 컨트롤을 모두 선택합니다. 그룹의 Format 속성을 Number로 변경하고 Default 속성을 1.0으로 설정합니다.

    선택된 그룹의 속성과 함께 표시된 Microsoft Power Apps Studio에서 준비 중인 세 텍스트 입력 컨트롤의 스크린샷입니다.

측정 카메라 컨트롤 추가 및 바인딩

다음으로 사용자가 3차원 공간을 측정할 수 있도록 측정 카메라 컨트롤을 추가합니다. 나중에 사용할 수 있도록 측정값을 데이터 테이블에 바인딩합니다.

  1. 삽입 탭을 선택하고 미디어를 확장합니다.

  2. 측정 카메라를 선택하여 앱 화면에 컨트롤을 배치합니다. 화면 하단 근처에 컨트롤을 끌어옵니다.

  3. 컨트롤의 속성을 다음과 같이 변경합니다.

    속성 이름 위치
    측정 단위 피트 또는 미터 속성 탭에서 선택합니다
    측정 유형 부피 속성 탭에서 선택합니다
    상자 그리기 사용 속성 탭에서 선택합니다
    항목 Table({label:"Test Volume"}) 고급 탭에 입력합니다
    ItemsLabels "레이블" 고급 탭에 입력합니다
    OnMixedRealitySelect Set(testVolume, LookUp(MeasureInMR1.Measurements, Label = "Test Volume")); 고급 탭에 입력합니다

측정 카메라 컨트롤의 Items, ItemsLabels, 및 OnMixedRealitySelect 속성은 완료되면 다음 예와 같아야 합니다.

Items 및 ItemsLabels 속성과 함께 표시된 Microsoft Power Apps Studio에서 준비 중인 Measure in 3D 컨트롤의 스크린샷입니다.

OnMixedRealitySelect 속성과 함께 표시된 Microsoft Power Apps Studio에서 준비 중인 Measure in 3D 컨트롤의 스크린샷입니다.

Items의 공식은 "Test Volume"이라는 데이터 테이블에서 측정된 공간의 차원을 캡처합니다. OnMixedRealitySelect의 공식은 "testVolume"이라는 변수를 "Test Volume" 테이블에 캡처된 값으로 설정합니다.

결과를 표시합니다

마지막으로 텍스트 레이블을 추가하여 수행된 측정값과 테스트 결과(즉, 개체가 측정된 공간에 맞는지 여부)를 표시합니다.

  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"))
      

      이 공식은 맞추려는 개체를 유지하는 데 필요한 최소 차원을 기반으로 테스트의 성공 여부에 따라 레이블 텍스트를 설정합니다. 측정이 캡처되지 않았거나 오류가 발생하여 테스트가 실행되지 않은 경우 레이블 텍스트에 이를 반영합니다.

      수식 입력줄의 Text 속성 및 고급 속성 탭과 함께 표시되는 Microsoft Power Apps Studio에서 구성 중인 텍스트 레이블 컨트롤의 스크린샷입니다.

    • 두 번째 레이블:

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

      이 공식은 레이블 텍스트를 "Bounding Width:"로 설정하고 그 뒤에 측정된 공간의 너비 차원을 설정합니다.

    • 세 번째 레이블:

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

      이 공식은 레이블 텍스트를 "Bounding Depth: "로 설정하고 그 뒤에 측정된 공간의 깊이 차원을 설정합니다.

    • 네 번째 레이블:

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

      이 공식은 레이블 텍스트를 "Bounding Height: "로 설정하고 그 뒤에 측정된 공간의 높이 차원을 설정합니다.

앱 화면은 다음과 같이 표시됩니다.

최종 앱 화면의 스크린샷입니다.

앱 테스트

프리뷰 버튼을 선택하여 앱을 프리뷰 모드로 실행합니다. Measuring camera을 선택하여 데이터로 레이블을 채웁니다. 레이블 바인딩이 작동하는지 확인하려면 텍스트 입력 필드에 새 값을 입력하세요.

새로운 최소 차원을 입력한 후 프리뷰 모드의 앱 화면 스크린샷입니다.

테스트를 수행할 때 Bounding WidthBounding Depth 값을 서로 바꿀 수 있습니다.

앱을 저장 및 게시합니다. 혼합 현실 지원 디바이스에서 열어 지정된 치수의 개체가 캡처된 측정 범위 내에 맞는지 여부를 테스트할 수 있습니다.

데이터 원본 필터링

우리가 만든 앱은 앱이 실행될 때 사용자가 지정한 단일 차원 집합을 테스트합니다. 그러나 수식을 Filter 조건자로 적용하여 원하는 데이터 원본의 필터에 대해 테스트하도록 확대할 수 있습니다.

예를 들어 앱이 세 개의 열, 즉 너비, 깊이, 높이(각 제품의 차원에 상응함)이 있는 제품이라는 이름의 Dataverse 테이블에 대한 참조를 포함한다고 가정합시다. 측정된 부피에 맞는 측정값만 표시하도록 컬렉션을 필터링하려면 다음 수식을 적용할 수 있습니다.

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

참조 항목

참고

귀사의 설명서 언어 기본 설정에 대해 말씀해 주시겠습니까? 간단한 설문 조사에 응해주세요. (이 설문 조사는 영어로 되어 있습니다.)

이 설문 조사는 약 7분 정도 걸립니다. 개인 데이터는 수집되지 않습니다(개인정보처리방침).