개발 기록/[CTSG] 25.06.01-

[디지털 트윈] Unity에 3D 지형 시각화하기 - DEM 편

Dachaes 2025. 6. 24. 11:28
728x90

Unity에 3D 지형 시각화하기 - DEM 편 

디지털 트윈 프로젝트를 준비하며, 웹 브라우저 상에서 3D 지형을 구현해보려 합니다. 이를 위해 지형, 건물, 도로 등 다양한 공간 정보를 시각화할 계획입니다. 우선 국토정보플랫폼에서 지원하는 정사 영상을 QGIS에 띄우려고 합니다.

 


이전 글 보기

 

[디지털 트윈] Unity에 3D 지형 시각화하기 - 수치 지도/정사 영상 편

Unity에 3D 지형 시각화하기 - 수치 지도/정사 영상 편디지털 트윈 프로젝트를 준비하며, 웹 브라우저 상에서 3D 지형을 구현해보려 합니다. 이를 위해 지형, 건물, 도로 등 다양한 공간 정보를 시각

dachaes-devlogs.tistory.com

 


개발 환경

  • Node v22.16.0
  • React v19.1.0 (TypeScript) + Vite
  • QGIS Desktop 3.42.3
  • Unity 6000.0.50f1 (LTS)

개발 순서

  1. DEM 다운받기
  2. 필요 없는 DEM 자르기
  3. glTF 파일로 내보내기 (export)
  4. 유니티에 불러오기

참고 사이트

 


1.  DEM 다운받기

국토정보플랫폼 국토정보맵의 수치지도 제공 사이트에서 원하는 위치를 검색한 후, DEM(.img)을 다운받습니다. 다운받은 파일은 QGIS를 열어서 상단 탭의 레이어 > 레이어 추가 > 래스터 레이어 추가를 통해 열어줍니다. 좌표계는 EPSG:5179로 설정합니다.

 

DEM 레이어를 정사 영상 레이어보다 하단에 둔 채로, 상단 탭의 보기 > 3D 탭 뷰 > 새 3D 탭 뷰 를 눌러서 3D 지도 창을 엽니다. 3D 지도의 환경 설정을 열어서 유형은 DEM (래스터 레이어)로, 고도는 불러 왔던 DEM 레이어로 설정합니다.

설정 확인을 누르고, 3D 지도를 기울여 보면 성공적으로 정사영상에 고도가 적용된 것을 확인할 수 있습니다.

 


2.  필요 없는 DEM 자르기

상단 탭에서 레이어 > 레이어 생성 > 새 임시 스크래치 레이어 를 생성합니다. 편집 모드에서 폴리곤을 원하는 모양대로 그립니다.

상단 탭에서 래스터 > Extraction > 마스크 레이어로 래스터 자르기 창을 열고, 입력 레이어와 마스크 레이어를 선택해주고 실행합니다.

 


3.  glTF 파일로 내보내기 (export)

상단 탭의 플러그인 > 플러그인 관리 및 설치 창을 엽니다. 플러그인 창에서 Qgis2threejs을 설치합니다. 설치가 완료되면 상단 탭의 웹 > Qgis2threejs > Qgis2threejs Exporter 를 열고, DEM을 선택합니다.

원하는 구획만 export하고 싶다면, Scene > Scene Settings 를 누르고, Base Extent > Fixed extent > Select > Use Layer Extent 에서 DEM 을 자를 때 사용했던 지형 크기 임시 레이어를 선택(꼭 임시 레이어가 아니어도, 원하는 크기의 레이어가 있으면 그걸 선택해도 됨)합니다. 또는 Base Extent > Fixed extent > Select > Select Extent on Canvas 를 선택하여 원하는 크기를 직접 드래그합니다.

선택한 DEM을 우클릭하여 properties 창을 띄우고, Meterial 에서 원하는 레이어(정사 영상 이미지)를 선택해줍니다. 그리고 해상도 설정을 해줍니다.

Resampling level은 DEM 지형 mesh의 디테일(폴리곤 수)이고, Image width는 텍스처 이미지의 가로 해상도를 의미합니다. Imaga format은 압축 손실도가 낮은 PNG를 선택합니다. Tiles 탭에서도 수치를 조정해줍니다. Tiles size는 DEM과 텍스처(정사영상)를 몇 개의 작은 블록(조각)으로 나눌지 정하는 값이고, Tiles Roughness는 타일 경계가 너무 딱딱하지 않게, 연결 부위를 부드럽게 만드는 정도입니다.

너무 높은 수치는 성능의 저하 가능성이 있으니 유의해서 조정해야 합니다. 또한 export 후에 유니티에 import 했는데, 지도 바깥의 불필요한 부위가 export되는 경우가 있습니다. 이럴 경우에는 넓은 지역을 export하게 되어서 원하는 지역의 해상도가 오히려 떨어집니다. 이때는 Tiles size 가 과도하게 많이 적용되어 그런거니 수치를 줄여주시면 됩니다.

앞서 적용한 수치 설정의 building이 완전히 끝나고, glTF로 저장합니다.

 


4.  유니티에 불러오기

우선 유니티 프로젝트를 열고, 상단 탭에서 Window > Package Manager 를 엽니다. 추가(+) > 패키지 이름으로 설치(install package by name) 를 선택하여 com.unity.cloud gltfast를 설치합니다.

폴더에 gltf 파일을 드래그하고, 변환된 파일을 씬에 드래그하면 유니티에 성공적으로 올라간 것을 확인할 수 있습니다.

 


5.  실행 결과

아무리 Qgis2threejs에서 해상도를 높이려 해도, 한정된 데스크탑 성능과 너무 넓은 지형인 까닭에 많은 어려움이 있었습니다. 최종적으로는 해당 지역의 모든 정사영상을 각각 export하여 유니티에 불러오는 방식을 선택하였습니다.

 


 

728x90