OpenStreetMap을 3D로

OpenStreetMap을 3D로, 파이프라인 없이.

보통은 Overpass 쿼리, 정리를 위한 GIS 도구, 익스트루드를 위한 스크립트나 애드온, 조명을 위한 데스크톱 3D 패키지를 거칩니다. Studio에서는 한 단계입니다. 지도에 상자를 그리면 OSM의 건물, 도로, 물이 실제 지형 위에 익스트루드되어 도착합니다.

왼쪽은 지도 영역, 오른쪽은 같은 영역을 익스트루드한 3D 모델
OpenStreetMapStudio, 가져오기 한 번 뒤
실제 Studio 출력. 지도 데이터 © OpenStreetMap contributors.

쿼리 언어 없음

Overpass QL을 쓰거나 GeoJSON을 다룰 필요가 없습니다. 상자를 그리면 가져오기가 OpenStreetMap에 건물, 고속도로, 물, 토지 이용을 요청하고 응답을 캐시합니다.

지오메트리를 바꾸는 태그

height, building:levels, min_height는 건물의 높이와 시작 위치를, roof:shape와 building:part는 윗부분의 형태를 정합니다. highway 등급은 도로 폭을, water와 landuse 태그는 머티리얼을 정합니다.

올바른 단위와 배치

모든 것이 상자 중심을 기준으로 미터 단위로 투영되므로 거리가 정확하고, 내 모델도 실제 축척으로 들어갑니다.

쓰던 도구로 내보내기

유료 플랜에서 결과를 GLB, glTF, OBJ, FBX, STL로 내보내 Blender, Unreal, Unity, 슬라이서에서 쓰세요.

각 태그가 되는 것

브라이언트 공원 옆, 계단식 후퇴 지붕을 가진 미드타운 맨해튼의 고층 건물들
미드타운 맨해튼: NYC 3-D Building Model의 실제 지붕, 빈 곳은 OpenStreetMap.

지도에 기록된 높이의 건물

건물 외곽선은 태그된 높이나 층수로 익스트루드되어 지면 위에 앉습니다. 지도에 있는 지붕 형태와 건물 부분은 그대로 만들고, 작은 주택에는 추정한 박공·모임지붕을, 평지붕에는 파라펫과 옥상 설비를 더합니다.

폭이 다른 거리들, 다리가 놓인 강, 실제 지형 위의 공원 구역
등급별 도로, 다리, 물, 토지 피복.

거리, 물, 녹지

도로는 등급에 따라 폭이 정해지고 보도, 차선 표시, 횡단보도가 들어갑니다. 다리는 물속으로 꺼지지 않고 물 위를 가로지르며, 공원, 포장 면, 가로수가 나머지를 채웁니다.

부두와 방파제까지 물로 가득 찬 항구를 위에서 내려다본 모나코의 에르퀼 항
모나코 에르퀼 항: OSM 해안선으로 만든 바다. 지도 데이터 © OpenStreetMap contributors.

해안선에서 바다로

OpenStreetMap은 바다를 해안선으로만 그립니다. 가져오기는 그 선을 닫아 물로 만들어 항구와 만이 부두까지 채워집니다.

가져온 도시 옆에 지도 기반 건물 높이와 추정 건물 높이가 표시된 가져오기 결과를 보여 주는 Studio
뉴욕 록펠러 센터 일대를 도시 모드로 가져온 뒤의 가져오기 리포트.

지도가 아는 것을 알려 줍니다

가져오기는 건물 높이 중 지도에서 가져온 것이 몇 개이고 추정한 것이 몇 개인지 알려 주므로, 스카이라인을 어디까지 믿을지 판단할 수 있습니다.

가져온 로어 맨해튼 위에 GLB가 선택된 Studio의 내보내기 대화상자
가져온 장소의 GLB 내보내기. Blender에서: File ▸ Import ▸ glTF.

Blender에서 마무리

유료 플랜에서 GLB나 FBX를 내보내 Blender로 가져오세요. 실제 축척의 미터 단위이고, 오브젝트는 이미 분리되어 있습니다.

Mixos를 선택해야 하는 이유

각 태그에 일어나는 일

OpenStreetMap은 태그가 붙은 점, 선, 폴리곤의 데이터베이스이며 3D 모델이 아닙니다. 이를 3D로 바꾸려면 피처 종류마다 어떤 지오메트리가 되어야 하는지 정해야 합니다. Studio의 가져오기는 OSM 커뮤니티 자체의 3D 규약이 설명하는 방식대로 그 결정을 내립니다.

건물 외곽선은 중정의 구멍을 포함한 닫힌 풋프린트가 되어 height 태그의 높이로 익스트루드됩니다. 높이가 없으면 building:levels에 약 3 m를 곱한 값이 대신하고, 둘 다 없으면 가져오기가 추정하며 그 추정을 리포트에 집계합니다. min_height는 보행로나 돌출부처럼 지면보다 위에서 시작하는 부분을 들어 올립니다. roof:shape는 박공, 모임, 사각뿔, 외쪽, 돔, 양파형 지붕을 만들고(복절, 맨사드, 반모임은 가장 가까운 형태로 그려짐), building:part는 랜드마크를 조각들로 조립하며, 태그 없는 작은 주택에는 추정한 박공이나 모임지붕이 붙습니다. 각 풋프린트는 그 아래 지형의 가장 낮은 지점에 앉으므로 경사면에서도 떠 있는 건물이 없습니다.

highway 선은 등급에 따라 폭이 정해지는 띠가 되어 지형 표면 위에 덮이며, 폭은 보행로부터 고속도로까지 다양합니다. 닫힌 수역은 평평한 물이 되고, 해안선으로만 그려진 OpenStreetMap의 바다는 그 해안선으로 닫아 물로 만듭니다. 공원, 잔디, 포장 같은 토지 이용은 라이브러리 머티리얼이 적용된 지표 피복이 됩니다. 지형 자체는 고도 정보가 없는 OSM이 아니라 개방형 고도 타일에서 가져옵니다.

OSM 데이터는 Open Database License로 제공됩니다. © OpenStreetMap contributors를 표기하면 그 데이터로 만든 결과물을 상업적으로도 사용할 수 있습니다. Studio는 이 표기를 장면과 함께 저장하므로 가져오기에서 렌더까지 가는 동안 사라지지 않습니다.

각 태그에 일어나는 일

자주 묻는 질문

OpenStreetMap 데이터를 3D 모델로 변환하려면 어떻게 하나요?

Studio에서 Real place 선택기를 열고 상자를 그린 뒤 가져오세요. 건물, 도로, 물, 토지 피복이 자동으로 익스트루드되어 실제 지형 위에 놓입니다. .osm 파일을 내려받거나 Overpass 쿼리를 작성할 필요가 없습니다.

OSM 건물을 Blender로 가져올 수 있나요?

네. Studio에서 영역을 만든 뒤 유료 플랜에서 GLB나 FBX로 내보내 Blender로 가져오세요. Blender 안에서 해결하고 싶다면 무료 BlenderGIS와 Blosm 애드온도 OSM 데이터를 가져옵니다.

어떤 OSM 태그를 읽나요?

height, building:levels, min_height가 있는 건물 외곽선, 도로 폭을 위한 highway 등급, 수역, 지면 머티리얼을 위한 park, grass, paving 같은 토지 이용을 읽습니다.

왜 일부 건물의 높이가 틀리나요?

지도에 정보가 없기 때문입니다. 건물에 높이나 층수 태그가 없으면 가져오기가 높이를 추정하고 리포트에 집계합니다. OpenStreetMap에 태그를 추가하면 모든 사람에게 바로잡힙니다.

데이터를 상업적으로 무료로 사용할 수 있나요?

네. Open Database License에 따라 © OpenStreetMap contributors를 표기하면 됩니다. 추출한 데이터 자체를 데이터베이스로 재배포하는 경우에는 ODbL의 동일 조건 변경 허락 조항도 적용됩니다.

Mixos

파이프라인은 건너뛰세요. 상자를 그리세요.