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.

가져오기 구성

Godot는 가져오기 도크, 고급 가져오기 설정 대화상자 및 상속된 장면과 같이 가져온 데이터를 사용자 정의하는 여러 가지 방법을 제공합니다. 이는 메시 조정, 물리 정보 추가, 새 노드 추가 등 가져온 씬을 추가로 변경하는 데 사용할 수 있습니다. 임의의 사용자 정의를 수행하기 위해 가져오기 프로세스가 끝날 때 코드를 실행하는 스크립트를 작성할 수도 있습니다.

해당하는 경우 가져온 후 씬을 구성하는 것보다 원본 데이터를 수정하는 것이 더 좋습니다. 이는 3D 모델링 애플리케이션과 가져온 씬 간의 차이를 최소화하는 데 도움이 됩니다. 자세한 내용은 모델 내보내기 고려 사항이름 접미사를 사용한 노드 유형 사용자 지정 문서를 참조하세요.

가져오기 워크플로

Godot는 자체 씬 형식(.tscn/.scn)만 저장할 수 있으므로 Godot는 원본 3D 씬 파일(다른 형식을 사용하는) 위에 저장할 수 없습니다. 이는 소스 파일을 실수로 변경하는 것을 방지하므로 더 안전한 접근 방식이기도 합니다.

씬 및 해당 자료를 사용자 정의할 수 있도록 Godot의 씬 가져오기 도구는 데이터를 가져오는 방법에 관한 다양한 작업 흐름을 허용합니다.

파일시스템 독에서 3D 씬을 선택하고 나서 가져오기 독

파일시스템 독에서 3D 씬을 선택하고 나서 가져오기 독

이 가져오기 프로세스는 필요에 따라 3개의 별도 인터페이스를 사용하여 사용자 정의할 수 있습니다.

  • FileSystem 도크에서 3D 씬을 한 번 클릭하여 선택한 후 가져오기 도크.

  • 파일 시스템 도크에서 3D 씬을 두 번 클릭하거나 가져오기 도크에서 고급… 버튼을 클릭하여 액세스할 수 있는 고급 가져오기 설정 대화 상자. 이를 통해 Godot의 개체별 옵션을 사용자 정의하고 모델과 애니메이션을 미리 볼 수 있습니다. 자세한 내용은 프로젝트 설정 재정의하기 페이지를 참조하세요.

  • :ref:`가져오기 힌트 <doc_importing_3d_scenes_node_type_customization>`은 3D 모델링 소프트웨어의 개체 이름에 추가되는 특수 접미사입니다. 이를 통해 3D 모델링 소프트웨어에서 개체별 옵션을 사용자 정의할 수 있습니다.

기본적인 사용자 정의의 경우 Import Dock를 사용하면 충분합니다. 그러나 재질별 재질 재정의 정의와 같은 보다 복잡한 작업의 경우 고급 가져오기 설정 대화상자, 가져오기 힌트 또는 둘 다를 사용해야 합니다.

가져오기 독 사용하기

FileSystem 도크에서 3D 씬을 선택한 후 가져오기 도크에서 다음 옵션을 조정할 수 있습니다.

  • 루트 유형: 루트 노드로 사용하는 노드 유형입니다. Node3D에서 상속된 노드 유형을 사용하는 것이 좋습니다. 그렇지 않으면 3D 편집기에서 노드를 직접 배치하는 기능을 잃게 됩니다.

  • 루트 이름: 가져온 씬에 있는 루트 노드의 이름입니다. 이 경우 루트 노드의 이름이 파일 이름과 일치하도록 바뀌기 때문에 편집기에서 씬을 인스턴스화할 때(또는 FileSystem 도크에서 끌어서 놓기) 일반적으로 눈에 띄지 않습니다.

  • 루트 스케일 적용: 활성화되면 루트 노드의 스케일을 기본 `(1, 1, 1)`로 유지하면서 **루트 스케일**이 메시와 애니메이션에 직접 *적용*됩니다. 즉, 가져온 씬 내에서 나중에 자식 노드를 추가하면 크기가 조정되지 않습니다. 비활성화된 경우 **루트 스케일**은 대신 루트 노드의 스케일을 곱합니다.

메시

  • 접선 보장: 이 옵션을 선택하면 입력 메시에 접선 데이터가 없는 경우 `Mikktspace <http://www.mikktspace.com/>`__을 사용하여 정점 접선을 생성합니다. 가능하다면 이 옵션을 사용하는 대신 3D 모델링 소프트웨어가 내보낼 때 접선을 생성하도록 하는 것이 좋습니다. 접선이 필요한 재질/셰이더 기능과 함께 법선 및 높이 맵을 올바르게 표시하려면 접선이 필요합니다. 접선이 필요한 재질 기능이 필요하지 않은 경우 이 기능을 비활성화하면 출력 파일 크기가 줄어들고 원본 3D 파일에 접선이 포함되어 있지 않으면 가져오기 속도가 빨라질 수 있습니다.

  • LOD 생성: 선택하면 렌더링 성능을 향상시키기 위해 멀리 표시될 메시의 더 낮은 세부 변형을 생성합니다. 모든 메시가 LOD의 이점을 누리는 것은 아닙니다. 특히 메시가 멀리서 렌더링되지 않는 경우에는 더욱 그렇습니다. 이 기능을 비활성화하면 출력 파일 크기가 줄어들고 가져오기 속도가 빨라질 수 있습니다. 자세한 내용은 :ref:`doc_mesh_lod`를 참조하세요.

  • 만들기 섀도우 메시: 선택하면 가져올 때 섀도우 메시 생성이 활성화됩니다. 이는 가능한 경우 정점을 함께 용접하여 품질을 저하시키지 않고 그림자 렌더링을 최적화합니다. 결과적으로 그림자를 렌더링하는 데 필요한 메모리 대역폭이 줄어듭니다. 그림자 메시 생성은 현재 소스 메시보다 낮은 세부 수준 사용을 지원하지 않습니다(그러나 그림자 렌더링은 해당되는 경우 LOD를 사용합니다).

  • 라이트 베이킹: 3D 씬에서 메시의 :ref:`전역 조명 모드 <class_GeometryInstance3D_property_gi_mode>`를 구성합니다. **정적 라이트맵**으로 설정된 경우 메시의 GI 모드를 **정적**으로 설정하고 :ref:`라이트맵 베이킹 <doc_using_lightmap_gi>`을 위해 가져올 때 UV2를 생성합니다.

  • 라이트맵 텍셀 크기: **라이트 베이킹**이 **정적 라이트맵**으로 설정된 경우에만 표시됩니다. 구운 라이트맵의 각 텍셀 크기를 제어합니다. 값이 작을수록 라이트맵 크기가 커지고 베이크 시간이 길어지는 대신 라이트맵이 더 정확해집니다.

하늘:

  • 명명된 스킨 사용: 선택한 경우 애니메이션에 Skins <class_Skin>`이라는 이름을 사용합니다. :ref:`class_MeshInstance3D 노드에는 Skeleton3D 노드(일반적으로 ..)를 가리키는 뼈대 NodePath, 메시 및 스킨의 3가지 관련 속성이 포함되어 있습니다.

    • Skeleton3D 노드에는 이름, 포즈 및 나머지, 이름 및 상위 뼈가 포함된 뼈 목록이 포함되어 있습니다.

    • 메시는 메시를 표시하는 데 필요한 모든 원시 정점 데이터입니다. 메쉬 측면에서 정점이 가중치로 칠해지는 방식을 알고 있으며 3D 모델링 소프트웨어에서 종종 가져온 일부 내부 번호 매기기를 사용합니다.

    • 스킨에는 이 메쉬를 이 Skeleton3D에 바인딩하는 데 필요한 정보가 포함되어 있습니다. 3D 모델링 소프트웨어가 선택한 모든 내부 뼈대 ID에는 두 가지가 포함됩니다. 첫째, Bind Pose Matrix, Inverse Bind Matrix 또는 줄여서 IBM으로 알려진 매트릭스입니다. 둘째, 스킨에는 각 뼈대의 이름(**명명된 스킨 사용**이 활성화된 경우) 또는 Skeleton3D 목록 내의 뼈의 인덱스(**명명된 스킨 사용**이 비활성화된 경우)가 포함됩니다.

함께 이 정보는 각 MeshInstance3D에서 메시를 렌더링하기 위해 Skeleton3D 노드에서 뼈 포즈를 사용하는 방법을 Godot에게 알려주기에 충분합니다. Blender에서 내보낸 모델에서 흔히 볼 수 있듯이 각 MeshInstance3D는 바인드를 공유할 수 있으며, Maya와 같은 다른 도구에서 내보낸 모델에서 흔히 볼 수 있듯이 각 MeshInstance3D는 별도의 스킨 객체를 사용할 수 있습니다.

애니메이션

  • 가져오기: 체크하면 3D 씬에서 애니메이션을 가져옵니다.

  • FPS: 선형 보간을 사용하여 애니메이션 곡선을 일련의 점으로 베이킹하는 데 사용할 초당 프레임 수입니다. 3D 모델링 소프트웨어에서 기준으로 사용하는 값과 일치하도록 이 값을 구성하는 것이 좋습니다. 값이 높을수록 파일 크기와 메모리 사용량이 늘어나지만 움직임이 빠르게 변경되는 보다 정확한 애니메이션이 생성됩니다. 보간 덕분에 일반적으로 30FPS를 초과해도 큰 이점이 없습니다(더 높은 렌더링 프레임 속도에서도 애니메이션이 여전히 부드럽게 나타나기 때문입니다).

  • 트리밍: 키프레임 변경사항이 없는 경우 애니메이션의 시작과 끝을 트리밍합니다. 이렇게 하면 애니메이션 트랙의 내용에 따라 특정 3D 장면의 출력 파일 크기와 메모리 사용량을 줄일 수 있습니다.

  • 변경 불가능한 트랙 제거: 기본값만 포함된 애니메이션 트랙을 제거합니다. 이렇게 하면 애니메이션 트랙의 내용에 따라 특정 3D 장면의 출력 파일 크기와 메모리 사용량을 줄일 수 있습니다.

JavaScript

  • 경로: 사용자 지정 처리를 위해 가져오기 프로세스가 완료된 코드를 실행할 수 있는 가져오기 스크립트의 경로입니다. 자세한 내용은 :ref:`doc_importing_3d_scenes_import_script`를 참조하세요.

glTF

  • 임베디드 텍스처 처리: glTF 장면에 포함된 텍스처를 처리하는 방법을 제어합니다. 모든 텍스처 폐기**는 텍스처를 가져오지 않으며, 대신 Godot에서 수동으로 재료를 설정하려는 경우에 유용합니다. **텍스처 추출**은 텍스처를 외부 이미지로 추출하여 파일 크기를 줄이고 가져오기 옵션을 더 효과적으로 제어할 수 있습니다. **기본 유니버설로 포함**비압축으로 포함**은 각각 VRAM 압축 유무에 관계없이 가져온 씬에 포함된 텍스처를 유지합니다.

FBX

  • 수입업체 어떤 가져오기 방법이 사용되는지입니다. ubfx는 fbx 파일을 fbx 파일로 처리합니다. FBX2glTF는 가져올 때 FBX 파일을 glTF로 변환하며 추가 설정이 필요합니다. FBX2glTF는 ufbx를 통해 사용하거나 다른 파일 형식으로 작업해야 하는 특별한 이유가 있지 않는 한 권장되지 않습니다.

  • 지오메트리 도우미 노드 허용은 지오메트리 도우미 노드를 활성화하거나 비활성화합니다

  • 임베디드 텍스처 처리: fbx 장면에 포함된 텍스처를 처리하는 방법을 제어합니다. 모든 텍스처 폐기**는 텍스처를 가져오지 않으며, 대신 Godot에서 수동으로 재료를 설정하려는 경우에 유용합니다. **텍스처 추출**은 텍스처를 외부 이미지로 추출하여 파일 크기를 줄이고 가져오기 옵션을 더 효과적으로 제어할 수 있습니다. **기본 유니버설로 포함**비압축으로 포함**은 각각 VRAM 압축 유무에 관계없이 가져온 씬에 포함된 텍스처를 유지합니다.

일반 옵션

.blend 파일에만 표시됩니다.

노드:

  • Visible: **All**은 보이지 않는 객체까지 포함하여 모든 것을 가져옵니다. **표시만**은 표시되는 개체만 가져옵니다. **렌더링 가능**은 실제로 표시되는지 여부에 관계없이 Blender에서 렌더링 가능으로 표시된 개체만 가져옵니다. 블렌더에서는 아웃라이너의 각 개체 옆에 있는 카메라 아이콘을 클릭하면 렌더링 가능성이 전환되고, 눈 아이콘으로 가시성이 전환됩니다.

  • 활성 컬렉션만: 선택하면 Blender의 활성 컬렉션에 있는 노드만 가져옵니다.

  • Punctual Lights: 선택하면 Blender에서 조명(방향성, 전방향성, 스폿)을 가져옵니다. "Punctual"은 "positional"과 혼동되어서는 안 됩니다. 이것이 방향성 조명도 포함되는 이유입니다.

  • 카메라: 선택하면 Blender에서 카메라를 가져옵니다.

  • 사용자 정의 속성: 선택하면 Blender에서 glTF 추가 항목으로 사용자 정의 속성을 가져옵니다. 그런 다음 이 데이터는 :ref:`GLTFDocument.register_gltf_document_extension() <class_GLTFDocument_method_register_gltf_document_extension>`을 사용하는 편집기 플러그인에서 사용할 수 있습니다. 이는 가져오기 시 노드 메타데이터를 설정할 수 있습니다(다른 사용 사례 중에서).

  • 수정자: **수정자 없음**으로 설정하면 가져올 때 개체 수정자가 무시됩니다. **모든 수정자**로 설정된 경우 가져올 때 개체에 수정자를 적용합니다.

메시

  • 색상: 선택하면 블렌더에서 정점 색상을 가져옵니다.

  • UVs: 선택하면 블렌더에서 정점 UV1 및 UV2를 가져옵니다.

  • 법선: 선택하면 블렌더에서 정점 법선을 가져옵니다.

  • 지오메트리 노드 인스턴스 내보내기: 선택하면 블렌더에서 지오메트리 노드 인스턴스를 가져옵니다.

  • GPU 인스턴스 선택하면 수많은 단일 Mesh3D 개체 대신 인스턴스와 파티클 시스템을 GLTF의 버퍼/접근자 데이터로 가져옵니다. 여기에는 형상 노드 인스턴싱이 포함되지 않습니다.

  • 접선: 선택하면 블렌더에서 정점 접선을 가져옵니다.

  • 스킨: **없음**은 Blender에서 뼈대 스킨 데이터 가져오기를 건너뜁니다. **4 Influences(호환 가능)**은 특정 리그의 정밀도가 낮아지는 대신 모든 렌더러와 호환되도록 스킨 데이터를 가져옵니다. **모든 영향**은 모든 영향(Godot에서 최대 8개)이 포함된 스킨 데이터를 가져옵니다. 이는 더 정확하지만 모든 렌더러와 호환되지 않을 수 있습니다.

  • 뼈 변형 메쉬만 내보내기: 선택한 경우 블렌더에서 메쉬를 변형하는 뼈만 가져옵니다.

머티리얼

  • Unpack Enabled: 선택하면 원본 이미지를 Godot 파일 시스템에 압축을 풀고 사용합니다. 이를 통해 VRAM 압축과 같은 이미지 가져오기 설정을 변경할 수 있습니다. 선택하지 않으면 블렌더가 거칠기 및 금속성 재포장과 같은 원본 이미지를 하나의 거칠기 + 금속성 질감으로 변환할 수 있습니다. 대부분의 경우 이 옵션은 선택된 채로 두어야 하지만 .blend 파일의 이미지가 올바른 형식이 아닌 경우 올바른 동작을 위해 이 옵션을 비활성화해야 합니다.

  • 재료 내보내기: **자리 표시자**로 설정하면 재료를 가져오지 않지만 별도의 재료를 다른 표면에 할당할 수 있도록 표면 슬롯을 유지합니다. **내보내기**로 설정하면 재질을 있는 그대로 가져옵니다(절차적 블렌더 재질이 올바르게 작동하지 않을 수 있음). **명명된 자리 표시자**로 설정된 경우 재질을 가져오지만 .blend 파일에 압축된 이미지는 가져오지 않습니다. 가져온 재질에서 텍스처를 수동으로 다시 할당해야 합니다.

애니메이션

  • 재생 제한: 선택하면 애니메이션 가져오기를 Blender에 정의된 재생 범위(Blender의 애니메이션 타임라인 오른쪽에 있는 시작 옵션)로 제한합니다. 이렇게 하면 사용되지 않는 애니메이션 데이터가 포함되는 것을 방지하여 가져온 씬을 더 작고 빠르게 로드할 수 있습니다. 그러나 Blender에서 재생 범위가 올바르게 설정되지 않은 경우 애니메이션 데이터가 누락될 수도 있습니다.

  • 항상 샘플: 이 옵션을 선택하면 가져올 때 애니메이션 샘플링을 강제하여 파일 크기가 커지더라도 Blender와 glTF가 애니메이션 보간을 수행하는 방법 간의 일관성을 보장합니다. 선택하지 않으면 Blender에서 보는 것과 Godot에서 가져온 씬 사이의 보간 의미가 다르기 때문에 애니메이션이 보간되는 방식에 차이가 있을 수 있습니다.

  • 그룹 트랙: 선택하면 애니메이션(활성 및 NLA 트랙)을 별도의 트랙으로 가져옵니다. 선택을 취소하면 현재 할당된 모든 작업이 하나의 glTF 애니메이션이 됩니다.

자동화를 위해 가져오기 스크립트 사용

특수한 스크립트로 가져오기 이후 전체 씬을 처리하는 것도 가능합니다. 후처리, 재질 변경, 도형으로 장난을 치는 일 등에 유용합니다.

FileSystem 도크를 마우스 오른쪽 버튼으로 클릭하고 **New > 스크립트…**를 선택하여 노드에 연결되지 않은 만들기입니다. 스크립트 편집기에서 다음을 작성합니다.

@tool # Needed so it runs in editor.
extends EditorScenePostImport

# This sample changes all node names.
# Called right after the scene is imported and gets the root node.
func _post_import(scene):
    # Change all node names to "modified_[oldnodename]"
    iterate(scene)
    return scene # Remember to return the imported scene

# Recursive function that is called on every node
# (for demonstration purposes; EditorScenePostImport only requires a `_post_import(scene)` function).
func iterate(node):
    if node != null:
        print_rich("Post-import: [b]%s[/b] -> [b]%s[/b]" % [node.name, "modified_" + node.name])
        node.name = "modified_" + node.name
        for child in node.get_children():
            iterate(child)

post_import 함수는 가져온 씬을 인수로 받습니다 (매개변수는 사실 씬의 루트 노드입니다). 마지막으로 사용되는 씬은 반환되어야 합니다. 그것은 다른 것일 수 있습니다.

스크립트를 사용하려면 "가져오기 스크립트" 카테고리 아래에 있는 가져오기 탭의 "경로" 옵션에서 스크립트를 찾으세요.

애니메이션 트리

glTF 파일에서 애니메이션만 가져오도록 선택할 수도 있습니다. 이는 모델과 별도로 애니메이션을 배포하기 위해 일부 자산 파이프라인에서 사용됩니다. 예를 들어 이를 통해 모든 캐릭터에 애니메이션 데이터를 복제할 필요 없이 여러 캐릭터에 대해 하나의 애니메이션 세트를 사용할 수 있습니다.

이렇게 하려면 FileSystem 도크에서 glTF 파일을 선택한 다음 가져오기 도크에서 가져오기 모드를 애니메이션 라이브러리로 변경합니다.

가져오기 도크에서 가져오기 유형을 애니메이션 라이브러리로 변경

가져오기 도크에서 가져오기 유형을 애니메이션 라이브러리로 변경

다시 가져오기를 클릭하고 메시지가 나타나면 편집기를 다시 시작합니다. 다시 시작하고 나서, glTF 파일은 PackedScene 대신 AnimationLibrary로 가져올 것입니다. 이 애니메이션 라이브러리는 AnimationPlayer 노드에서 참조될 수 있습니다.

가져오기 모드를 애니메이션 라이브러리로 변경한 후 표시되는 가져오기 옵션은 씬 가져오기 모드를 사용할 때와 동일하게 작동합니다. 자세한 내용은 :ref:`doc_importing_3d_scenes_using_the_import_dock`를 참조하세요.

필터 스크립트

어떤 애니메이션의 어떤 트랙을 골라낼 지 결정하기 위해 필터 스크립트를 특수한 문법으로 정의할 수 있습니다.

필터 스크립트는 가져온 모든 애니메이션에 수행됩니다. 문법은 두 가지 문항으로 이루어졌는데, 첫 번째는 어떤 애니메이션을 필터링 하는지 결정하는 것이고, 두 번째는 해당하는 애니메이션에서 개별의 트랙을 필터링 하는 것 입니다. 이름 패턴은 ?* 와일드카드를 사용해서 대소문자 구분 없는 표현식으로 매칭이 수행됩니다(내부적으로 String.matchn() 을 사용합니다).

스크립트는 항상 애니메이션 필터 문항으로 시작해야 합니다(@로 줄이 시작 부분이 표시된 바로 뒤에). 예를 들어 "_Loop"로 끝나는 모든 애니메이션에 필터를 적용하려면 다음과 같이 해야 합니다:

@+*_Loop

마찬가지로, 같은 줄에 쉼표로 구분하여 추가 패턴을 추가할 수 있습니다. 다음은 "Arm_Left"로 시작하는 이름을 가진 모든 애니메이션을 추가로 포함하고, "Attack"으로 끝나는 이름을 가진 모든 애니메이션을 제외하는 수정된 예입니다:

@+*_Loop, +Arm_Left*, -*Attack

애니메이션 필터 문항 다음에는 어떤 애니메이션의 트랙을 골라낼 지 결정하는 트랙 필터 패턴을 추가해야 합니다. 만약 필터 패턴을 정하지 않으면 골라낸 애니메이션의 모든 트랙이 그냥 버려집니다!

트랙 필터문은 애니메이션 안의 각 트랙에 순서대로 적용된다는 점에 유의하는 것이 중요합니다. 이는 한 문항에 의해 트랙이 포함되어 있더라도 이후에 나오는 규칙에 의해 여전히 버려질 수 있다는 뜻이니까요. 마찬가지로, 앞의 규칙에 의해 제외된 트랙 역시 필터 스크립트에 더 나중에 나오는 필터 규칙에 의해 다시 포함될 수 있습니다.

예를 들어서 "_Loop" 으로 끝나는 애니메이션의 모든 트랙을 추가한 뒤 "Skeleton" 으로 시작하는 트랙 중 "Control" 로 끝나는 트랙은 "Arm" 이 포함되지 않으면 제외하는 필터문은 다음과 같습니다:

@+*_Loop
+*
-Skeleton:*Control
+*Arm*

위 예제에서 "Skeleton:Leg_Control" 은 제외되지만 "Skeleton:Head""Skeleton:Arm_Left_Control" 는 포함될 것입니다.

트랙 필터 중 + 또는 - 로 시작하지 않는 줄은 모두 제외됩니다.

씬 상속

많은 상황에서, 가져온 씬을 수정하고 싶을 것입니다. 기본적으로 원본 애셋(3D 모델링 앱에서 다시 내보낸 원본 .dae, .gltf, .obj 파일)이 바뀌기 때문에 그렇게 할 수는 없고 , Godot는 전체 씬을 다시 가져올 것입니다.

하지만, 씬 상속을 사용하면 로컬로 수정하는 것이 가능합니다. 가져온 씬을 열면 다음 대화 상자가 나타납니다:

가져온 3D 씬을 편집기에서 열 때 나타나는 대화 상자

가져온 3D 씬을 편집기에서 열 때 나타나는 대화 상자

상속된 씬에서, 수정에 대한 유일한 제한은 다음과 같습니다:

  • 기본 씬에서 노드는 제거될 수 없지만 추가 노드는 어디에나 추가될 수 있습니다.

  • 하위 리소스를 편집할 수 없습니다 (이를 위해선 위에서 설명했듯 외부로 저장해야 합니다)

그 밖에는 모든 것이 허용됩니다.