LiDAR 포인트 클라우드 플러그인(LiDAR Point Cloud) 플러그인을 사용하면 언리얼 엔진에서 포인트 클라우드를 임포트, 시각화 및 편집할 수 있습니다. 이 플러그인은 다양한 배색 및 셰이딩 기법도 지원합니다. 다양한 최적화 및 다이내믹 레벨 오브 디테일(Level of Detail, LOD) 스케일링 덕분에 런타임에서도 큰 퍼포먼스 손실 없이 대규모 데이터 세트로 작업할 수 있습니다.
지원되는 포인트 클라우드 파일 포맷
포인트 클라우드 는 각 포인트가 XYZ 좌표와 컬러(선택 사항)로 정의되는 데이터 포인트 세트입니다. 언리얼 엔진은 다음과 같은 포인트 클라우드 파일 포맷을 지원합니다.
확장자 | 설명 |
---|---|
*.xyz , *.pts , *.txt |
ASCII 포인트 클라우드 파일 포맷의 일반 타입은 다음을 포함할 수 있습니다.
기수법은 플로트(예: 0.00892855) 또는 과학적 표기(예: 8.92855E-03)를 사용할 수 있습니다. |
*.las , *.laz |
LAS는 사용자 간에 3D 포인트 클라우드 데이터 인터체인지을 위한 공개 파일 포맷입니다. 주로 LiDAR 포인트 클라우드 데이터 인터체인지을 위해 개발되었지만 3D X, Y, Z 튜플릿의 인터체인지도 지원합니다. 이 바이너리 파일 포맷은 광범위하게 사용되는 독점 시스템과 일반 ASCII 파일 인터체인지 시스템 대신 사용할 수 있습니다. LAZ 파일은 압축된 LAS 파일입니다. 크기가 훨씬 작지만 그만큼 임포트 속도가 느립니다. 언리얼 엔진은 8비트, 12비트 및 16비트 LAS/LAZ 파일을 지원합니다. |
*.e57 |
E57은 포인트 클라우드, 이미지, 메타데이터 같은 3D 이미징 데이터를 저장 및 인터체인지할 수 있게 해주는 컴팩트한 오픈 소스 파일 포맷입니다. |
포인트 클라우드 임포트 및 익스포트하기
다음 방법 중 하나를 사용하여 포인트 클라우드 에셋을 임포트 할 수 있습니다.
-
지원되는 파일 포맷으로 저장된 포인트 클라우드를 콘텐츠 브라우저(Content Browser) 에 드래그합니다.
-
콘텐츠 브라우저 에서 추가/임포트(Add/Import) 를 클릭하고 원하는 파일로 이동하여 선택합니다.
임포트 시 미터가 언리얼 유닛(Unreal Units, UU)으로 변환되며, 1UU는 1cm입니다. 커스텀 임포트 스케일을 사용하려면 LiDAR 포인트 클라우드 플러그인의 '프로젝트 세팅(Project Settings)'을 열고 임포트 스케일(Import Scale) 값을 변경합니다.
기존의 언리얼 익스포트(Unreal Export) 툴을 사용하여 포인트 클라우드 에셋을 ASCII 또는 LAS로 익스포트 할 수 있습니다. 콘텐츠 브라우저 에서 에셋을 우클릭하고 에셋 액션(Asset Actions) > 익스포트(Export) 를 선택합니다.
익스포트 시 언리얼 유닛이 미터로 다시 변환됩니다(0.01을 곱함). 커스텀 익스포트 스케일을 사용하려면 LiDAR 포인트 클라우드 플러그인의 '프로젝트 세팅'을 열고 익스포트 스케일(Export Scale) 값을 변경합니다.
퍼포먼스
퍼포먼스는 주로 동시에 표시될 수 있는 최대 포인트 수를 설정하는 글로벌 포인트 예산 에 의해 정해집니다. 컴포넌트별 예산이 아닌 공유 예산을 사용하면 시스템이 표시되는 모든 컴포넌트 중에서 최적의 포인트를 선택하기 때문에 동시에 다수의 에셋을 효율적으로 렌더링할 수 있습니다. 포인트 예산이 높을수록 퀄리티와 퍼포먼스 비용이 높아집니다. 글로벌 포인트 예산은 VRAM을 절약하고 프레임 레이트를 높여주지만 전체 RAM 사용을 줄여주지는 않습니다.
콘솔 변수를 사용하여 글로벌 포인트 예산을 설정할 수 있습니다. 포인트 예산이 높을수록 포인트 클라우드의 밀도가 높아집니다.
자세한 내용은 LiDAR 포인트 클라우드 플러그인 레퍼런스 페이지의 콘솔 변수 섹션을 참고하세요.
온디맨드 스트리밍
포인트 클라우드를 열 때 언리얼 엔진은 필수 헤더 정보만 로드하고 실제 벌크 데이터는 필요에 따라 스트리밍합니다. 따라서 에셋 로딩 속도가 빨라지고 총 RAM 소비는 줄어듭니다.
새로 임포트된 에셋은 시스템 메모리에 유지되며, 저장될 때까지 스트리밍 기능을 활용할 수 없습니다. 저장되면 에디터가 해당 에셋에 대한 메모리를 릴리즈합니다.
포인트 클라우드 데이터를 파싱하고 언리얼 엔진 에셋으로 처리할 때 다수의 포인트 클라우드 파일을 언리얼 엔진에서 로드하려면 많은 양의 RAM이 필요합니다. 예를 들어 언리얼 엔진에 로드된 몬트리올 시의 이 공개 LiDAR 데이터의 퍼포먼스 지표는 다음과 같습니다.

개별 LAS 파일 | ~684개 타일, 디스크 용량 총 253GB |
언리얼 엔진의 램 사용량 | 100만 포인트 예산의 경우 ~3.5GB |
프레임 레이트 | 120fps, 100만 포인트 글로벌 예산 |
총 포인트 수 | 1km x 1km 타일당 평균 1,430만 포인트 * 621개 파일 = ~89억 포인트 |
클리핑 볼륨
데이터의 일부분만 표시하고 나머지를 삭제하지 않으려면 LiDAR 클리핑 볼륨(Lidar Clipping Volume) 액터를 사용합니다. LiDAR 포인트 클라우드 플러그인이 활성화되어 있는 상태로 액터 배치(Place Actor) > 볼륨(Volume) > 라이다 클리핑 볼륨 에서 이 액터를 찾을 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
클리핑 볼륨의 프로퍼티는 디테일(Details) 패널에서 환경설정할 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
선택 가능한 두 가지 모드 는 다음과 같습니다.
-
외부 클리핑(Clip Outside) 은 클리핑 볼륨 바깥쪽에 있는 모든 포인트 클라우드 데이터를 숨깁니다.
-
내부 클리핑(Clip Inside) 은 클리핑 볼륨 안쪽에 있는 모든 포인트 클라우드 데이터를 숨깁니다.
하나의 레벨에서 최대 16개의 클리핑 볼륨을 사용할 수 있습니다. 겹치는 볼륨이 있는 경우 우선순위(Priority) 세팅을 사용하여 어떤 것이 우선순위를 가질지 결정합니다.
런타임에서 데이터 변경하기
LiDAR 포인트 클라우드 플러그인은 패키징된 실행 파일을 포함하여 런타임에서 데이터 삽입, 제거, 수정을 지원합니다.
이를 수행할 때 고려해야 하는 사항이 몇 가지 있습니다.
-
삽입된 데이터는 에셋 바운드 내에 있어야 합니다. 그렇지 않은 경우 LOD 시스템에 영향을 미치게 됩니다.
-
포인트를 움직여도 이웃 LOD로 위치가 변경되지 않으므로 포인트는 너무 많이 움직이지 않는 것이 좋습니다.
-
많은 포인트를 여러 번 삽입하면 LOD 생성 시 많은 리소스가 소모될 수 있습니다.
위에서 설명한 문제를 완화하려면 포인트 클라우드 에셋을 필요한 것보다 큰 바운드(예: 각 축마다 100,000)로 초기화하고 플러그인의 프로젝트 세팅 에서 최대 버킷 크기(Max Bucket Size) 세팅을 1,000,000,000 같이 아주 큰 수로 설정하여 LOD 시스템을 비활성화할 수 있습니다.