Ring Shader – Unreal decal


📌 언리얼 엔진에서 링 셰이더를 이용한 데칼 VFX를 제작하는 핵심 과정은 무엇인가요?

월드 포지션과 액터 로케이션의 거리값을 이용해 원형 그라데이션을 만들고, 이를 데칼 머티리얼에 적용하여 시간에 따라 퍼져나가다 폭발하는 링 효과를 제작하는 것이 핵심입니다.

💡 데칼 VFX가 DepthFade나 PostProcess 방식보다 유리한 점은 무엇인가요?

데칼은 면의 흐름과 상관없이 띠의 두께가 일정하게 유지되며, 개별 오브젝트마다 효과를 제어하기 용이하여 여러 개의 링 효과를 독립적으로 표현할 수 있습니다.

언리얼 엔진에서 링 셰이더를 활용해 폭발 효과를 만드는 핵심 공식을 10분 만에 배울 수 있습니다. 데칼을 이용해 어떤 오브젝트에도 일정한 두께의 링 효과를 적용하고, 블루프린트로 타이밍과 속도까지 완벽하게 제어하는 실전 팁을 얻어가세요. VFX 제작의 효율성을 극대화하고 싶다면 놓치지 마세요!

1. 언리얼 엔진 링 셰이더를 활용한 폭발 효과 제작

언리얼 엔진에서 링 셰이더와 블루프린트를 활용하여 폭발 시 링 효과가 점점 빨라지다가 터지는 VFX를 제작하는 방법을 설명한다.

1.1. 데칼 방식과 댑스페이드 방식의 차이점

  1. 댑스페이드(DepthFade) 방식의 문제점
    1. 메시를 이용한 효과로, 메시가 겹쳐지는 부분에서 띠가 가늘어지는 문제점이 발생한다. 
  2. 데칼(Decal) 방식의 장점
    1. 면의 흐름(수직, 수평 등)과 상관없이 띠의 두께가 일정하게 유지되는 장점이 있다. 
    2. 따라서 본 영상에서는 데칼 방식을 사용하여 띠 효과를 제작한다. 

1.2. 링 셰이더 머티리얼 제작

  1. 머티리얼 설정
    1. 머티리얼 도메인을 서피스(Surface)가 아닌 디퍼드 데칼(Deferred Decal)로 설정한다. 
    2. 투명도를 지원하기 위해 블렌드 모드를 트랜슬루센트(Translucent)로 변경한다. 
  2. 띠 효과 원리 이해
    1. 띠 효과는 액터의 로케이션으로부터 면의 방향과 상관없이 항상 일정한 거리의 그라데이션을 만드는 것이 핵심이다. 
    2. 이를 위해 셰이더가 뿌려질 공간의 월드 포지션(World Position) 값과 액터의 로케이션(Location) 값이 필요하다. 
    3. 액터 로케이션(시작점)에서 월드 포지션(끝점)을 빼서 벡터 방향을 얻고, 이 벡터의 길이(Length)를 알아내어 거리값을 계산한다. 
  3. 거리값 기반 그라데이션 생성
    1. 월드 포지션에서 액터 로케이션을 빼고, 그 결과를 랭스(Length) 노드로 변환한다. 
    2. 이 값을 이미시브 컬러에 연결하면, 가운데는 거리값이 0에 가까워 검은색이고 바깥으로 갈수록 값이 증가하는 원형 그라데이션이 생성된다. 
  4. 띠 형태 만들기 (중앙 비우기)
    1. 원형 그라데이션의 안쪽을 비우기 위해 서브트랙트(Subtract) 노드를 사용하여 일정한 거리값(예: 100 또는 200)을 빼준다. 
    2. 이 비어 있는 영역이 시간에 따라 작아졌다 커지도록 타임(Time) 노드와 프랙(Frac) 노드를 활용한다. 
      1. 타임 스케일(Time Scale) 스칼라 파라미터를 만들어 속도를 조절한다. 
      2. 타임 노드는 0초부터 계속 증가하므로, 프랙 노드를 사용하여 값을 0에서 1 사이로 반복되게 만든다. 
    3. 멀티플라이(Multiply) 노드를 사용하여 링 맥스 레디우스(Ring Max Radius) 스칼라 파라미터(기본값 128)로 거리값을 조절하고, 이를 앞서 만든 월드 포지션 길이값에서 빼주면 원이 서서히 커지는 효과를 볼 수 있다. 
  5. 띠의 부드러운 경계 및 두께 조절
    1. 스무스 스텝(Smooth Step) 노드를 사용하여 값의 변화를 급격하게 만들어 띠의 경계를 부드럽게 처리한다. 
    2. 맥스(Max) 값에 띠의 두께(예: 10유닛)를 지정하여 폭을 조절한다. 
    3. 원 마이너스(One Minus) 노드를 사용하여 값을 뒤집어 원하는 띠 형태를 만든다. 
  6. 절댓값(Abs)을 이용한 띠 형태 완성
    1. 현재 그래프는 0보다 작은 구간이 존재하는데, 이 구간은 보이지 않아야 한다. 
    2. 앱솔루트(Abs) 노드를 사용하여 마이너스 값을 절댓값으로 변환하면 V자 형태의 그래프가 된다. 
    3. 이 V자 그래프에 스무스 스텝을 적용하면 직선이었던 그래프가 부드럽게 바뀌며, 맥스 값으로 띠의 폭을 조절할 수 있다. 
    4. 마지막으로 원 마이너스로 값을 뒤집으면 얇은 띠 형태만 보이게 된다. 
  7. 최종 머티리얼 연결
    1. 기본 거리값에서 시간에 의해 빠지는 부분을 절댓값으로 변환한 후 스무스 스텝에 넣어 오파시티(Opacity)에 연결한다. 
    2. 벡터 파라미터(Vector Parameter)를 이용하여 링 컬러(Ring Color)를 만들고, 이미시브 컬러에 연결하여 붉은색 계열(Red 10, Green 2, Blue 1)로 설정한다. 
    3. 스무스 스텝의 맥스 값을 링 위스(Ring Width) 스칼라 파라미터로 지정하여 띠의 폭을 조절할 수 있게 한다 (예: 10유닛). 
    4. 머티리얼을 적용한다. 

1.3. 데칼 액터 배치 및 확인

  1. 데칼 액터 배치
    1. 레벨에 데칼 액터(Decal Actor)를 배치하고, 제작한 머티리얼을 데칼의 머티리얼 항목에 연결한다. 
    2. 이렇게 하면 시간에 따라 링 형태로 퍼져나가는 효과를 확인할 수 있다. 
  2. 데칼 효과의 일관성 확인
    1. 오브젝트가 어떤 방향으로 휘어져 있거나 기울어져 있거나 수직으로 되어 있더라도 링 효과가 일정하게 적용되는 것을 확인할 수 있다. 

2. 블루프린트를 이용한 링 효과 제어 및 폭발 연동

수류탄 오브젝트에 링 효과를 적용하고, 블루프린트를 통해 링의 속도를 조절하며 최종적으로 폭발 효과와 연동시키는 과정을 설명한다.

2.1. 수류탄 오브젝트에 데칼 컴포넌트 추가

  1. 수류탄 오브젝트 준비
    1. 메시 AI를 통해 제작된 수류탄 오브젝트를 언리얼 엔진으로 임포트한다. 
  2. 블루프린트 변환 및 데칼 컴포넌트 추가
    1. 임포트된 오브젝트를 블루프린트(Blueprint)로 변환하고, 변환된 블루프린트에 데칼 컴포넌트(Decal Component)를 추가한다. 
    2. 데칼 컴포넌트의 디테일 창에서 데칼 사이즈(Decal Size)를 큐브 형태로 지정하고, 링의 폭 값보다 크게 설정한다 (예: 16유닛). 
    3. 제작한 링 머티리얼을 데칼 컴포넌트에 연결한다. 
  3. 블루프린트 적용 확인
    1. 컴파일 후 레벨로 돌아가면, 수류탄이 어느 위치나 방향에 배치되더라도 링 효과가 일정하게 적용되는 것을 확인할 수 있다. 

2.2. 블루프린트에서 링 속도 조절 및 폭발 연동

  1. 다이내믹 머티리얼 인스턴스 생성
    1. 크리에이트 다이내믹 머티리얼(Create Dynamic Material Instance) 노드를 사용하여 동적으로 머티리얼을 제어할 수 있도록 한다. 
    2. 패런트 에셋(Parent Asset)은 제작한 M_Decal_Ring 머티리얼로 지정한다. 
    3. 리턴 밸류(Return Value)를 링 매트(Ring Mat)라는 이름의 변수로 승격시켜 다이내믹 인스턴스로 설정하고, 이를 데칼 컴포넌트의 셋 머티리얼(Set Material)에 연결한다. 
  2. 파티클 스폰 여부 제어 변수 생성
    1. 이즈 파티클 스폰(Is Particle Spawn)이라는 불리언(Boolean) 변수를 생성한다. 
    2. 브랜치(Branch) 노드를 사용하여 이 변수가 펄스(False)일 때만 다음 로직이 실행되도록 분기 처리한다. 이는 파티클이 한 번 스폰된 후 계속해서 스폰되는 것을 방지하기 위함이다. 
  3. 타임라인을 이용한 링 속도 조절
    1. 애드 타임라인(Add Timeline) 노드를 추가하여 타임 스케일(Time Scale)을 조절한다. 
    2. 타임라인 내부에 플로트 트랙(Float Track)을 추가하고, 키를 설정하여 시간이 지남에 따라 값이 0에서 4배까지 증가하도록 한다 (예: 1초일 때 0, 4.5초일 때 4). 
    3. 키 값들을 오토(Auto)로 변경하고 핸들을 조절하여 증가 속도가 점점 빨라지도록 커브를 조정한다. 이때 값이 0보다 작아지지 않도록 주의한다. 
    4. 타임라인의 플레이(Play) 핀을 셋 스칼라 파라미터 밸류(Set Scalar Parameter Value) 노드에 연결한다. 
    5. 링 매터리얼 변수를 가져와 셋 스칼라 파라미터 밸류 노드의 타겟에 연결하고, 파라미터 이름은 머티리얼에서 설정한 타임 스케일로 지정한다. 
    6. 타임라인의 뉴 트랙(New Track) 값을 셋 스칼라 파라미터 밸류의 밸류(Value)에 연결하고, 실행 핀은 업데이트(Update)에 연결한다. 
  4. 폭발 파티클 스폰 및 액터 파괴
    1. 타임라인의 피니시(Finished) 노드에서 핀을 빼서 스폰 시스템 앳 로케이션(Spawn System at Location) 노드를 연결한다. 
    2. 나이아가라 시스템(Niagara System)으로 미리 임포트해 둔 NS_Sub_Explosion_Large_001 (무료 에셋)을 지정한다. 
    3. 스폰 위치는 액터의 로케이션(Location)으로 설정한다. 
    4. 파티클이 스폰된 후 이즈 파티클 스폰 변수를 트루(True)로 설정한다. 
    5. 마지막으로 디스트로이 액터(Destroy Actor) 노드를 셀프(Self)로 연결하여 수류탄 액터를 파괴한다. 
    6. 컴파일하고 저장한다. 

2.3. 최종 결과 및 응용 가능성

  1. 최종 결과
    1. 플레이 시 링 효과가 점점 빨라지다가 폭발하며 액터가 사라지는 것을 확인할 수 있다. 
  2. 링 셰이더 공식의 응용
    1. 거리값(랭스)을 이용한 그라데이션, 타임을 이용한 원형 확산, 특정 값들을 빼서 중앙을 비우고 절댓값으로 띠 형태를 만드는 이 공식은 다양한 곳에 응용 가능하다. 
    2. 예를 들어, 포스트 프로세스(Post Process)에서 소나 형태의 맵 전체에 퍼져나가는 효과를 만들 때 활용할 수 있다. 
  3. 포스트 프로세스 방식의 한계 및 데칼 방식의 장점
    1. 포스트 프로세스 방식은 여러 개의 링을 서로 다른 위치에서 다른 타이밍으로 제어하기 어렵다는 단점이 있다. 
    2. 반면 데칼 형태로 만들면 댑스페이드 방식의 면이 얇아지는 문제점을 해결할 수 있고, 개별 오브젝트마다 효과를 넣어 따로따로 제어하기 편리하다. 

Accurig 자동 리깅 8분 만에 끝내기 #unrealengine

믹사모 캐릭터를 언리얼 엔진에 최적화하는 과정에서 발생하는 루트 모션 오류와 본 구조 불일치 문제를 단번에 해결하는 실용적인 가이드입니다. 액터코어의 Accurig 소프트웨어를 활용하여 뼈대 없는 fbx 파일을 언리얼 엔진의 구조(루트본 포함)에 완벽하게 맞추는 자동 리깅 및 익스포트 절차를 8분 만에 마스터하고, 복잡한 리타게팅 없이 곧바로 애니메이션을 적용할 수 있는 구체적인 방법을 배울 수 있습니다.

Accurig 활용, 언리얼 엔진 최적화 캐릭터 리깅 및 익스포트 가이드

믹사모(Mixamo) 캐릭터를 언리얼 엔진(Unreal Engine)에 사용할 때 발생하는 루트 모션 오류와 본 구조 불일치 문제를 해결하기 위해 액터코어(ActorCore)의 accurig 소프트웨어를 활용한 자동 리깅 및 익스포트 절차를 정리함 .

1. Accurig을 이용한 언리얼 엔진용 본 세팅

accurig 소프트웨어는 뼈대가 없는 fbx 파일을 언리얼 엔진의 구조에 맞게 본 세팅을 잡아주는 오토리그 도구임 .

  • FBX 파일 불러오기 및 대칭 설정:
    • Accurig을 실행하고 뼈대가 없는 3D 모델(FBX)을 불러옴 .
    • 캐릭터의 시멘트리(Symmetry, 절반의 위치)가 잘 잡혔는지 확인하고 리깅을 진행함 .
  • 주요 관절 위치 조정:
    • Accurig이 자동으로 찾은 주요 관절 부위(손목, 팔꿈치 등)의 위치를 수동으로 조정함 .
    • 어깨, 머리, 목의 본 위치를 잡아주고, 다리 쪽은 필요에 따라 조정함 .
    • 측면에서 작업 시 좌우 구분이 있는 부위는 정면에서 가운데로 붙을 수 있으므로, 화면을 회전시켜 위치를 잡는 것이 좋음 .
  • 손가락 뼈대 설정:
    • 손가락 개수를 설정하고(예: 4개), 3D 뷰포트를 보면서 각 관절의 위치와 엄지손가락 방향을 조정함 .
    • 오른손 세팅이 완료되면 미러 기능을 이용해 왼손에 바로 적용하여 시간을 절약함 .
  • 리깅 상태 확인 및 수정:
    • 리깅이 완료된 후 A포즈나 T포즈로 상태를 확인하거나, 간단한 모션을 입혀볼 수 있음 .
    • 필요하다면 리그 탭으로 돌아가 부위별로 임의 수정하고 미러 기능을 켜서 양쪽에 적용할 수 있음 .

2. 언리얼 엔진용 플러그인 설치 및 설정

accurig으로 리깅된 캐릭터를 언리얼 엔진에 오류 없이 임포트하려면 액터코어 오토 셋업 플러그인 설치가 필수임 .

  • 익스포트 메뉴 활성화:
    • 리깅이 완료되면 모션 탭으로 이동해야 익스포트 메뉴가 활성화됨 .
    • 익스포트 버튼을 눌러 FBX를 선택하고, Unreal 옵션을 선택함 .
  • 오토 셋업 플러그인 다운로드 및 설치:
    • 액터코어 웹페이지의 Run 항목 → Supported Software에서 오토 셋업을 다운로드하고 설치함 .
    • 설치 후 생성된 플러그인 폴더(C:\Program Files\Reallusion\Shared Plugin\AutoSetup\Unreal)에서 사용 중인 언리얼 버전(예: 5.6)에 맞는 Contents 폴더와 Plugins 폴더를 복사함 .
    • 이 폴더들을 언리얼 프로젝트 파일이 있는 위치에 붙여넣기 함 .
  • 언리얼 엔진 내 플러그인 활성화:
    • 언리얼 프로젝트 실행 후 플러그인 항목에서 Auto Setup을 검색하여 Character Creator & iClone Auto Setup 항목을 활성화함 .

3. 캐릭터 및 모션 임포트 절차

플러그인 설치 후, 리깅된 캐릭터와 모션 파일을 언리얼 엔진에 임포트할 때 특정 옵션을 설정해야 함.

3.1. 캐릭터 (매쉬) 임포트

  • Accurig에서 Character Only로 익스포트한 FBX 파일을 언리얼 콘텐츠 폴더에 드래그하여 임포트함 .
  • 오토 셋업 임포트 옵션이 먼저 뜨지만, 캔슬을 눌러 일반 FBX 임포트 옵션을 띄움 .
  • FBX 임포트 옵션 설정:
    • 매쉬의 Advanced 항목에서 Use T0 as Ref Pose 항목을 반드시 활성화함 .
    • 액터코어 자체 캐릭터를 임포트할 경우, 모프 데이터도 활성화하는 것이 좋음 .
  • 결과: 임포트된 캐릭터는 스파인 개수가 적더라도, 네이밍과 본 구조가 언리얼과 동일하게 세팅되며 루트본이 생성되어 있음 .

3.2. 모션 (애니메이션) 임포트

  • Accurig에서 Motion Only로 체크하여 익스포트한 모션 FBX 파일을 드래그하여 임포트함 .
  • FBX 임포트 옵션 설정:
    • 스켈레톤이 제대로 찾아졌는지 확인하고 .
    • 애니메이션 임포트 시 Use Default Sample Rate 항목을 활성화해야 함 .
  • 결과: 모션이 In-Place 옵션까지 적용되어 제대로 작동함 .
임포트 대상Accurig 익스포트 설정언리얼 임포트 핵심 옵션목적
캐릭터 (매쉬)Character Only`Use T0 as Ref Pose` 활성화언리얼 표준 본 구조 및 루트본 생성 
모션 (애니메이션)Motion Only`Use Default Sample Rate` 활성화정확한 프레임 레이트 적용 및 모션 재생 

포스트 프로세싱(post processing)

포스트 프로세싱(Post-Processing)이란?

포스트 프로세싱은 렌더링 된 이미지나 영상에 후처리 효과를 적용하는 과정입니다. 리얼 타임 엔진에서는 이를 통해 게임이나 시뮬레이션의 비주얼 품질을 향상 시키는 데 큰 역할을 합니다. 렌더링을 통해 최종적으로 한 장의 이미지를 완성하게 되지만, 한 장의 이미지를 만드는데 필요한 다양한 데이터들을 생성하게 됩니다. 이렇게 생성된 다수의 이미지를 재 가공하기도 하며, 새로운 이미지를 생성해서 추가적인 효과를 만들게 됩니다.
 
마치 케이크라는 하나의 완성 품을 위해 빵에 크림을 두르고, 데코레이션이 겹겹이 올라가는 것과 비슷한 것이라고 보면 됩니다. 이러한 층층히 쌓이는 다양한 소스들을 렌더 패스라고 합니다. 컬러를 나타내는 BaseColor, 그림자만 나타내는 Shadow, 카메라로 부터 거리를 나타내는 Depth, 방향을 나타내는 World Normal 등 다양한 패스의 합성을 통해서 한 장의 이미지를 만들어 내게 됩니다. 

왜 포스트 프로세싱이 필요한가?

시각효과 : 기본 렌더링 설정에서 지원하지 않는 여러가지 시각효과들을 추가 할 수 있습니다. 모자이크 효과나 가려진 오브젝트에 비춰보이는 실루엣효과, 아웃라인을 그려주는 효과등 다양한 효과를 그릴 수 있습니다.
분위기 연출: 색조, 블러, 빛 효과 등을 컨트롤 하여 다양한 분위기 연출을 할 수 있습니다. 컬러 그레이딩과 같은 효과들을 이용하면 복잡한 셰이더의 개발없이도 손쉽게 조절이 가능합니다.

주요 포스트 프로세싱 효과

Bloom: 빛이 강한 부분이 주변에 퍼져 나가는 현상을 모방한 효과.
Depth of Field: 특정 거리에 있는 객체는 선명하게, 그 외의 거리에 있는 객체는 흐리게 보이는 효과.
Color Grading: 전체 씬의 색상을 조절하여 원하는 무드나 분위기를 연출하는 효과.
Ambient Occlusion: 코너나 간극에서 자연스럽게 발생하는 그림자 효과.
Motion Blur: 빠르게 움직이는 객체 또는 카메라의 움직임에 따라 발생하는 블러 효과.
Lens Flare: 빛이 카메라 렌즈에 반사되어 생기는 빛나는 효과.