데이터스미스 임포트 프로세스

데이터스미스를 통해 언리얼 엔진으로 씬을 임포트할 때 발생할 수 있는 특정 문제와 언리얼에서 임포트한 에셋으로 작업하기 위한 단계를 자세하게 살펴봅니다.

다음 섹션에서는 데이터스미스가 씬을 변환하는 동안 처리하는 특정 문제에 대해 자세하게 설명합니다. 이러한 문제를 이해하면 데이터스미스에서 생성하는 결과를 이해하고 언리얼 에디터에서 콘텐츠로 작업하는 데 도움이 됩니다.

단위 및 스케일

언리얼 엔진에서 모든 거리는 항상 센티미터로 측정됩니다. 하지만 다른 3D 디자인 애플리케이션에서는 일반적으로 측정 단위를 선택할 수 있습니다. 소스 애플리케이션에서 다른 측정 단위를 사용하는 경우, 데이터스미스에서 씬의 스케일을 자동으로 조정하므로 지오메트리가 언리얼 엔진에서 올바른 3D 공간 위치에 동일한 실제 크기로 정확히 표시됩니다. 따라서 소스 애플리케이션에서 작업하는 방식을 바꿀 필요가 전혀 없습니다.

예를 들어 소스 애플리케이션에서 인치를 측정 단위로 사용하는 경우, 원본 씬에서 10 유닛 길이인 오브젝트는 언리얼 엔진에서 25.4 월드 유닛 길이가 됩니다.

datasmith-units-1.png

datasmith-units-2.png

소스

임포트 후

비균등 스케일이 있는 부모 및 개별 오브젝트 레벨에서 보정된 커스텀 피벗 트랜스폼이 씬 계층구조에 포함된 경우, 좌표계 변환의 복잡성으로 인해 언리얼 엔진의 결과가 초기 씬과 일치하지 않을 수 있습니다. 이 문제가 발생한 경우 원본 씬으로 돌아가서 씬 계층구조의 트랜스폼을 단순화하면 문제가 해결될 수도 있습니다.

이름 및 라벨

데이터스미스는 소스 애플리케이션에서 지오메트리에 대한 명명 정보를 탐지하고, 직접 생성하는 에셋 및 액터에 이 정보를 최대한 재사용합니다. 정확한 프로세스는 애플리케이션이나 파일 포맷에 따라 조금씩 다르며, 언리얼 엔진의 결과는 소스 애플리케이션과 약간 다를 수도 있지만 궁극적인 목적은 임포트 후에 콘텐츠를 찾고 관리할 수 있게 만드는 것입니다.

스태틱 메시의 경우 '콘텐츠 브라우저(Content Browser)'의 에셋 이름, 디스크의 에셋 파일 이름, 레벨 내 액터의 이름이 다른 경우가 많습니다.

  • '콘텐츠 브라우저' 라벨 - 데이터스미스는 소스 파일에서 발견된 명명 정보(있는 경우)를 바탕으로 '콘텐츠 브라우저'의 각 스태틱 메시 에셋에 라벨을 생성합니다. 일부 지원되는 애플리케이션 및 파일 포맷에서는 여러 오브젝트가 동일한 이름을 가질 수 있습니다. 씬에 이 같은 경우가 있다면 '콘텐츠 브라우저'에서 여러 에셋에 동일한 라벨이 생성될 수 있습니다.

  • 파일 이름 - 하지만 디스크에 있는 각 에셋의 파일 이름은 고유해야 합니다. 따라서 데이터스미스에서는 소스 애플리케이션에서 추출한 고유 식별자를 사용하여 각 에셋 파일을 명명합니다.

  • 액터 이름 - 데이터스미스는 레벨에 액터를 배치할 때마다 소스 파일의 해당 오브젝트(있는 경우)와 완전히 동일한 이름을 액터에 부여하려고 시도합니다. 고유한 이름을 찾을 수 없는 경우 '콘텐츠 브라우저'의 동일한 라벨을 재사용하여 액터를 명명합니다. 해당 이름의 액터가 이미 레벨에 있는 경우 데이터스미스는 증가하는 숫자 접미사를 붙여서 액터 이름을 고유하게 만듭니다.

예를 들어 아래 이미지에서는 여러 오브젝트가 동일한 이름을 갖는 경우를 제외하고는 소스 씬의 모든 이름을 있는 그대로 언리얼에 가져왔습니다.

소스 파일의 계층구조

언리얼의 계층구조

'콘텐츠 브라우저'의 스태틱 메시 에셋에 표시되는 라벨*과 데이터스미스가 해당 디스크 에셋에 생성하는 파일 이름*은 다릅니다. 이는 에디터에서 작업할 때 대부분의 경우 명확히 드러납니다. 하지만 블루프린트 또는 Python 스크립팅을 사용하여 에셋 또는 데이터스미스 씬 작업을 하는 경우 이 차이점에 유의해야 합니다.

트라이앵글이 향하는 방향

런타임에 최상의 퍼포먼스를 이끌어내기 위해 언리얼 엔진은 보이지 않는 트라이앵글을 모두 컬링합니다. 이렇게 하면 보이지 않는 트라이앵글을 렌더링하는 데 GPU 사이클을 낭비하지 않게 됩니다. 특히 언리얼 엔진은 모든 오브젝트에 두께가 있다고 가정합니다. 카메라 반대쪽을 향하는 트라이앵글은 오브젝트의 뒷면을 나타내는 것으로 가정되며, 오브젝트의 정면에서 봤을 때 숨겨집니다. 이는 3D 렌더링에서 널리 사용되는 최적화 기법으로, 뒷면 컬링(Back-face culling)이라고 합니다.

하지만 일부 디자인 애플리케이션에서는 표면의 앞면과 뒷면을 동일하게 구분하지 않으며, 어느 쪽에서 보든 표면을 렌더링할 수도 있습니다. 디자인 툴로 작업할 때는 지정된 표면이 향하는 방향을 알지 못할 수도 있습니다. 이로 인해 표면에 직각 방향인 표면 노멀이 내부를 향하거나 표면을 봐야 하는 방향의 반대쪽을 향하게 될 수 있습니다. 이 경우 두께가 전혀 없는 단일 벽 평면 지오메트리가 생성될 수 있습니다.

그러면 씬을 임포트한 뒤 언리얼 엔진에서는 특정 각도에서 봤을 때 씬의 일부분이 보이지 않을 수 있습니다. 심지어 모델의 일부분이 임포트되지 않은 것처럼 보일 수도 있습니다. 이는 임포트되지 않아서가 아니라 씬을 보는 데 사용하는 카메라의 반대쪽을 표면 노멀이 향하고 있기 때문입니다. 모델 주위를 회전하면 표면이 갑자기 나타나는 것을 볼 수 있습니다.

예를 들어 다음 씬(왼쪽)에서는 지오메트리가 제대로 임포트되었는데도 천장과 파이프 끝이 없는 것처럼 보입니다. 머티리얼에서 양면(Two Sided) 옵션을 활성화하면 표면이 나타납니다. 자세한 내용은 아래를 참고하세요.

단면

양면

이 문제를 해결하는 최선의 방법은 소스 애플리케이션을 활용하는 것입니다. 다음 제안을 기억해 두세요.

  • 전체 측면에서 보여야 하는 모든 오브젝트를 두껍게 모델링하고 노멀이 바깥쪽을 향하게 할 것을 적극 권장합니다.

  • 한쪽 면에서만 보여야 하는 오브젝트인 경우 소스 애플리케이션에서 표면 노멀을 뒤집은 다음 씬을 리임포트하여 누락된 메시를 바로잡을 수 있습니다. 이는 표면을 단면으로 두지만 표면이 향하는 방향을 반전함으로써 언리얼 엔진 내 필요한 방향에서 봤을 때 제대로 표시되게 합니다.

  • Rhino, 3ds Max, Cinema 4D, SketchUp 등 일부 모델링 애플리케이션에서는 뒷면을 향하는 트라이앵글을 쉽게 찾을 수 있는 뷰포트 모드를 제공합니다. 자세한 내용은 모델링 툴의 문서를 참고하세요.

하지만 소스 씬으로 돌아가지 않고 언리얼 에디터에서 문제를 해결하려는 경우에는 다음 방법을 따를 수도 있습니다.

  • 스태틱 메시 에디터(Static Mesh Editor)에서 트라이앵글의 오리엔테이션을 뒤집어 다른 방향을 향하게 할 수 있습니다. 자세한 내용은 모델링 모드 개요를 참고하세요. 하지만 트라이앵글을 반대쪽에서도 볼 수 있다면 동일한 문제가 지속될 것입니다. 이는 천장처럼 안에서만 보이는 대상에는 좋은 솔루션이지만 양쪽에서 볼 수 있는 내부 벽에는 좋지 않습니다. 소스 씬에서 이 지오메트리를 수정하고 데이터스미스 씬 에셋을 리임포트하는 경우, 스태틱 메시 에디터에서 변경한 사항을 모두 잃게 되므로 주의해야 합니다. 따라서 다른 이유로 인해 돌아가서 지오메트리를 수정해야 하는 경우에는 돌아가는 즉시 SketchUp에서 면의 오리엔테이션을 수정해야 합니다.

  • 머티리얼 에디터(Material Editor)에서 머티리얼을 양면으로 만들 수 있습니다. 이렇게 하면 표면을 어느 쪽에서 보든 언리얼 엔진이 표면을 렌더링합니다. 처음에는 좋은 솔루션 같지만 스태틱(Static) 또는 스테이셔너리(Stationary) 라이팅과 함께 사용하면 시각적 아티팩트를 생성하는 경향이 있는데, 이는 표면 양쪽이 라이트맵 텍스처에서 동일한 공간을 사용하기 때문입니다. 머티리얼이 머티리얼 인스턴스인 경우 머티리얼 에디터의 디테일(Details) 패널에서 일반(General) > 머티리얼 프로퍼티 오버라이드(Material Property Overrides) > 양면(Two Sided) 을 확인합니다.

    양면 머티리얼 프로퍼티 오버라이드

    그렇지 않은 경우 머티리얼 에디터의 디테일 패널에서 머티리얼(Material) > 양면 을 확인합니다.

    양면 머티리얼 프로퍼티

  • 면의 비저빌리티 자체가 문제라기보다는 오브젝트를 통과하는 라이트만 문제일 경우(예: 머리 위 디렉셔널 라이트를 제대로 차단하지 않는 천장) 양면에서 섀도를 캐스트하도록 스태틱 메시 액터를 구성할 수 있습니다. 디테일 패널에서 라이팅(Lighting) > 섀도 양면(Shadow Two Sided) 세팅을 확인합니다.

언리얼 엔진은 다양한 씬 라이팅 방법을 제공합니다. 최고의 런타임 퍼포먼스를 제공하며 일반적으로 가장 부드럽고 사실적인 인다이렉트 일루미네이션 스프레드는 구운 라이팅입니다. 언리얼 엔진에서 이 접근 방식을 사용하려면 씬에서 라이트의 모빌리티(Mobility) 세팅을 스태틱 또는 스테이셔너리 로 선택하고 언리얼 에디터에서 라이트매스(Lightmass)라는 툴을 사용하여 씬의 라이팅을 빌드합니다. 이렇게 하면 스태틱 또는 스테이셔너리 라이트에서 씬의 각 오브젝트에 부딪치는 라이트를 계산하고 *라이트맵*이라는 특수한 텍스처 유형으로 저장합니다. 런타임에서 이 라이팅 정보가 각 오브젝트의 라이트맵 텍스처에서 표면에 적용됩니다.

이 시스템이 작동하려면 스태틱 메시의 모든 버텍스가 라이트맵 텍스처의 2D 공간 내 고유 좌표에 매핑되어야 합니다. 이러한 매핑은 UV 세트 또는 UV 채널이라고 합니다. 또한 이 2D 좌표 공간은 메시의 트라이앵글 2개가 2D 텍스처 공간에서 서로 겹치지 않게 배치되어야 합니다. 메시에서 두 트라이앵글이 2D 텍스처의 동일한 영역에 매핑되면 라이트매스가 각 트라이앵글의 고유한 라이트 및 섀도 패턴을 저장할 수 없습니다. 이 경우 런타임에서 비정상적인 라이팅 아티팩트가 발생합니다.

모든 스태틱 메시가 스태틱 라이팅을 받을 준비가 되었는지 확인하기 위해 데이터스미스는 스태틱 메시를 임포트할 때마다 자동으로 언리얼 에디터의 자동 UV 언랩 시스템을 호출합니다. 이 프로세스는 각 스태틱 메시에 다음과 같이 두 개의 새 UV 세트를 추가합니다.

  • 하나는 메시를 구성하는 트라이앵글을 평평한 2D 공간 표현으로 단순히 언랩하는 것입니다. 이는 메시를 여러 개의 작은 '아일랜드'로 분해합니다. 각 아일랜드는 메시 표면의 연결된 섹션을 나타냅니다.

  • 그런 다음 아일랜드 주변의 낭비되는 공간을 최소화하고 겹치지 않는 레이아웃으로 첫 라이트맵의 아일랜드가 재배열되고 크기 조정됩니다. 이는 레벨에서 라이팅을 빌드할 때 오브젝트의 라이트맵에 사용되는 최종 레이아웃입니다.

그런 다음 데이터스미스가 자동으로 스태틱 메시 에셋을 구성하여 두 번째로 생성된 UV를 라이트맵 저장 및 적용에 사용합니다.

3ds Max를 사용하고 있고 이미 라이트맵에 사용할 UV 채널을 구성한 경우 3ds Max용 데이터스미스 가이드를 참고하세요.

콜리전 및 피직스

기본적으로 데이터스미스는 생성하는 스태틱 메시 에셋에 피직스를 구성하지 않습니다. 임포트한 후에 언리얼 에디터에서 스태틱 메시에 피직스를 구성할 수 있습니다. 자세한 내용은 스태틱 메시에 콜리전 구성 또는 블루프린트와 Python에서 스태틱 메시로 콜리전 구성을 참고하세요.

3ds Max를 사용하여 작업하는 경우 3ds Max에서 커스텀 지오메트리를 모델링할 수 있으며, 데이터스미스 임포터가 자동으로 해당 지오메트리를 생성한 스태틱 메시 에셋에 할당하게 할 수 있습니다. 자세한 내용은 3ds Max용 데이터스미스 페이지를 참고하세요.

라이트

데이터스미스는 지원되는 파일 포맷에서 라이트 소스를 임포트하고 언리얼 엔진이 지원하는 가장 적절한 라이트 유형으로 자동 변환합니다. 일반적으로 포인트 라이트(Point Light), 스포트 라이트(Spot Light), 렉트 에이리어 라이트(Rectangular Area Light) 또는 디렉셔널 라이트(Directional Light)가 이러한 유형에 해당합니다.

에어리어, 플레인 및 볼륨 라이트

3ds Max와 Cinema 4D 등 일부 애플리케이션은 2D 셰이프 또는 3D 볼륨에서 발산되는 라이트를 지원합니다. 언리얼 엔진에는 이에 정확히 대응하는 라이트 유형이 없습니다. 여기에는 멘탈 레이 에어리어 라이트, V-Ray 및 코로나 플레인, 디스크, 돔, 구체 라이트 등이 있습니다. 데이터스미스가 이러한 에어리어 라이트 중 하나를 임포트하는 경우 특수한 커스텀 블루프린트 클래스인 DatasmithAreaLightMesh 를 사용하여 라이트의 동작을 모방합니다.

에어리어 라이트 꺼짐

에어리어 라이트 켜짐

기본적으로 이 블루프린트는 자동 생성된 이미시브 표면을 자동 생성된 렉트 라이트, 포인트 라이트 또는 스포트 라이트와 쌍으로 연결합니다.

  • 이미시브 표면의 역할은 레벨의 3D 공간 및 다른 표면의 리플렉션에서 눈에 보이는 물리적 라이트 규모를 나타내는 것입니다.

  • 렉트 라이트, 포인트 라이트 또는 스포트 라이트의 역할은 실제 라이트를 씬으로 발산하는 것입니다.

이미시브 글로우의 셰이프, 크기, 색, 강도와 라이트 액터의 프로퍼티를 제어할 수 있습니다. 이렇게 하려면 레벨 뷰포트(Level Viewport) 또는 월드 아웃라이너(World Outliner) 에서 DatasmithAreaLightMesh 액터를 선택하고 디테일 패널의 라이트(Light) 카테고리 세팅을 사용하면 됩니다. 예를 들면 다음과 같습니다.

컬러(Color), 강도(Intensity) 같은 일부 세팅은 이미시브 글로우와 라이트 액터에 모두 영향을 미칩니다.

이렇게 구성하면 라이트가 씬에서 시각적으로 표시되고 주변 오브젝트를 밝힙니다. 하지만 소스 애플리케이션에서 수행하는 오프라인 렌더링과 달리 DatasmithAreaLightMesh 가 스포트 라이트 또는 포인트 라이트를 사용하는 경우, DatasmithAreaLightMesh가 레벨에 발산하는 실제 라이트는 전체 표면이 아닌 단일 포인트에서 캐스트됩니다.

라이트매스를 사용하여 라이팅을 굽든 다이내믹 라이팅을 사용하든 이미시브 표면은 현재 아무런 라이트도 씬에 캐스트하지 않습니다. 레벨의 주변 오브젝트를 실제로 밝히는 것은 포인트 라이트와 스포트 라이트 컴포넌트뿐입니다.

머티리얼

데이터스미스 임포트 프로세스는 언리얼 엔진 프로젝트에 새 머티리얼 에셋을 생성하여 임포트하는 씬에서 인식된 다양한 지오메트리 표면 프로퍼티 세트를 나타냅니다. 씬 트랜스포메이션의 목적은 표면 프로퍼티를 최대한 충실하게 옮기는 것이지만, 임포트한 다음에 머티리얼을 미세조정하고 싶을 수 있습니다. 이 경우에는 머티리얼 에셋을 더블클릭하여 편집하면 됩니다.

Materials 폴더에 있는 대부분의 머티리얼 에셋은 머티리얼 인스턴스입니다. 머티리얼 인스턴스를 편집할 때는 부모 또는 '마스터' 머티리얼에 의해 사전 설정된 세팅 목록을 볼 수 있습니다. 예를 들어 다음 이미지는 SketchUp에서 임포트된 모델에 생성된 머티리얼 인스턴스를 보여줍니다.

머티리얼 인스턴스가 무엇인지, 어떻게 작업하는지에 대한 자세한 내용은 인스턴스드 머티리얼머티리얼 인스턴스 생성 및 사용 페이지를 참고하세요.

각 머티리얼 인스턴스에는 부모 머티리얼도 있습니다. 부모 머티리얼은 블루프린트와 유사한 노드 그래프를 포함하는 다른 유형의 머티리얼 에셋입니다. 이 그래프는 언리얼 엔진이 부모 머티리얼 또는 적용된 관련 머티리얼 인스턴스가 있는 표면을 렌더링해야 하는 경우 GPU에서 수행되는 실제 연산을 결정합니다. 부모 머티리얼 그래프의 구성 방식은 관련 머티리얼 인스턴스에서 노출된 세팅과 해당 세팅이 사용되는 방식도 제어합니다.

데이터스미스는 소스 애플리케이션을 바탕으로 다음 원칙에 따라 머티리얼 인스턴스에 서로 다른 부모 머티리얼을 할당합니다.

  • 대부분의 경우 데이터스미스는 각 머티리얼 인스턴스에 데이터스미스 플러그인 내의 기존 부모 머티리얼을 할당합니다. 일반적으로 이러한 부모 머티리얼에 의해 노출되는 사전 정의된 세팅은 소스 애플리케이션에서 사용 가능한 머티리얼 생성 세팅과 매우 유사합니다.

    데이터스미스가 프로젝트에서 생성한 각 머티리얼 인스턴스의 이러한 노출된 세팅은 자유롭게 편집할 수 있습니다. 데이터스미스가 제공하는 각 부모 머티리얼은 다음과 같은 프로퍼티 세트를 제공합니다.

    • Datasmith_Color - 이 부모 머티리얼은 주로 CAD 모델을 임포트하는 경우 단색 및 텍스처 표면에 사용됩니다. 자세한 내용은 아래의 데이터스미스 컬러 머티리얼을 참고하세요.

    • SketchUpMaster - 이 부모 머티리얼은 SketchUp에서 임포트한 모든 표면에 사용됩니다. 자세한 내용은 SketchUp Pro 상호운용 가이드를 참고하세요.

    • RevitMaster - 이 부모 머티리얼은 Revit에서 임포트한 모든 표면에 사용됩니다. 자세한 내용은 Revit 상호운용 가이드를 참고하세요.

  • 3ds Max 또는 Rhino에서 콘텐츠를 임포트하는 경우 데이터스미스가 프로젝트의 Materials/Master 폴더에 새 부모 머티리얼도 생성할 수 있습니다. 3ds Max는 대부분의 다른 소스 애플리케이션보다 훨씬 풍부한 머티리얼 생성 워크플로를 제공하며, 이는 언리얼 엔진 머티리얼 그래프와 개념적으로 유사합니다. 따라서 데이터스미스는 일반적으로 3ds Max의 커스텀 머티리얼과 매우 유사한 새 마스터 머티리얼을 생성할 수 있으며, 사전 설정된 그래프 및 노출 세팅 목록을 갖는 사전 설정된 부모 머티리얼을 재사용할 필요가 없습니다. 이 경우에도 데이터스미스는 일반적으로 해당 커스텀 부모 머티리얼의 머티리얼 인스턴스를 생성합니다. 그런 다음 해당 머티리얼 인스턴스를 씬 내의 스태틱 메시 액터와 스태틱 메시 에셋에 적용합니다. 대부분의 경우 머티리얼 인스턴스의 프로퍼티를 수정하는 것만으로도 렌더링된 결과를 잘 제어할 수 있습니다. 3ds Max 머티리얼의 일부 유형에서는 데이터스미스가 머티리얼 인스턴스 생성을 건너뛸 수도 있습니다. 이 경우 새 부모 머티리얼이 스태틱 메시 에셋 및 액터에 할당됩니다.

머티리얼 인스턴스가 프로퍼티를 바탕으로 표면 셰이드 방식을 결정할 때 사용하는 실제 머티리얼 그래프를 변경하려면 부모 머티리얼을 복제하고 복제된 부모의 프로퍼티를 수정해야 합니다. 이 프로세스에 대한 자세한 내용은 데이터스미스 마스터 머티리얼 수정 페이지를 참고하세요.

데이터스미스가 생성한 머티리얼을 사용하여 작업하는 대신, 다른 물리 기반 머티리얼을 사용하여 데이터스미스가 생성한 머티리얼을 완전히 대체할 수도 있습니다. 이 경우 언리얼 에디터에서 직접 생성한 머티리얼 또는 타사의 머티리얼을 사용할 수 있습니다.

데이터스미스 컬러 머티리얼

수많은 컴퓨터 지원 설계(Computer-Aided Design, CAD) 애플리케이션은 지오메트리 셰이드를 위해 단순한 표면 컬러를 사용합니다. 데이터스미스는 일반적으로 이러한 표면을 다음과 같이 Datasmith_Color 머티리얼의 인스턴스로 언리얼에 가져옵니다.

  • 이 머티리얼의 컬러는 일반적으로 소스 씬의 컬러와 완전히 일치하도록 사전 설정됩니다. 언리얼 엔진에서 이러한 머티리얼을 사용하는 경우에는 컬러 값의 밝기에 특히 주의를 기울여야 합니다. 때로는 디자인 툴이 순백색처럼 아주 밝은 인공적인 표면 컬러를 허용합니다. 사실적인 라이팅을 구현하려면 이런 값을 대폭 줄이는 것이 좋습니다.

  • 데이터스미스는 일반적으로 소스 머티리얼의 오파시티를 따릅니다. 유리 패널처럼 소스 씬의 표면 컬러가 반투명으로 설정된 경우 데이터스미스는 관련 오파시티를 '컬러' 세팅의 알파(Alpha) 채널로 가져옵니다. 알파 채널을 사용하여 언리얼 에디터에서 기존의 불투명한 머티리얼을 반투명하게 만들려면 머티리얼의 블렌딩 모드도 변경해야 합니다. 일반(General) 섹션에서 머티리얼 프로퍼티 오버라이드(Material Property Overrides) 그룹을 펼치고, 블렌드 모드(Blend Mode) 옵션을 체크한 뒤 값을 반투명(Translucent) 으로 설정합니다. 

  • Datasmith_Color 부모 머티리얼에서는 세 가지 텍스처 맵을 사용할 수 있습니다. 표면의 베이스 컬러를 제공(컬러 세팅 오버라이드)하는 디퓨즈 맵, 섬세한 표면 디테일을 제공하는 노멀 맵, 동일한 표면의 여러 부분이 다양한 오파시티 값을 갖게 해주는 투명 맵이 그것입니다. 데이터스미스는 소스 애플리케이션에서 이러한 텍스처 맵을 익스포트할 수 있는 경우 관련 텍스처 맵 세팅을 사용할 수 있습니다. 단색 Datasmith_Color 인스턴스가 있고 표면의 사실감을 높이기 위해 이러한 텍스처 맵을 사용하려는 경우, 관련 세팅을 활성화하고 텍스처 에셋을 할당하는 것이 좋습니다. 맵(Map) 세팅 가운데 하나를 활성화하면 사용할 텍스처를 설정할 수 있는 새 세팅이 텍스처 파라미터 값(Texture Parameter Values) 아래에 나타납니다.

    텍스처 맵이 있는 데이터스미스 컬러 인스턴스

    하지만 머티리얼을 처음부터 직접 생성하는 방법을 배워 러프니스(Roughness), 메탈릭(Metallic) 프로퍼티 등 Datasmith_Color 부모 머티리얼에 의해 노출되지 않는 언리얼 엔진 렌더러의 다른 물리 기반 프로퍼티를 활용하는 것이 더 좋습니다. 자세한 내용은 물리 기반 머티리얼 페이지를 참고하세요.

애니메이션

애니메이팅된 3D 트랜스폼이 있는 오브젝트(이동, 회전 및/또는 스케일 값이 시간에 따라 변하는 오브젝트)가 소스 씬에 포함된 경우 데이터스미스는 해당 애니메이션을 언리얼 엔진 프로젝트로 임포트할 수 있습니다. 데이터스미스는 씬 내의 각 애니메이팅된 오브젝트 트랙을 포함하는 새 레벨 시퀀스를 생성하고, 이 레벨 시퀀스를 데이터스미스 씬 에셋 옆의 Animations 폴더에 저장합니다. 이 레벨 시퀀스를 사용하여 언리얼 에디터 또는 언리얼 엔진에서 런타임에 애니메이션을 재생할 수 있습니다.

예를 들어 다음 3ds Max 씬에서 차고 문 섹션은 스플라인을 따라 움직이도록 애니메이팅되었으며, 그와 동시에 카메라는 오브젝트를 중심으로 회전하도록 애니메이팅되었습니다.

임포트한 다음에는 레벨 시퀀스 에셋을 콘텐츠 브라우저 에서 더블클릭하여 시퀀서 UI에서 열고 애니메이션을 재생할 수 있습니다.

예를 들어 다음 비디오에서 레벨 뷰포트는 데이터스미스 씬 내 카메라 뷰를 표시하도록 설정되었으므로 애니메이팅된 결과가 3ds Max의 원본과 동일하게 나타납니다.

이 워크플로와 관련해 중요한 사항은 다음과 같습니다.

  • 데이터스미스는 애니메이션 커브를 임포트하지 않습니다. 그 대신 원본 소스 애니메이션의 프레임마다 오브젝트의 현재 트랜스폼을 포함하는 각 애니메이팅된 오브젝트의 키프레임을 굽습니다.

  • 데이터스미스는 서브오브젝트, 메시 디포메이션, 오브젝트 프로퍼티에 대한 애니메이션 또는 스켈레탈 릭 애니메이션을 처리하지 않습니다. 3D 공간에서 씬 오브젝트의 전반적인 이동, 회전 또는 스케일을 변경하는 애니메이션만 처리합니다.

레벨 시퀀스가 무엇인지, 시퀀서 UI에서 어떻게 작동하는지에 대한 자세한 내용은 시퀀서 에디터 페이지를 참고하세요.

애니메이션 임포트는 현재 3ds Max, Cinema 4D, VRED, Deltagen, glTF 파일에서 임포트한 씬에서만 지원됩니다. 익스포트된 데이터스미스 파일에 3ds Max 씬의 애니메이션을 포함하는 방법에 대한 자세한 내용은 3ds Max 에서 데이터스미스 콘텐츠 익스포트 페이지를 참고하세요.

카메라 애니메이션 렌더링

애니메이팅된 카메라가 소스 씬에 포함된 경우 데이터스미스가 생성하는 레벨 시퀀스는 언리얼 엔진 레벨에서 해당하는 CineCameraActor 트랙을 포함합니다. 이 트랙에는 3D 공간에서 움직이고 회전하는 해당 카메라의 3D 트랜스폼을 저장하는 키프레임이 포함됩니다. 월드 아웃라이너 에서 CineCameraActor를 선택하고 언리얼 에디터에서 레벨 시퀀스를 플레이하면 레벨 뷰포트의 카메라 프리뷰 창이 카메라 시점에서 애니메이션을 재생합니다.

하지만 애니메이팅된 카메라 시점에서 디스크에 무비 파일 또는 이미지 시퀀스로 레벨 시퀀스를 렌더링하려면 우선 카메라 컷(Camera Cut) 트랙을 레벨 시퀀스에 추가하고 애니메이팅된 카메라를 해당 카메라 컷 트랙에 추가해야 합니다.

  1. 레벨 시퀀스를 더블클릭하여 시퀀서 UI에서 엽니다.

  2. + 트랙(+ Track) 버튼을 클릭하고 카메라 컷 트랙(Camera Cut Track) 을 메뉴에서 선택합니다.

    카메라 컷 트랙 추가

  3. + 카메라(+ Camera) 버튼을 새 카메라 컷 트랙에서 클릭하고 사용할 시점이 있는 카메라를 선택합니다. 이미 레벨 시퀀스에서 애니메이팅된 카메라를 사용하려면 기존 바인딩(Existing Binding) 목록에서 선택하면 됩니다.

    카메라 컷 트랙에 카메라 추가

    애니메이팅된 트랙이 레벨 시퀀스에 많은 경우 기존 바인딩 목록에서 원하는 카메라를 찾기 어려울 수 있습니다. 이 경우에는 새 바인딩(New Binding) 목록에서 카메라를 선택하거나 월드 아웃라이너 에서 CineCameraActor를 시퀀서 UI의 새 카메라 컷 트랙으로 드래그하면 됩니다.

  4. CineCameraActor는 카메라 컷 트랙에서 타임라인의 블록으로 나타납니다. 필요한 경우 이 블록의 왼쪽 및 오른쪽 경계를 드래그하여 애니메이션의 시작과 끝에 맞춥니다.

    카메라 컷 트랙 타임라인의 카메라

  5. 다음에 레벨 시퀀스를 렌더링할 때는 카메라 컷 트랙의 카메라 시점에서 각 프레임을 렌더링합니다.

여러 개의 CineCameraActor를 카메라 컷 트랙에 추가하여 시간에 따라 렌더가 자동으로 그 사이를 오가게 만들 수 있습니다.

자세한 내용은 카메라 컷 작업테이크 레코더를 참고하세요.

여러 레벨에서 애니메이션 사용

모든 레벨 시퀀스에는 특정 단일 레벨 내 액터에 대한 레퍼런스가 포함됩니다. 데이터스미스를 사용하여 애니메이션이 포함된 씬을 임포트할 때 레벨 시퀀스는 씬 임포트 시 열어 둔 레벨 내의 애니메이팅된 액터에 대한 레퍼런스를 포함합니다.

나중에 동일한 데이터스미스 씬 에셋을 다른 레벨에 드롭하면 레벨 시퀀스는 이 새 레벨에서 동일한 액터를 찾지 못합니다. 트랙 이름이 시퀀서에 빨간색으로 표시되며, 새 레벨이 열린 상태에서 시퀀스를 플레이해도 아무런 효과가 나타나지 않습니다. 이 문제를 해결할 수 있는 몇 가지 방법은 다음과 같습니다.

  • 새 레벨에서 액터 사본을 가리키도록 레벨 시퀀스를 업데이트할 수 있습니다.

    새 레벨이 열린 상태에서 시퀀서 툴바의 일반 세팅(General Settings) 아이콘을 클릭하고 메뉴의 액터 레퍼런스 고치기(Fix Actor References) 를 선택합니다.

    액터 트랙이 평상시 컬러로 돌아갑니다. 그런 다음 변경 사항을 레벨 시퀀스에 저장합니다.

    레벨 시퀀스가 이제 새 레벨을 참조하므로 원본 레벨에서는 작동하지 않습니다. 레벨 시퀀스는 한 번에 하나의 레벨에서만 작동됩니다.

  • 액터 레퍼런스를 위 설명대로 고치기 전에 '콘텐츠 브라우저'에서 레벨 시퀀스 에셋을 복제할 수 있습니다. 그러면 콘텐츠를 임포트한 원본 레벨에서 작동하는 레벨 시퀀스와 새 레벨에서 작동하는 레벨 시퀀스가 모두 준비됩니다.

    데이터스미스 씬 에셋을 리임포트하면 원본 레벨 시퀀스만 소스 씬의 애니메이션 변경 사항으로 업데이트됩니다. 복제본을 재생성하고 액터 레퍼런스를 다시 고쳐야 할 수도 있습니다.

  • 임포트된 동일한 레벨 시퀀스 애니메이션을 여러 레벨에서 사용해야 하는 경우 *서브 레벨*을 사용하는 것이 좋습니다. 데이터스미스 씬을 빈 레벨에 임포트한 후 애니메이션을 재생할 각 레벨 내 서브레벨로 해당 레벨을 추가할 수 있습니다. 서브레벨이 무엇인지, 어떻게 사용하는지에 대한 자세한 내용은 다수의 레벨 관리를 참고하세요.

애니메이션 타이밍 및 프레임 정확도

여러 트랙 및 키프레임을 포함하는 복잡한 애니메이션을 재생하면 애니메이션의 프레임 레이트와 언리얼 엔진에 의해 렌더링되는 초당 프레임 수가 일치하지 않아 재생이 조정되면서 멈춤 현상과 '튀는 현상'이 나타날 수 있습니다. 이 문제를 방지하고 최대한 매끄럽게 재생하기 위해 데이터스미스는 생성하는 레벨 시퀀스에서 디스플레이 속도를 실행시간에 잠금(Lock to Display Rate at Runtime) 프로퍼티를 항상 활성화합니다.

다음과 같이 시퀀서 UI에서 이 세팅을 찾을 수 있습니다.

이 세팅을 사용하면 애니메이션이 더욱 부드럽게 재생됩니다. 하지만 언리얼 엔진의 최대 프레임 레이트를 애니메이션의 프레임 레이트로 제한하므로 유의해야 합니다. 언리얼 엔진을 더 높은 프레임 레이트로 실행해야 하는 경우에는 적절한 솔루션이 아닐 수도 있습니다. 예를 들어 애니메이션 클립이 소스 애플리케이션에서 초당 24프레임 또는 30프레임으로 생성되었지만 VR에서 이 애니메이션을 초당 90프레임으로 재생하려는 경우, 언리얼 엔진의 프레임 레이트를 애니메이션의 프레임 레이트로 제한하는 것은 좋은 솔루션이 아닐 수도 있습니다. 이러한 경우에는 레벨 시퀀스 에셋에서 이 옵션을 비활성화하는 것이 좋습니다.

레이어

소스 애플리케이션에서 콘텐츠를 레이어 또는 유사한 콘텐츠로 구성할 수 있는 경우, 데이터스미스는 이러한 구성을 언리얼 에디터에서 보존합니다. 창(Windows) > 레이어(Layers) 를 클릭하면 표시되는 레이어 창에서 레이어를 표시하고 숨기거나, 레이어 내의 모든 오브젝트를 빠르게 찾고 선택할 수 있습니다.

하지만 언리얼 에디터는 중첩된 레이어를 지원하지 않습니다. 소스 씬이 중첩된 레이어를 사용하는 경우 데이터스미스는 레이어 계층구조를 단일 목록으로 자동 평탄화합니다.

언리얼 에디터에서 레이어로 작업하는 방법에 대한 자세한 내용은 레이어 패널 페이지를 참고하세요.

메타데이터

일부 소스 파일 포맷의 경우 데이터스미스는 소스 애플리케이션에서 설정한 씬의 지오메트리 오브젝트에 대한 메타데이터를 임포트합니다. 블루프린트 및 Python 스크립트를 사용하여 언리얼 에디터에서 이 메타데이터에 액세스할 수 있습니다. 이 시스템에 대한 자세한 내용은 데이터스미스 메타데이터 사용법 페이지를 참고하세요.

애플리케이션별 기술 메타데이터

일부 타사 애플리케이션 및 파일 포맷에서는 오브젝트의 고유 ID, 오브젝트 클래스 또는 기타 애플리케이션별 데이터 같은 개별 씬 오브젝트에 대한 기술 메타데이터 값에 액세스할 수 있습니다. 데이터스미스는 이러한 기술 데이터를 컴포넌트 태그에 임포트합니다. 여기서 컴포넌트 태그는 데이터스미스가 레벨 내 각 오브젝트의 지오메트리를 나타내는 스태틱 메시 컴포넌트에 할당하는 태그입니다.

이 기술 메타데이터에 액세스하려면 다음 단계를 따릅니다.

  1. 레벨 뷰포트 또는 월드 아웃라이너 에서 확인하려는 컴포넌트 태그가 있는 액터를 선택합니다.

  2. 디테일 패널에서 액터에 할당된 스태틱 메시 컴포넌트를 선택합니다. 스태틱 메시 컴포넌트 선택

  3. 디테일 패널에서 스크롤을 내려 태그(Tags) > 컴포넌트 태그(Component Tags) 목록을 찾습니다. 컴포넌트 태그 목록 예를 들어 위 이미지는 3ds Max에서 임포트한 오브젝트를 보여줍니다. 관련 컴포넌트 태그에는 3ds Max에 있는 해당 원본 오브젝트의 클래스 및 상위 클래스, 오브젝트의 핸들 ID, 3ds Max가 오브젝트를 나타내는 방식과 관련된 기타 정보가 포함되어 있습니다.

이러한 기술 정보는 일반적으로 오브젝트를 생성한 소스 애플리케이션에 따라 다릅니다. 따라서 이전 섹션에서 설명한 데이터스미스 메타데이터와는 구분됩니다. 이와 달리 데이터스미스 메타데이터는 일반적으로 BIM 데이터, 생성 프로퍼티, 비용 또는 제조사 같은 개별 씬 오브젝트의 '실제' 정보를 나타냅니다. 또는 프로덕션 워크플로에서 특정 의미를 갖는 커스텀 사용자 정의 프로퍼티를 나타낼 수도 있습니다.

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