런타임에 데이터스미스 사용하기

런타임에 언리얼 기반 애플리케이션에서 데이터스미스 함수 기능을 사용하는 방법을 살펴봅니다.

데이터스미스 런타임이란?

데이터스미스 런타임(Datasmith Runtime) 이란 언리얼 에디터 내 워크플로와는 반대로 런타임에 언리얼 엔진 기반 애플리케이션에서 사용할 수 있는 데이터스미스 기능의 컬렉션을 가리킵니다. 이러한 기능을 사용하여 .udatasmith 파일을 임포트하고 해당 파일을 블루프린트로 조작 가능한 애플리케이션을 생성할 수 있습니다.

Collab Viewer Direct Link

데이터스미스 다이렉트 링크(Datasmith Direct Link)는 쿠킹된 언리얼 엔진 기반 애플리케이션에서 데이터스미스 런타임 및 블루프린트를 통해 액세스할 수 있습니다.

데이터스미스 런타임을 사용하면 데이터스미스 다이렉트 링크를 활용하는 커스텀 애플리케이션을 만들거나 필요에 따라 데이터스미스 데이터를 반복작업 3D 워크플로의 일부로 시각화할 수 있습니다.

데이터스미스 런타임으로 작업하려면 프로젝트에서 다음 플러그인을 활성화해야 합니다.

  • 데이터스미스 콘텐츠

  • 데이터스미스 임포터

  • 데이터스미스 런타임

데이터스미스 런타임은 Windows 및 MacOS를 사용하는 언리얼 엔진 4와 언리얼 엔진 5에서 공식적으로 지원됩니다. 데이터스미스 런타임은 Linux에서도 작동하지만, 아직 실험단계인 만큼 불안정성이나 퍼포먼스 문제를 경험할 수도 있습니다.

블루프린트와 함께 데이터스미스 런타임 사용하기

데이터스미스 런타임은 일부 블루프린트 노드를 사용하여 다양한 데이터스미스 기능을 노출하고 옵션을 임포트합니다. 아래에는 가장 일반적인 노드가 나와 있습니다.

Runtime Nodes

가장 일반적인 데이터스미스 런타임 블루프린트 노드입니다.

Make DatasmithRuntimeImportOptions

일부 임포트 파라미터를 노출하고 데이터 구조체로 변환합니다.

Make Datasmith Runtime Import Options

입력

설명

계층구조 빌드(Build Hierarchy)

액터 계층구조를 빌드할지 여부를 결정합니다. 세부적인 계층구조를 선택할 수록 로딩 및 렌더링 시간이 길어집니다.

  • None : 데이터스미스 런타임 액터에 저장된 계층구조와 함께 소스 콘텐츠를 임포트합니다. 콘텐츠는 '월드 아웃라이너(World Outliner)'에 표시되지 않습니다.

  • Simplified : 생성되는 액터 수를 최소화하면서 소스 콘텐츠를 임포트합니다. 오브젝트 노출을 허용하여 애플리케이션이 프로퍼티를 수정할 수 있도록 하지만 씬 내 액터 수가 많기 때문에 드로 콜 수는 제한합니다.

  • Unfiltered : 전체 계층구조와 함께 소스 콘텐츠를 임포트합니다.

콜리전 빌드(Build Collision)

컴포넌트에 사용되는 콜리전 타입을 결정합니다.

  • No Collision : 피직스 엔진에 전혀 표시되지 않습니다. 최고의 퍼포먼스를 제공합니다.

  • Query Only (No Physical Collision : 공간 쿼리만 사용합니다. 폰 내비게이션처럼 피직스 시뮬레이션이 필요하지 않은 오브젝트에 유용합니다. 퍼포먼스를 향상시킵니다.

  • Physics Only (No Query Collision : 피직스 시뮬레이션만 사용합니다. 공간 쿼리가 필요하지 않은 오브젝트에 유용합니다. 퍼포먼스를 향상시킵니다.

  • Collision Enabled (Query and Physics : 공간 쿼리 및 피직스 시뮬레이션을 둘 다 사용합니다.

콜리전 타입(Collision Type)

스태틱 메시에 사용되는 콜리전 타입을 결정합니다.

  • Project Default : 프로젝트의 피직스 세팅을 사용합니다.

  • Simple and Complex : 단순 및 복합 셰이프를 사용합니다. 정규 씬 쿼리 및 콜리전에 사용되는 단순 셰이프입니다. 폴리별 복합 셰이프는 복합 씬 쿼리에 사용됩니다.

  • Use Simple Collision as Complex : 모든 씬 쿼리 및 콜리전 테스트에 단순 셰이프만 사용합니다.

  • Use Complex Collision as Simple : 폴리별 복합 셰이프가 모든 씬 쿼리 및 콜리전 테스트에 사용됩니다 스태틱 셰이프 시뮬레이션에만 사용될 수 있습니다. 씬을 내비게이션하는 동안 정밀한 콜리전이 필요한 경우 필수일 수 있습니다.

메타데이터 임포트(Import Metadata)

액터에 대한 메타데이터를 읽고 임포트합니다. 로드 시간이 길어집니다.

테셀레이션 옵션(Tesselation Options) 입력은 현재 사용되지 않습니다.

Set Import Options

데이터스미스 런타임 액터(Datasmith Runtime Actor) 를 사용하여 선택한 데이터스미스 콘텐츠의 임포트 옵션 값을 설정합니다. 데이터스미스 런타임 액터를 타깃(Target) 으로, 데이터스미스 런타임 임포트 옵션(Datasmith Runtime Import Options) 을 해당 값으로 사용합니다.

Set Import Options

Load File

지정된 파일 경로에 있는 .udatasmith 파일을 로드합니다. 입력으로 파일 경로(File Path)데이터스미스 런타임 액터 가 필요합니다.

Load File

Load File from Explorer

파일 브라우저 창을 열고 원하는 위치를 탐색하여 .udatasmith 파일을 선택합니다. 입력으로 데이터스미스 런타임 액터 가 필요합니다. 디폴트 파일 경로(Default File Path) 는 선택 사항입니다.

Load File from Explorer

'에디터에서 플레이 (PIE)' 기능은 Windows와 Mac 운영체제 모두에서 작동하지만 'Load File from Explorer'는 Windows 런타임에서만 작동합니다.

Get Direct Link Proxy

다이렉트 링크 프록시(Direct Link Proxy)라는 다이렉트 링크(Direct Link) 연결에 인터페이스를 반환합니다. 이것은 데이터스미스 다이렉트 링크 연결을 생성하는 첫 단계입니다.

Get Direct Link Proxy

Get List of Sources

데이터스미스 다이렉트 링크 소스 목록을 구합니다. 입력으로 다이렉트 링크 프록시 가 필요합니다.

Direct Link Get List of Sources

Open Connection with Index

지정된 인덱스 값에 있는 소스로 다이렉트 링크 연결을 엽니다. 입력으로 데이터스미스 런타임 액터소스 인덱스(Source Index) 가 필요합니다.

Open Connection with Index

Close Connection

지정된 데이터스미스 런타임 액터 와 연관된 열린 다이렉트 링크를 닫습니다.

Close Connection

Loading [DatasmithContent] at Runtime

데이터스미스 런타임을 사용하면 계층구조 및 액터 프로퍼티에 액세스할 수 있는 동안에도 쿠킹된 애플리케이션에서 데이터스미스 콘텐츠를 로드할 수 있습니다.

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

블루프린트를 사용하여 데이터스미스 콘텐츠를 로드하려면 다음 단계를 따릅니다.

  1. 데이터스미스 콘텐츠에 대한 앵커 포인트를 포함할 새 액터 블루프린트(Actor Blueprint) 를 생성합니다. 콘텐츠 브라우저(Content Browser) 에서 우클릭 후 컨텍스트 메뉴에서 블루프린트 클래스(Blueprint Class) 를 선택하면 됩니다. 부모 클래스 선택(Pick Parent Class) 창에서 액터(Actor) 를 선택하고 새 블루프린트 클래스의 이름을 DatasmithActor 로 짓습니다. 새 블루프린트를 더블클릭하여 에디터에서 실행합니다.

    Pick Parent Class

    해당 앵커는 임포트된 데이터스미스 콘텐츠의 원점이 됩니다. 소스 애플리케이션에서 콘텐츠가 원점에서 오프셋되어 있다면 언리얼 엔진은 콘텐츠가 임포트될 때도 앵커에서의 오프셋 상태를 유지합니다.

  2. 이벤트 그래프(Event Graph) 탭을 선택하고 Event BeginPlay 를 제외한 나머지 이벤트를 모두 제거합니다. Event BeginPlay에서 연결을 드래그하여 Spawn Actor From Class 노드를 추가합니다. 클래스(Class) 드롭다운 메뉴를 열고 DatasmithRuntimeActor 를 선택합니다. 반환값(Return Value) 을 변수로 승격하고 Anchor 로 이름을 짓습니다.

    Runtime Spawn Actor

  3. SpawnActor 에는 앵커를 스폰할 트랜스폼이 필요합니다. SpawnActor 왼쪽을 우클릭 후 Make Transform 노드를 추가합니다. Make Transform의 출력을 SpawnActor의 스폰 트랜스폼(Spawn Transform) 핀으로 드래그합니다.

    Make Transform

  4. 블루프린트를 마무리하려면 Set 노드의 실행 핀을 클릭 및 드래그한 후 Load File from Explorer 노드를 추가합니다. 앵커(Anchor) 변수에 대한 참조를 데이터스미스 런타임 액터 입력에 연결합니다.

    Runtime Load Datasmith

  5. 블루프린트를 저장(Save)컴파일(Compile) 합니다. 앵커 블루프린트의 사본을 레벨에 추가하고 플레이(Play) 를 눌러 테스트합니다.

Runtime Load From Explorer

언리얼 엔진에서 파일 탐색기 창을 열고 파일을 선택하라는 알림을 표시합니다.

블루프린트를 사용하여 데이터스미스 다이렉트 링크 생성하기

데이터스미스 런타임을 사용하여 하나 이상의 소스 애플리케이션과 언리얼 엔진 프로젝트 간 데이터스미스 다이렉트 링크를 런타임에 열 수도 있습니다.

  1. 이렇게 하려면 먼저 데이터스미스 콘텐츠의 앵커 포인트를 포함할 새 액터 블루프린트부터 생성합니다. 새 블루프린트를 더블클릭하여 에디터에서 실행합니다.

  2. 이전 샘플과 비슷하게 이벤트 그래프 탭을 선택하고 Event BeginPlay 를 제외한 나머지 이벤트를 모두 제거합니다. Event BeginPlay에서 연결을 드래그하여 Spawn Actor From Class 노드를 추가합니다. 클래스 드롭다운 메뉴를 열고 DatasmithRuntimeActor 를 선택합니다.

  3. 앵커를 스폰하려면 트랜스폼이 필요합니다. SpawnActor 왼쪽에 우클릭 후 Make Transform 노드를 추가합니다. Make Transform의 출력을 SpawnActor의 스폰 트랜스폼 핀으로 드래그합니다.

    Make Transform

  4. 다음은 애플리케이션과 소스 애플리케이션 간의 연결점으로 작동할 다이렉트 링크 프록시 가 필요합니다. Set 노드에서 연결을 드래그하여 Get Direct Link Proxy 를 생성합니다. 출력을 변수로 승격하고 Direct Link Sources Proxy 로 이름을 짓습니다. 그리고 퍼블릭으로 설정합니다.

    Load Direct Link Blueprint

  5. 내 블루프린트(My Blueprints) 패널의 함수(Functions) 섹션에서 + 버튼을 클릭하여 새 함수를 생성합니다. DirectLinkUpdate 로 이름을 짓습니다. 이 새 함수를 사용하여 런타임에 다이렉트 링크 연결을 트리거할 것입니다.

    Creating a new Blueprint Function

  6. 먼저 다이렉트 링크 프록시 변수의 사본을 구합니다. 변수에서 선을 드래그하여 Get List of Sources 노드를 생성합니다. 출력을 변수로 승격하여 다이렉트 링크 소스의 목록을 저장할 변수를 만들고, 이 변수를 퍼블릭으로 설정합니다.

    Get List of Sources

  7. Set 노드에서 선을 드래그하여 Set Import Options 노드를 생성합니다. 이 노드를 사용하여 다이렉트 링크 소스 연결 이전에 임포트 옵션을 설정합니다. 여기에는 데이터스미스 런타임 임포트 옵션 및 앵커 하나가 입력으로 필요합니다.

    Set Import Options

  8. 앵커 변수의 사본을 구해 Set Input Options의 타겟(Target) 입력에 연결합니다.

  9. 우클릭 후 Make Datasmith Runtime Import Options 노드를 생성하고 출력을 드래그하여 임포트 옵션(Import Options) 입력에 연결합니다.

    Make Import Options

  10. Set Import Options에서 선을 드래그하고 Open Connection with Index 노드를 생성하여 함수를 마무리합니다. 여기에는 앵커 하나와 소스 인덱스 가 입력이 됩니다. 앵커에 대한 참조를 '타겟' 입력에 연결합니다.

    Open Connection with Index

  11. 소스 인덱스를 저장할 새 인티저 변수를 만듭니다. Source Index 로 이름을 짓고 Open Connection with Index의 소스 인덱스 입력에 연결합니다. 인덱스 값이 0이면 목록의 첫 소스에 연결됩니다.

    Adding a Source Index

  12. 마지막으로, '내 블루프린트'의 DirectLinkUpdate 함수를 클릭하고 디테일(Details) 패널에서 에디터에서 호출(Call In Editor) 을 활성화합니다. 이 옵션은 런타임에 앵커 오브젝트의 '디테일'에서 해당 함수를 사용할 수 있도록 해줍니다.

    Call In Editor

  13. 저장컴파일 합니다. 완성된 블루프린트는 아래 샘플과 비슷할 것입니다.

소스 애플리케이션을 열고 플레이 버튼을 클릭하여 프로젝트를 실행합니다. 월드 아웃라이너 에서 앵커를 선택하고 디테일 패널에서 다이렉트 링크 업데이트(Direct Link Update) 버튼을 클릭합니다. 그런 다음 소스 애플리케이션에서 다이렉트 링크로 동기화(Synchronize with Direct Link) 버튼을 클릭합니다. 그러면 블루프린트에서 지정된 임포트 옵션을 사용하여 데이터스미스 콘텐츠가 레벨에 표시되는 것을 확인할 수 있습니다.

Runtime Direct Link

백그라운드에서 CPU를 덜 사용(Use Less CPU when in Background) 옵션을 비활성화하면 언리얼 엔진 창을 표시하지 않고 있을 때 또는 레벨의 폰이 빙의된 상태가 아닐 때도 언리얼 엔진에서 3D 뷰포트를 업데이트할 수 있습니다. 이 옵션은 일반(General) > 퍼포먼스(Performance) 아래의 에디터 개인설정(Editor Preferences) 에서 확인할 수 있습니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.