블루프린트와 Python에서 프록시 지오메트리 툴 사용하기

언리얼 에디터에서 실행한 블루프린트 또는 Python 스크립트에서 프록시 지오메트리 툴을 호출하여 에셋 준비 워크플로를 자동화하는 방법을 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

블루프린트와 Python 스크립트에서 프록시 지오메트리(Proxy Geometry) 툴을 실행할 수 있습니다. 이를 통해 언리얼 에디터 내에서 실행하는 스크립트에서 스태틱 메시 액터와 액터의 머티리얼을 결합하고 단순화하여 에셋 생성 및 데이터 준비 파이프라인을 자동화할 수 있습니다. 비주얼 정밀도를 약간만 희생하면 이를 통해 렌더링 퍼포먼스를 대폭 향상시킬 수 있습니다.

예를 들어 이 휠 어셈블리는 총 9십만개의 트라이앵글이 있는 147개의 개별 스태틱 메시 액터를 가지고 있으며 각 메시마다 별도의 머티리얼이 있습니다. 이로 인해 GPU에는 처리하기에 부담스러운 수백 개의 드로콜이 축적됩니다. 프록시 지오메트리 툴을 실행하면 액터는 단일 머티리얼을 가진 단일 모델로 병합되어 하나의 드로콜로 렌더할 수 있습니다.

이전: 스태틱 메시 수: 147

이후: 스태틱 메시 수: 1

트라이앵글 수 또한 97% 감소됩니다. 이를 통해 약간의 디포메이션이 유발되지만 스크립트에서 세팅을 조정하여 단순화와 비주얼 퀄리티 사이의 적절한 균형을 찾을 수 있습니다.

프록시 지오메트리 툴은 지오메트리에 비교적 복잡한 트랜스포메이션을 적용하며 실행을 제어하기 위한 여러 가지 세팅을 제공하기 때문에, 언리얼 에디터의 UI를 사용하여 프록시 지오메트리 툴을 사용하기 시작하는 것이 좋습니다. 툴과 세팅에 대해 확실히 이해하고 예상하는 이펙트에 대한 좋은 아이디어를 가지고 있을 때만 스크립트에서 프록시 지오메트리 툴을 호출해야 합니다. 자세한 내용은 이 섹션의 나머지 가이드를 참고하세요.

선행 단계: 에디터 스크립팅 유틸리티 플러그인(Editor Scripting Utilities Plugin)이 아직 설치되지 않은 경우 설치해야 합니다. 자세한 내용은 에디터 자동화 및 스크립트 작성을 참고하세요.

구현 방법 선택

블루프린트

Python

프록시 지오메트리 툴은 Editor Level Library > Create Proxy Mesh Actor 노드를 통해 찾을 수 있습니다.

Create Proxy Mesh Actor

이 노드에 다음의 입력을 제공해야 합니다.

  • 병합하려는 모든 스태틱 메시 액터를 가지고 있는 배열. 이는 스태틱 메시 컴포넌트를 가지고 있는 액터가 아니라 스태틱 메시 액터여야 합니다.

  • 프록시 지오메트리 툴에서 사용하는 세팅을 포함하는 에디터 스크립팅 프록시 메시 액터 생성 옵션(Editor Scripting Create Proxy Mesh Actor Option) 오브젝트. 이 오브젝트는 프록시 지오메트리 툴의 UI에 표시되는 대부분의 세팅을 표시합니다. 이러한 오브젝트 중 하나를 얻으려면 병합 옵션(Merge Options) 입력에서 왼쪽으로 드래그한 다음 EditorScriptingCreateProxyMeshActorOptions 만들기(Make EditorScriptingCreateProxyMeshActorOptions) 를 선택합니다.

    이미지를 클릭하면 전체 크기로 표시됩니다.

    이 오브젝트를 사용하여 프록시 지오메트리 툴을 위한 세팅을 제공합니다. 세부적인 세팅 대부분이 메시 프록시 세팅(Mesh Proxy Settings) 입력으로 전달하는 다른 오브젝트에 제공됩니다. 이러한 오브젝트 중 하나를 얻기 위해 위의 작업을 반복합니다. 메시 프록시 세팅 입력에서 왼쪽으로 드래그한 다음 MeshProxySettings 만들기(Make MeshProxySettings) 를 선택합니다.

    이미지를 클릭하면 전체 크기로 표시됩니다.

예를 들어 다음 스니펫에서는 '레벨 뷰포트(Level Viewport)'와 '월드 아웃라이너(World Outliner)'에서 현재 선택된 모든 액터를 프록시 메시에 병합한 후 이름과 위치가 지정된 에셋에 결과를 저장하고 레벨에 있는 원본 스태틱 메시 액터를 새롭게 생성된 프록시 에셋의 단일 인스턴스로 대체합니다.

이미지를 클릭하면 전체 크기로 표시됩니다.

프록시 지오메트리 툴이 unreal.EditorLevelLibrary.create_proxy_mesh_actor() 함수를 통해 노출됩니다. 이 함수에 다음 파라미터를 전달해야 합니다.

  • 병합하려는 모든 스태틱 메시 액터를 가지고 있는 배열. 이는 스태틱 메시 컴포넌트를 가지고 있는 액터가 아니라 스태틱 메시 액터여야 합니다.

  • 프록시 지오메트리 툴에서 사용하는 세팅을 포함하는 unreal.EditorScriptingCreateProxyMeshActorOptions 오브젝트. 이 오브젝트는 프록시 지오메트리 툴의 UI에 표시되는 대부분의 세팅을 표시합니다. 이러한 오브젝트 중 하나를 생성한 다음 프로퍼티를 구성해야 합니다.

예를 들어 다음 스니펫에서는 레벨에 있는 모든 스태틱 메시 액터를 프록시 메시에 병합한 후 이름이 'Proxy'인 에셋에 결과를 저장하고 레벨에 있는 원본 스태틱 메시 액터를 프록시 에셋의 단일 인스턴스로 대체합니다.

import unreal
actors = unreal.EditorLevelLibrary.get_selected_level_actors()
merge_options = unreal.EditorScriptingCreateProxyMeshActorOptions()
merge_options.base_package_name = "/Game/Proxy"
merge_options.destroy_source_actors = False
merge_options.new_actor_label = "Proxy"
merge_options.spawn_merged_actor = True
merge_options.mesh_proxy_settings.set_editor_property("allow_adjacency", False)
merge_options.mesh_proxy_settings.set_editor_property("allow_distance_field", False)
merge_options.mesh_proxy_settings.set_editor_property("allow_vertex_colors", False)
merge_options.mesh_proxy_settings.set_editor_property("calculate_correct_lod_model", True)
merge_options.mesh_proxy_settings.set_editor_property("compute_light_map_resolution", True)
merge_options.mesh_proxy_settings.set_editor_property("create_collision", False)
merge_options.mesh_proxy_settings.set_editor_property("generate_lightmap_u_vs", True)
merge_options.mesh_proxy_settings.set_editor_property("merge_distance", 1.0)
merge_options.mesh_proxy_settings.set_editor_property("voxel_size", 0.1)
merged_actor = unreal.EditorLevelLibrary.create_proxy_mesh_actor(actors, merge_options)