Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

GridMap 사용하기

소개

GridMap은 2D 게임의 TileMap과 유사한 방식으로 3D 게임 레벨을 만드는 툴입니다. 격자 위에 메시를 배치하려면, 미리 정의해 놓은 3D 메시 모음 (MeshLibrary)이 필요합니다. 메시 모음은 마치 무한한 레고 블록처럼 사용됩니다.

콜리전과 내비게이션도 메시에 추가될 수 있습니다. 타일맵의 타일과 똑같죠.

예제 프로젝트

어떻게 GridMap이 작동하는지 배우려면, 샘플 프로젝트를 다운로드하세요: gridmap_demo.zip.

이 프로젝트의 압축을 풀고 "가져오기" 버튼을 사용하여 프로젝트 Manager에 추가하세요. 최신 Godot 버전으로 변환해야 한다는 팝업이 나타날 수 있습니다. **Convert project.godot**를 클릭하세요.

MeshLibrary 만들기

시작하려면 MeshLibrary가 필요합니다. MeshLibrary는 개별 메시들의 모음으로 그리드맵에 쓸 수 있습니다. "MeshLibrary_Source.tscn" 씬을 열어서 어떻게 MeshLibrary가 설정되어 있는지 확인하세요.

../../_images/gridmap_meshlibrary1.webp

보다시피, 이 씬은 루트로 class_Spatial 노드를 갖고 있습니다. 그리고 많은 class_MeshInstance 노드 자식을 갖고 있죠.

씬에서 물리 엔진이 필요 없다면, 이게 끝입니다. 하지만 대부분의 경우, 메시에 콜리전 바디가 필요할 것입니다.

콜리전

각 메시마다 일일이 class_StaticBodyclass_CollisionShape를 지정할 수 있습니다. 아니면 "메시(Mesh)" 메뉴에서 메시 데이터를 기반으로 한 콜리전 바디를 자동으로 만들 수 있습니다.

../../_images/gridmap_create_body.webp

"컨벡스" 콜리전 바디는 단순한 메시에 더 잘 작동합니다. 복잡한 모양이라면 "Trimesh Static Body 만들기(Create Trimesh Static Body)"를 선택하세요. 각 메시마다 PhysicsBody와 ColliisionShape를 가졌다면, MeshLibrary를 사용할 준비가 되었습니다.

../../_images/gridmap_mesh_scene.webp

머티리얼

MeshLibrary를 생성할 때는 메시 안에 있는 머티리얼만 사용됩니다. 노드에 설정된 머티리얼은 무시됩니다.

라이트맵GI

GridMap에 라이트맵을 구울 수 있습니다. 라이트맵 UV2 데이터는 이미 존재하는 경우 메시에서 재사용됩니다. UV2 데이터가 없으면 베이크 시 라이트맵 텍셀 크기가 0.1 단위로 자동 생성됩니다. 다른 라이트맵 텍셀 크기로 UV2 데이터를 생성하려면 가져오기 도크에서 전역 조명 모드를 **정적 라이트맵**으로 설정하고 거기에서 텍셀 크기를 지정하면 됩니다. 이 옵션은 씬이 MeshLibrary로 변환되기 전에 변경되어야 합니다. 나중에 변경해도 기존 MeshLibrary 데이터에는 영향을 주지 않기 때문입니다.

이러한 특징을 제외하면 라이트맵 베이킹 프로세스는 다른 3D 씬와 동일합니다. 라이트맵 베이킹에 대한 자세한 내용은 :ref:`doc_using_lightmap_gi`를 참조하세요.

메시라이브러리 형식

MeshLibrary 형식의 특정 제약 조건을 요약하면 MeshLibrary 씬에는 루트 노드로 Node3D가 있고 MeshLibrary 항목이 될 여러 자식 노드가 있습니다. 루트 노드의 각 하위 요소는 다음을 수행해야 합니다.

  • MeshLibrary 항목이 될 :ref:`class_MeshInstance3D`가 되어야 합니다. 이 시각적 메시만 내보내집니다.

  • MeshInstance3D의 재료 슬롯이 아님 메시의 재료 슬롯에 재료가 있습니다.

  • 충돌을 위해 최대 하나의 StaticBody3D 하위 항목을 갖습니다. StaticBody3D에는 하나 이상의 CollisionShape3D 자식 노드가 있어야 합니다.

  • 탐색을 위해 최대 하나의 NavigationRegion3D 하위 항목을 갖습니다. NavigationRegion3D에는 탐색용으로 구울 수 있지만 시각적 메시로 내보낼 수 없는 하나 이상의 추가 MeshInstance3D 자식 노드가 있을 수 있습니다.

이 특정 형식만 인식됩니다. 자식 노드로 배치된 다른 노드 유형은 인식되거나 내보내지지 않습니다. GridMap은 *노드*를 그리드에 배치하기 위한 범용 시스템이 아니라 충돌 및 탐색이 포함된 *메쉬*를 배치하도록 설계된 구체적이고 최적화된 시스템입니다.

메시라이브러리 내보내기

라이브러리를 내보내려면 씬 > 다음으로 내보내기... > 메시라이브러리...를 클릭하고, 리소스로 저장하세요.

../../_images/gridmap_export.webp

이미 프로젝트에서 내보낸 메시라이브러리를 "MeshLibrary.tres"라는 이름으로 볼 수 있습니다.

GridMap 사용하기

새 씬을 만들고 GridMap 노드를 추가하세요. 파일시스템 독에서 리소스 파일을 드래그하고 나서 인스펙터에서 메시 라이브러리 속성에 드롭해서 메시 라이브러리를 추가하세요.

../../_images/gridmap_mesh_library_inspector.webp

인스펙터 속성

Physics Material 설정을 사용하면 NavigationMesh의 모든 메시에 대한 물리 재질을 재정의할 수 있습니다.

"Cell/Size" 속성은 메시의 크기를 설정합니다. 데모에서는 기본 값으로 두어도 됩니다. "Center Y" 속성을 끄세요.

충돌 옵션을 사용하면 전체 그리드에 대한 충돌 레이어, 충돌 마스크 및 우선 순위를 설정할 수 있습니다. 작동 방식에 대한 자세한 내용은 물리 섹션을 참조하세요.

Navigation 아래에는 "Bake Navigation" 옵션이 있습니다. 활성화되면 탐색 메시가 있는 메시 라이브러리 항목을 사용하는 각 셀에 대한 탐색 영역이 생성됩니다.

인스펙터에서 MeshLibrary 자체를 클릭하면 탐색 메쉬, 탐색 레이어 또는 메쉬가 그림자를 투사하는지 여부와 같은 개별 메쉬에 대한 설정을 조정할 수 있습니다.

../../_images/gridmap_mesh_library_settings.webp

스크립트 패널 토글

편집기 하단에는 GridMap 노드를 추가할 때 자동으로 열렸던 GridMap 패널이 있습니다.

../../_images/gridmap_panel.webp

도구 모음의 왼쪽에서 오른쪽으로:

  • 변환: 씬에서 그리드맵의 상대 위치와 회전을 변경할 수 있는 기즈모를 씬에 추가합니다.

  • 선택: 활성 상태에서 뷰포트에서 영역을 선택할 수 있으며 클릭하고 드래그하여 그리드에서 두 개 이상의 공간을 선택할 수 있습니다.

  • 삭제: 활성 상태에서 뷰포트를 클릭하고 메시를 삭제합니다.

  • 페인트: 활성 상태에서 뷰포트를 클릭하고 GridMap 패널에서 현재 선택된 메시를 씬에 추가합니다.

  • 선택: 활성 상태에서 뷰포트의 그리드맵 메시를 클릭하면 그리드맵 패널에서 해당 메시가 선택됩니다.

  • 채우기: 뷰포트에서 선택한 영역을 GridMap 하단 패널에서 선택한 메시로 채웁니다.

  • 이동: 뷰포트에서 현재 선택된 메시를 이동합니다.

  • 복제: 만들기 GridMap에서 선택한 메시 또는 메시의 복사본입니다.

  • 삭제: 지우기와 유사하지만 선택한 영역 전체에 적용됩니다.

  • Cursor Rotate X: 페인트 도구가 선택된 동안 X축에 칠해질 메시가 회전합니다. 선택한 영역이 이동 중인 경우에도 회전됩니다.

  • 커서 회전 Y: 페인트 도구를 선택하는 동안 Y축에 칠할 메시가 회전합니다. 선택한 영역이 이동 중인 경우에도 회전됩니다.

  • 커서 Z 회전: 페인트 도구를 선택하는 동안 Z축에 칠할 메시가 회전합니다. 선택한 영역이 이동 중인 경우에도 회전됩니다.

  • Change Grid Floor: Adjusts what floor is currently being worked on. Can be changed with the arrows, typing a value in the field, or Ctrl + Mouse wheel.

  • 필터 메쉬: 하단 패널에서 특정 메쉬를 검색하는 데 사용됩니다.

  • : 하단 패널에 있는 메시의 확대/축소 수준을 제어합니다.

  • 레이아웃 토글: 이 두 버튼은 하단 패널의 메시에 대한 다양한 레이아웃 간을 전환합니다.

  • 도구 드롭다운: 이 버튼을 누르면 몇 가지 추가 옵션이 포함된 드롭다운 메뉴가 열립니다.

../../_images/gridmap_dropdown.webp

해당 드롭다운에서 **설정**을 클릭하면 카메라 위치(미터 단위)를 기준으로 GridMap에 타일을 배치할 수 있는 최대 거리인 **선택 거리**를 변경할 수 있는 창이 나타납니다.

코드로 GridMap 사용하기

노드의 메서드와 멤버 변수에 대한 자세한 설명은 GridMap을 참고하세요.