SideFX Houdini를 사용하여 포인트 클라우드를 Dynamics 365 Guides 또는 Power Apps로 만든 앱의 혼합 현실 구성 요소에 사용할 최적화된 3D 개체로 변환
이 자습서에서는 다음 작업에 대한 단계별 지침을 제공합니다.
포인트 클라우드를 3D 개체로 변환합니다.
Dynamics 365 혼합 현실 애플리케이션에 대한 성능 목표와 일치하도록 다각형 수를 줄여 3D 개체를 최적화합니다.
최적화된 3D 개체를 Dynamics 365 Guides 또는 Power Apps로 만든 앱의 혼합 현실 구성 요소에 사용할 수 있는 .glb 파일로 내보냅니다.
향후 포인트 클라우드를 빠르게 최적화할 수 있도록 처리 파이프라인 템플릿을 생성합니다.
이 자습서는 SideFX Houdini를 Microsoft Dynamics 365 Guides 및 Power Apps에서 사용하는 방법을 소개하는 목적만 있습니다. 타사 애플리케이션을 사용하는 경우 사용자와 타사 간의 사용 약관이 적용됩니다. Microsoft Corporation은 SideFX의 관계사 또는 파트너가 아니며 SideFX 또는 동사 제품을 보증하거나 후원하지 않습니다. 3D 개체를 준비할 때 사용할 수 있는 다른 콘텐츠 생성 애플리케이션이 여러 개 있습니다.
Houdini란?
Houdini는 3D 절차 콘텐츠를 생성하기 위한 도구입니다. 비파괴 노드 기반 도구 시스템을 사용하여 프로세스 파이프라인 및 3D 콘텐츠를 설계합니다.
환경 설정
환경을 설치하려면 다음 작업을 완료해야 합니다.
SideFX Labs 확장을 설치합니다.
사진 측량을 위한 AliceVision을 설정합니다.
SideFX Labs 확장 설치
SideFX Labs는 Houdini를 보다 빠르게 시작하고 실행할 수 있는 도구의 테스트 공간입니다. 이 무료 도구 모음에는 포인트 클라우드를 최적화된 3D 개체로 변환하는 데 유용한 도구가 포함되어 있습니다. SideFX Labs를 사용하려면 Houdini 18 이상을 사용해야 합니다.
SideFX는 이러한 도구를 설치하는 데 도움이 되는 자습서 동영상을 제공합니다.
참고
SideFX Labs를 설치하기 전에 Houdini를 설치해야 합니다. Houdini를 설치하는 방법을 자세히 알아보세요.
Houdini를 엽니다.
SideFX Labs를 설치하려면 Houdini 창 상단의 더하기 기호()를 선택하고 Shelves를 선택한 다음 SideFX Labs 확인란을 선택합니다.
창 상단 근처에 나타나는 도구 모음에서 도구 집합 업데이트를 선택하여 설치 프로그램을 엽니다.
업데이트를 선택하여 도구를 설치합니다.
설치에 성공하면 도구 모음에 더 많은 도구가 나타납니다. 그러면 이 자습서를 계속할 수 있습니다.
사진 측량을 위한 AliceVision 설정
AliceVision은 Mikros Image에서 개발한 사진 측량 컴퓨터 비전 프레임워크입니다. 3D 재구성 및 카메라 추적 알고리즘을 제공합니다. AliceVision 및 AliceVision 플러그인에 대해 자세히 알아보세요.
Houdini용 AliceVision 플러그인을 설치 및 설정하는 방법에 대한 자세한 내용은 SideFX 자습서를 참조하세요.
포인트 클라우드를 Houdini로 가져오기
Houdini는 PLY 파일 형식의 포인트 클라우드 파일을 가져올 수 있습니다. 파일이 PTS 파일 형식인 경우 수동으로 PLY 형식으로 변환할 수 있습니다.
.pts 파일을 .ply 파일로 변환
선택한 파일 편집기에서 .pts 파일을 열고 다음 헤더를 추가합니다.
************************ ply format ascii 1.0 element vertex 534993 property float x property float y property float z property uchar intensity property uchar red property uchar green property uchar blue end_header ************************
헤더에서 요소 꼭짓점 옆의 값 534993을 .pts 파일의 맨 위에 원래 표시된(지금은 헤더 바로 뒤에 오는) 값으로 바꿉니다.
이 값은 포인트 클라우드의 총 포인트 수입니다.
헤더 뒤의 원래 값을 제거합니다. 다음 표는 위의 변경을 수행하기 전과 후의 파일을 나란히 비교한 것입니다. 요소 꼭짓점 값이 빨간색으로 강조 표시되어 있습니다.
.pts 파일의 맨 위 .ply 파일의 맨 위 파일을 .ply 파일 이름 확장명으로 저장합니다.
.ply 파일 가져오기
Houdini를 엽니다. 새 장면이 자동으로 생성됩니다. 이 절차에서는 포인트 클라우드를 3D 개체로 처리하는 일련의 노드를 만듭니다. 이러한 노드는 Houdini 창의 오른쪽 아래 창에 만들어집니다.
오른쪽 아래 창을 마우스 오른쪽 버튼으로 클릭하여 TAB 메뉴를 엽니다. (또는 Tab 키를 누릅니다.)
TAB 메뉴에서 가져오기 > 파일을 선택한 다음 지오메트리 창을 선택하여 노드를 배치합니다.
file1 노드 중간을 두 번 클릭(또는 I 키 누름)하여 노드의 파일 선택 부분으로 드릴다운하고 파일 선택기 버튼을 선택한 다음 가져올 파일을 선택합니다.
나타나는 파일 브라우저에서 가져오려는 .ply 포인트 클라우드 파일의 위치를 찾아 파일을 선택한 다음 수락을 선택합니다.
창의 주요 부분에 포인트 클라우드가 나타납니다. 포인트 클라우드가 보이지 않는 경우 전체를 볼 수 있을 때까지 마우스 휠을 사용하여 축소해 보세요.
포인트 클라우드 준비
포인트 클라우드 방향 변경
포인트 클라우드를 처음 가져올 때 방향이 잘못된 경우가 있습니다. 노드 트리에 변환 노드를 추가하여 방향을 수정할 수 있습니다.
지오메트리 창을 마우스 오른쪽 버튼으로 클릭하여 TAB 메뉴를 연 다음 조작 > 변환을 선택하여 변환 노드를 추가합니다.
file1 노드의 맨 아래에 있는 점에서 transform1 노드의 맨 위에 있는 점까지 끕니다. 이러한 방식으로 file1 노드의 출력을 transform1 노드의 입력에 연결합니다. 그런 다음 transform1 노드의 오른쪽을 선택합니다. transform1 노드의 오른쪽이 파란색이 되고 노드가 창의 주요 부분에서 활성화되어 방향이 변경된 모델을 볼 수 있습니다.
팁
Houdini의 특정 프로세스 단계 동안 모델을 보려면 해당 노드의 오른쪽을 클릭합니다. 이 기능은 이전 상태의 3D 개체를 보면서 해당 상태에서 발생한 변경 내용을 편집해야 하는 경우에 유용합니다.
모델 회전을 수정하려면 노드 창 위의 옵션 창에서 회전 열에 값을 추가합니다. 대개의 경우에 x 값을 270으로 설정하여 모델을 올바른 위치로 회전할 수 있습니다. 그러나 이 값이 유효하지 않으면 다른 값을 시도하세요.
포인트 클라우드를 원점 위로 가운데 배치하려면 변환 노드 뒤에 축 정렬 노드를 추가합니다. 노드를 배치하려면 지오메트리 창 위로 마우스를 이동하고 Tab 키를 눌러 TAB 메뉴를 연 다음 Labs > Geo > Labs Axis Align을 선택합니다.
transform1 노드의 맨 아래에 있는 출력 점에서 axis_align1 노드의 맨 위에 있는 입력 점까지 끌어 연결합니다. 포인트 클라우드를 원점(이상적인 위치) 위에 배치하려면 기본값을 그대로 둡니다.
포인트 클라우드를 정리하여 스트레이 포인트 제거
포인트 클라우드에 제거하려는 스트레이 포인트가 있는 경우 개별 포인트 또는 포인트 그룹을 선택하고 삭제할 수 있습니다.
지오메트리 선택 방법을 포인트로 변경하고 선택 도구를 올가미 선택으로 변경합니다.
참고
원하는 경우 다른 방법을 사용할 수 있습니다.
삭제할 포인트를 선택합니다.
Delete 키를 누릅니다. 새로운 blast1 노드가 나타납니다. 이 노드의 맨 위에 있는 입력 점은 작업 중이던 마지막 노드의 맨 아래에 있는 출력 점에 연결됩니다.
결과에 만족할 때까지 계속해서 포인트를 제거하세요. 삭제할 때마다 언제라도 보거나 제거할 수 있는 새 폭발 노드가 추가됩니다.
포인트 클라우드를 메시로 변환
glTF 및 실시간 렌더링 애플리케이션은 모두 개체를 다각형 표면으로 표현해야 합니다. 입자 유체 표면 명령을 사용하여 포인트를 다각형 지오메트리로서의 논리적 표면에 연결할 수 있습니다.
지오메트리 창을 선택하여 TAB 메뉴를 연 다음 유체 > 입자 유체 표면을 선택합니다. 그런 다음 노드를 선택하고 지오메트리 창에 추가합니다.
transform1 노드의 맨 아래에 있는 출력 점에서 particlefluidsurface1 노드의 왼쪽 상단에 있는 입력 점까지 끌어 연결합니다. 그런 다음 pariclefluidsurface1 노드의 오른쪽을 선택하여 창의 주요 부분에서 노드를 활성화합니다.
창의 주요 부분에 포인트 클라우드가 메시로 나타납니다. 표면 처리 탭이 지오메트리 창 위 오른쪽 상단 창에서 선택됩니다.
색상 데이터가 포인트 클라우드의 포인트와 연결된 경우 특성 전송 필드 값의 끝에 문자 Cd를 추가하여 색상 특성을 사용할 수 있습니다. 그러면 색상이 메시에 표시됩니다.
다음 그림과 같이 메시에 구멍이 있는 경우 오른쪽 상단 창에서 입자 분리 및 Voxel 배율 슬라이더를 조정하여 문제를 해결합니다.
데시메이션을 위해 메시를 준비하려면(전체 프로세스에서 다음 단계) 출력 아래에서 변환 대상 필드의 값을 표면 다각형 수프에서 표면 다각형으로 변경합니다. 이러한 방식으로 메시를 리메시하고 제거할 수 있습니다.
지오메트리 창을 마우스 오른쪽 버튼으로 클릭하여 TAB 메뉴를 연 다음 다각형 > 리메시를 선택합니다. 메시를 삼각형으로 변환하기 위해 리메시 노드가 추가됩니다. 이러한 방식으로 3D 개체를 성능 요구 사항을 충족하는 다각형 수로 데시메이트할 수 있습니다.
particlefluidsurface1 노드의 맨 아래에 있는 출력 점에서 리메시 노드의 왼쪽 상단에 있는 입력 점까지 끌어 연결합니다. remesh 노드의 중간을 선택하여 지오메트리 창 위의 창에서 활성화합니다. 그런 다음 remesh 노드의 오른쪽을 선택하여 창의 주요 부분에서 모델을 활성화합니다. 이제 리메시의 속성을 편집할 수 있으며 창의 주요 부분에 있는 모델에 이러한 편집 내용이 반영됩니다.
요소 크기 조정 아래의 옵션으로 실험하여 원하는 결과를 얻을 수 있습니다. 가장자리 길이 필드에서 기본값(균일)을 유지하거나 적응을 선택하고 상대 밀도 슬라이더(및 기타 옵션)를 사용하여 원하는 메시를 생성합니다.
성능 향상을 위한 3D 개체 데시메이션
애플리케이션별 목표를 달성하려면 3D 개체를 데시메이트해야 할 수도 있습니다. 데시메이션은 모델의 표면 다각형을 다시 계산하여 더 적은 수의 다각형을 사용하여 유사한 모양을 만드는 프로세스입니다. 이 프로세스에서 시각적 충실도가 저하되지만 성능 향상에 도움이 됩니다. 다음 표는 HoloLens에서 낮은 장면 복잡성에 사용되는 고품질 모델과 높은 장면 복잡성에 사용되는 저품질 모델을 나란히 비교한 것입니다.
하이 폴리곤 3D 개체 | 로우 폴리곤 3D 개체 |
---|---|
500,000개 삼각형 | 8,000개 삼각형 |
모델 데시메이트
지오메트리 창에서 Tab 키를 눌러 TAB 메뉴를 연 다음 다각형>PolyReduce를 선택하여 지오메트리 창에 PolyReduce 노드를 배치합니다.
remesh 노드의 맨 아래에 있는 출력 점에서 polyreduce1 노드의 왼쪽 상단에 있는 입력 점까지 끌어 연결합니다. polyreduce1 노드의 중간을 선택한 다음 오른쪽을 선택하여 창의 주요 부분에서 노드를 활성화합니다.
감소량 아래의 목표 필드에서 출력 다각형 수를 선택한 다음 유지할 수 슬라이더를 사용하여 성능 요구 사항을 충족하면서 허용 가능한 시각적 충실도를 유지하도록 다각형 수를 조정합니다.
이제 포인트 클라우드가 최적화된 3D 메시로 변환되었습니다. 다음 단계에서는 3D 개체에 고해상도 텍스처를 베이크하여 데시메이션 이전에 존재하던 시각적 충실도를 복구합니다.
고해상도 텍스처를 로우 폴리곤 메시에 베이킹
메시에서 다각형 수를 줄이는 단점 한 가지는 디테일이 상당 부분 손실될 수 있다는 것입니다. 디테일을 약간 복원하려면 디테일을 캡처하여 로우 폴리곤 모델 위에 겹쳐진 텍스처로 적용할 수 있습니다. 텍스처 베이킹이라고 하는 이 과정에서는 하이 폴리곤 모델에서 모든 표면의 사진을 찍고 로우 폴리곤 모델 위에 씌우는 "퀼트"로 결합합니다. 이러한 방식으로 로우 폴리곤 모델의 성능을 얻으면서 하이 폴리곤 모델의 더 세밀한 디테일을 일부 유지합니다.
텍스처 좌표(UV라고도 함)는 모델의 지오메트리에 저장되는 숫자 쌍(U 및 V)입니다. 이러한 숫자는 2D 이미지를 3D 표면에 매핑할 수 있는 방식을 나타내며 표면 속성을 이미지로 정의할 수 있습니다. 이미지는 단순한 데칼이거나 거칠기 및 금속성과 같은 복잡한 재료 구성 요소일 수 있습니다. 메시에 대한 UV 위치를 수동으로 생성하거나 프로세스를 반자동 또는 자동으로 수행할 수 있습니다. AutoUV 표면 연산자는 UV를 생성할 수 있는 Houdini의 한 도구입니다. 이 도구는 UV 생성 중에 몇 가지 자동 방법을 사용합니다.
텍스처 베이킹
지오메트리 창을 마우스 오른쪽 버튼으로 클릭하여 TAB 메뉴를 연 다음 Labs>UV>Labs Auto UV를 선택하여 AutoUV 노드를 장면에 추가합니다.
방법 아래에서 방법 필드의 값을 UV 래핑 해제로 변경합니다.
polyreduce1 노드의 맨 아래에 있는 출력 점에서 autouv1 노드의 맨 위에 있는 입력 점까지 끌어 연결합니다.
"이전" 및 "이후" 개체를 나란히 보려면 뷰포트 레이아웃 버튼을 선택한 다음 나란히 있는 두 개의 보기를 선택합니다.
창의 주요 부분에 있는 드롭다운 메뉴에서 보기 설정 > UV 뷰포트를 선택합니다.
래핑 해제된 UV는 왼쪽에, 3D 개체는 오른쪽에 나타납니다.
지오메트리 창에서 Labs>Output>Labs Maps Baker를 선택하여 maps_baker1 노드를 추가합니다.
드래그하여 autouv1 노드 하단의 출력 점을 maps_baker1 노드의 왼쪽 상단에 있는 입력 점에 연결합니다. (왼쪽 상단 점은 저해상도 입력 노드입니다.)
끌어서 particlefluidsurface1 노드 하단의 출력 점을 maps_baker 1 노드의 오른쪽 상단에 있는 입력 점에 연결합니다. (오른쪽 상단 점은 고해상도 입력 노드입니다.)
maps_baker1 노드를 선택한 다음 베이킹에서 프리뷰 채널 필드의 값을 확산으로 변경합니다. 베이킹 옵션 아래에서 확산 맵 필드를 확산으로 설정합니다.
팁
프로젝트를 특정 폴더에 저장하려면 이전 그림에 표시된 출력 디렉터리 필드 옆에 있는 파일 선택기 버튼을 선택합니다. 텍스처를 베이크하면 .png 텍스처 파일이 저장된 프로젝트의 루트 폴더에 생성된 render 폴더에 저장됩니다. 프로젝트를 자체 폴더에 저장하면 베이크된 텍스처를 쉽게 찾을 수 있습니다.
maps_baker1 노드를 선택한 다음 옵션 창에서 베이킹을 선택합니다.
지오메트리 창을 마우스 오른쪽 버튼으로 클릭하여 TAB 메뉴를 연 다음 관리자>재료 네트워크를 선택하여 장면에 matnet1 노드를 추가합니다.
matnet1 노드를 두 번 클릭하여 VEX Builder 창을 엽니다.
VEX Builder 창을 마우스 오른쪽 버튼으로 클릭한 다음 셰이더 > 원칙 셰이더를 선택하여 원칙 셰이더 재료를 추가합니다.
옵션 창의 표면 탭에서 슬라이더를 사용하여 거칠기 필드의 값을 0.6으로 변경하고 금속성 필드의 값을 0.1로 변경합니다. (이러한 필드를 원하는 대로 설정할 수 있지만 기본값과 함께 사용할 때 이러한 값이 좋은 출발점이라는 것이 확인되었습니다.)
텍스처 탭의 기본 색상 아래에서 텍스처 사용 확인란을 선택합니다. 그런 다음 파일 선택기 단추를 선택하고 이전에 렌더링 폴더에 저장한 *_color.png 텍스처 파일을 선택합니다. 이제 Principled Shader를 사용할 준비가 되었습니다.
참고
얼마든지 추가로 재료를 수정할 수 있습니다. 이 자습서에서는 이 구성으로 충분합니다.
VEX Builder 창에서 뒤로(왼쪽 화살표) 버튼을 선택하여 지오메트리 창으로 돌아갑니다.
재료 > 재료를 선택하여 지오메트리 창에 재료 노드를 배치합니다.
autouv1 노드의 맨 아래에 있는 출력 점에서 material1 노드의 맨 위에 있는 입력 점까지 끌어 연결합니다.
material1 노드를 선택하고 연산자 선택기 버튼을 선택합니다. 그런 다음 연산자 선택 대화 상자에서 file1>matnet1>principledshader1을 선택하여 이전에 만든 원칙 셰이더를 선택합니다.
그런 다음 노드의 오른쪽을 선택하여 창의 주요 부분에서 활성화합니다.
텍스처는 로우 폴리곤 3D 개체 위에 렌더링됩니다. 결과가 만족스러우면 다음 단계로 이동합니다.
모델을 .glb 파일로 내보내기
이 단계에서는 모델을 Dynamics 365 Guides 및 Power Apps에서 사용할 수 있도록 .glb 파일로 내보냅니다.
지오메트리 창을 마우스 오른쪽 버튼으로 클릭하여 TAB 메뉴를 연 다음 내보내기>ROP GLTF 출력을 선택합니다.
material1 노드 하단의 출력 도트를 rop_gltf1 노드 상단의 입력 도트로 드래그하여 연결합니다.
상단 창에서 내보내기 유형 필드의 값을 glb로 변경합니다.
출력 파일 필드 옆에 있는 파일 선택기 버튼을 선택한 다음 .glb 파일의 이름과 대상을 입력합니다. 파일 이름의 끝에 .glb를 반드시 추가해야 합니다. 완료되면 수락을 선택합니다.
디스크로 렌더링을 선택하여 내보내기를 완료하고 .glb 파일을 만듭니다.
다른 포인트 클라우드에 대한 설정을 재사용하기 위한 템플릿 만들기
시간과 노력을 절약하기 위해 템플릿을 만들 수 있습니다. 이러한 방식으로 한 포인트 클라우드에 대해 작성한 설정을 다른 포인트 클라우드에 사용할 수 있습니다. 여전히 수동으로 베이킹을 선택해야 하고 몇 가지 값을 조정해야 할 수 있지만 대부분의 처리를 자동화할 수 있습니다.
템플릿 만들기
현재 사용중인 지오메트리를 기본 지오메트리로 바꿉니다. 이 단계에서는 템플릿 파일을 빠르게 로드되도록 경량화할 수 있습니다.
지오메트리 창에서 파일 노드의 중간을 선택하여 상단 창의 파일 메뉴로 전환합니다.
지오메트리 파일 필드의 값을 default.bgeo로 변경한 다음 지오메트리 다시 로드를 선택합니다.
지오메트리가 다시 그려져 이제 일반 큐브가 됩니다.
파일 이름을 Template과 같이 일반적인 것으로 변경합니다.
파일 > 저장을 선택하고 기억하기 쉬운 이름(예: Prep_Template)을 입력합니다.
Houdini를 닫습니다.
템플릿 사용
Houdini를 열고 파일 > 열기를 선택한 다음 방금 만든 템플릿을 선택합니다.
지오메트리 창에서 파일 노드의 중간을 선택하여 상단 창의 파일 메뉴로 전환합니다. 그런 다음 지오메트리 파일 필드 옆에 있는 파일 선택기 버튼을 선택하여 .ply 포인트 클라우드 파일을 선택합니다.
지오메트리 다시 로드를 선택하여 포인트 클라우드를 장면에 로드합니다.
maps_baker1 노드로 이동한 다음 베이킹을 선택하여 3D 개체의 새 텍스처를 베이킹합니다.
material1 노드의 오른쪽을 선택하여 베이크된 모델을 확인합니다.
다음 단계 중 하나를 따르세요.
3D 개체에 만족하면 rop_gltfB 노드로 이동한 다음 디스크로 렌더링을 선택하여 3D 개체를 내보냅니다.
3D 개체의 모양이 만족스럽지 않다면 particlefluidsurface1, remesh 및 polyreduce1 노드에 대한 설정을 조정합니다. 모델이 만족스러우면 텍스처를 다시 베이크하고 3D 개체를 내보냅니다.
Dynamics 365 Guides 또는 Power Apps에서 3D 개체 보기
3D 개체를 준비한 후 다음 링크를 사용하여 Dynamics 365 Guides 또는 Power Apps에서 모델 사용에 대해 자세히 알아보세요.
추가 정보
이 자습서의 스크린샷은 Houdini 소프트웨어를 사용하는 방법에 대한 명확한 지침을 제공하기 위해 Houdini 소프트웨어 프로그램에서 가져온 것입니다. SideFX Houdini에 대해 자세히 알아보세요.
Microsoft Corporation은 Houdini의 사용 또는 본 지침의 활용으로 인해 발생하는 어떤 종류의 손해에 대해서도 책임을 지지 않으며 명시적으로 모든 책임을 부인합니다. 이 문서는 Microsoft 고객에게 일반 정보를 제공하기 위해서만 작성된 것이며 개별화된 비즈니스 계획 또는 사양은 고려하지 않습니다.
이 문서에서 상표 이름 및 이미지는 정보 제공 및 설명 목적으로만 사용되며 Microsoft Corporation은 이러한 사용에 대한 상업적 주장을 하거나 후원 또는 보증을 암시하지 않습니다.