📌 언리얼 엔진에서 링 셰이더를 이용한 데칼 VFX를 제작하는 핵심 과정은 무엇인가요?
월드 포지션과 액터 로케이션의 거리값을 이용해 원형 그라데이션을 만들고, 이를 데칼 머티리얼에 적용하여 시간에 따라 퍼져나가다 폭발하는 링 효과를 제작하는 것이 핵심입니다.
💡 데칼 VFX가 DepthFade나 PostProcess 방식보다 유리한 점은 무엇인가요?
데칼은 면의 흐름과 상관없이 띠의 두께가 일정하게 유지되며, 개별 오브젝트마다 효과를 제어하기 용이하여 여러 개의 링 효과를 독립적으로 표현할 수 있습니다.
언리얼 엔진에서 링 셰이더를 활용해 폭발 효과를 만드는 핵심 공식을 10분 만에 배울 수 있습니다. 데칼을 이용해 어떤 오브젝트에도 일정한 두께의 링 효과를 적용하고, 블루프린트로 타이밍과 속도까지 완벽하게 제어하는 실전 팁을 얻어가세요. VFX 제작의 효율성을 극대화하고 싶다면 놓치지 마세요!
1. 언리얼 엔진 링 셰이더를 활용한 폭발 효과 제작
언리얼 엔진에서 링 셰이더와 블루프린트를 활용하여 폭발 시 링 효과가 점점 빨라지다가 터지는 VFX를 제작하는 방법을 설명한다.
1.1. 데칼 방식과 댑스페이드 방식의 차이점
- 댑스페이드(DepthFade) 방식의 문제점
- 메시를 이용한 효과로, 메시가 겹쳐지는 부분에서 띠가 가늘어지는 문제점이 발생한다.
- 메시를 이용한 효과로, 메시가 겹쳐지는 부분에서 띠가 가늘어지는 문제점이 발생한다.
- 데칼(Decal) 방식의 장점
- 면의 흐름(수직, 수평 등)과 상관없이 띠의 두께가 일정하게 유지되는 장점이 있다.
- 따라서 본 영상에서는 데칼 방식을 사용하여 띠 효과를 제작한다.
- 면의 흐름(수직, 수평 등)과 상관없이 띠의 두께가 일정하게 유지되는 장점이 있다.
1.2. 링 셰이더 머티리얼 제작
- 머티리얼 설정
- 머티리얼 도메인을 서피스(Surface)가 아닌 디퍼드 데칼(Deferred Decal)로 설정한다.
- 투명도를 지원하기 위해 블렌드 모드를 트랜슬루센트(Translucent)로 변경한다.
- 머티리얼 도메인을 서피스(Surface)가 아닌 디퍼드 데칼(Deferred Decal)로 설정한다.
- 띠 효과 원리 이해
- 띠 효과는 액터의 로케이션으로부터 면의 방향과 상관없이 항상 일정한 거리의 그라데이션을 만드는 것이 핵심이다.
- 이를 위해 셰이더가 뿌려질 공간의 월드 포지션(World Position) 값과 액터의 로케이션(Location) 값이 필요하다.
- 액터 로케이션(시작점)에서 월드 포지션(끝점)을 빼서 벡터 방향을 얻고, 이 벡터의 길이(Length)를 알아내어 거리값을 계산한다.
- 띠 효과는 액터의 로케이션으로부터 면의 방향과 상관없이 항상 일정한 거리의 그라데이션을 만드는 것이 핵심이다.
- 거리값 기반 그라데이션 생성
- 월드 포지션에서 액터 로케이션을 빼고, 그 결과를 랭스(Length) 노드로 변환한다.
- 이 값을 이미시브 컬러에 연결하면, 가운데는 거리값이 0에 가까워 검은색이고 바깥으로 갈수록 값이 증가하는 원형 그라데이션이 생성된다.
- 월드 포지션에서 액터 로케이션을 빼고, 그 결과를 랭스(Length) 노드로 변환한다.
- 띠 형태 만들기 (중앙 비우기)
- 원형 그라데이션의 안쪽을 비우기 위해 서브트랙트(Subtract) 노드를 사용하여 일정한 거리값(예: 100 또는 200)을 빼준다.
- 이 비어 있는 영역이 시간에 따라 작아졌다 커지도록 타임(Time) 노드와 프랙(Frac) 노드를 활용한다.
- 타임 스케일(Time Scale) 스칼라 파라미터를 만들어 속도를 조절한다.
- 타임 노드는 0초부터 계속 증가하므로, 프랙 노드를 사용하여 값을 0에서 1 사이로 반복되게 만든다.
- 타임 스케일(Time Scale) 스칼라 파라미터를 만들어 속도를 조절한다.
- 멀티플라이(Multiply) 노드를 사용하여 링 맥스 레디우스(Ring Max Radius) 스칼라 파라미터(기본값 128)로 거리값을 조절하고, 이를 앞서 만든 월드 포지션 길이값에서 빼주면 원이 서서히 커지는 효과를 볼 수 있다.
- 원형 그라데이션의 안쪽을 비우기 위해 서브트랙트(Subtract) 노드를 사용하여 일정한 거리값(예: 100 또는 200)을 빼준다.
- 띠의 부드러운 경계 및 두께 조절
- 스무스 스텝(Smooth Step) 노드를 사용하여 값의 변화를 급격하게 만들어 띠의 경계를 부드럽게 처리한다.
- 맥스(Max) 값에 띠의 두께(예: 10유닛)를 지정하여 폭을 조절한다.
- 원 마이너스(One Minus) 노드를 사용하여 값을 뒤집어 원하는 띠 형태를 만든다.
- 스무스 스텝(Smooth Step) 노드를 사용하여 값의 변화를 급격하게 만들어 띠의 경계를 부드럽게 처리한다.
- 절댓값(Abs)을 이용한 띠 형태 완성
- 현재 그래프는 0보다 작은 구간이 존재하는데, 이 구간은 보이지 않아야 한다.
- 앱솔루트(Abs) 노드를 사용하여 마이너스 값을 절댓값으로 변환하면 V자 형태의 그래프가 된다.
- 이 V자 그래프에 스무스 스텝을 적용하면 직선이었던 그래프가 부드럽게 바뀌며, 맥스 값으로 띠의 폭을 조절할 수 있다.
- 마지막으로 원 마이너스로 값을 뒤집으면 얇은 띠 형태만 보이게 된다.
- 현재 그래프는 0보다 작은 구간이 존재하는데, 이 구간은 보이지 않아야 한다.
- 최종 머티리얼 연결
- 기본 거리값에서 시간에 의해 빠지는 부분을 절댓값으로 변환한 후 스무스 스텝에 넣어 오파시티(Opacity)에 연결한다.
- 벡터 파라미터(Vector Parameter)를 이용하여 링 컬러(Ring Color)를 만들고, 이미시브 컬러에 연결하여 붉은색 계열(Red 10, Green 2, Blue 1)로 설정한다.
- 스무스 스텝의 맥스 값을 링 위스(Ring Width) 스칼라 파라미터로 지정하여 띠의 폭을 조절할 수 있게 한다 (예: 10유닛).
- 머티리얼을 적용한다.
- 기본 거리값에서 시간에 의해 빠지는 부분을 절댓값으로 변환한 후 스무스 스텝에 넣어 오파시티(Opacity)에 연결한다.
1.3. 데칼 액터 배치 및 확인
- 데칼 액터 배치
- 레벨에 데칼 액터(Decal Actor)를 배치하고, 제작한 머티리얼을 데칼의 머티리얼 항목에 연결한다.
- 이렇게 하면 시간에 따라 링 형태로 퍼져나가는 효과를 확인할 수 있다.
- 레벨에 데칼 액터(Decal Actor)를 배치하고, 제작한 머티리얼을 데칼의 머티리얼 항목에 연결한다.
- 데칼 효과의 일관성 확인
- 오브젝트가 어떤 방향으로 휘어져 있거나 기울어져 있거나 수직으로 되어 있더라도 링 효과가 일정하게 적용되는 것을 확인할 수 있다.
- 오브젝트가 어떤 방향으로 휘어져 있거나 기울어져 있거나 수직으로 되어 있더라도 링 효과가 일정하게 적용되는 것을 확인할 수 있다.
2. 블루프린트를 이용한 링 효과 제어 및 폭발 연동
수류탄 오브젝트에 링 효과를 적용하고, 블루프린트를 통해 링의 속도를 조절하며 최종적으로 폭발 효과와 연동시키는 과정을 설명한다.
2.1. 수류탄 오브젝트에 데칼 컴포넌트 추가
- 수류탄 오브젝트 준비
- 메시 AI를 통해 제작된 수류탄 오브젝트를 언리얼 엔진으로 임포트한다.
- 메시 AI를 통해 제작된 수류탄 오브젝트를 언리얼 엔진으로 임포트한다.
- 블루프린트 변환 및 데칼 컴포넌트 추가
- 임포트된 오브젝트를 블루프린트(Blueprint)로 변환하고, 변환된 블루프린트에 데칼 컴포넌트(Decal Component)를 추가한다.
- 데칼 컴포넌트의 디테일 창에서 데칼 사이즈(Decal Size)를 큐브 형태로 지정하고, 링의 폭 값보다 크게 설정한다 (예: 16유닛).
- 제작한 링 머티리얼을 데칼 컴포넌트에 연결한다.
- 임포트된 오브젝트를 블루프린트(Blueprint)로 변환하고, 변환된 블루프린트에 데칼 컴포넌트(Decal Component)를 추가한다.
- 블루프린트 적용 확인
- 컴파일 후 레벨로 돌아가면, 수류탄이 어느 위치나 방향에 배치되더라도 링 효과가 일정하게 적용되는 것을 확인할 수 있다.
- 컴파일 후 레벨로 돌아가면, 수류탄이 어느 위치나 방향에 배치되더라도 링 효과가 일정하게 적용되는 것을 확인할 수 있다.
2.2. 블루프린트에서 링 속도 조절 및 폭발 연동
- 다이내믹 머티리얼 인스턴스 생성
- 크리에이트 다이내믹 머티리얼(Create Dynamic Material Instance) 노드를 사용하여 동적으로 머티리얼을 제어할 수 있도록 한다.
- 패런트 에셋(Parent Asset)은 제작한 M_Decal_Ring 머티리얼로 지정한다.
- 리턴 밸류(Return Value)를 링 매트(Ring Mat)라는 이름의 변수로 승격시켜 다이내믹 인스턴스로 설정하고, 이를 데칼 컴포넌트의 셋 머티리얼(Set Material)에 연결한다.
- 크리에이트 다이내믹 머티리얼(Create Dynamic Material Instance) 노드를 사용하여 동적으로 머티리얼을 제어할 수 있도록 한다.
- 파티클 스폰 여부 제어 변수 생성
- 이즈 파티클 스폰(Is Particle Spawn)이라는 불리언(Boolean) 변수를 생성한다.
- 브랜치(Branch) 노드를 사용하여 이 변수가 펄스(False)일 때만 다음 로직이 실행되도록 분기 처리한다. 이는 파티클이 한 번 스폰된 후 계속해서 스폰되는 것을 방지하기 위함이다.
- 이즈 파티클 스폰(Is Particle Spawn)이라는 불리언(Boolean) 변수를 생성한다.
- 타임라인을 이용한 링 속도 조절
- 애드 타임라인(Add Timeline) 노드를 추가하여 타임 스케일(Time Scale)을 조절한다.
- 타임라인 내부에 플로트 트랙(Float Track)을 추가하고, 키를 설정하여 시간이 지남에 따라 값이 0에서 4배까지 증가하도록 한다 (예: 1초일 때 0, 4.5초일 때 4).
- 키 값들을 오토(Auto)로 변경하고 핸들을 조절하여 증가 속도가 점점 빨라지도록 커브를 조정한다. 이때 값이 0보다 작아지지 않도록 주의한다.
- 타임라인의 플레이(Play) 핀을 셋 스칼라 파라미터 밸류(Set Scalar Parameter Value) 노드에 연결한다.
- 링 매터리얼 변수를 가져와 셋 스칼라 파라미터 밸류 노드의 타겟에 연결하고, 파라미터 이름은 머티리얼에서 설정한 타임 스케일로 지정한다.
- 타임라인의 뉴 트랙(New Track) 값을 셋 스칼라 파라미터 밸류의 밸류(Value)에 연결하고, 실행 핀은 업데이트(Update)에 연결한다.
- 애드 타임라인(Add Timeline) 노드를 추가하여 타임 스케일(Time Scale)을 조절한다.
- 폭발 파티클 스폰 및 액터 파괴
- 타임라인의 피니시(Finished) 노드에서 핀을 빼서 스폰 시스템 앳 로케이션(Spawn System at Location) 노드를 연결한다.
- 나이아가라 시스템(Niagara System)으로 미리 임포트해 둔 NS_Sub_Explosion_Large_001 (무료 에셋)을 지정한다.
- 스폰 위치는 액터의 로케이션(Location)으로 설정한다.
- 파티클이 스폰된 후 이즈 파티클 스폰 변수를 트루(True)로 설정한다.
- 마지막으로 디스트로이 액터(Destroy Actor) 노드를 셀프(Self)로 연결하여 수류탄 액터를 파괴한다.
- 컴파일하고 저장한다.
- 타임라인의 피니시(Finished) 노드에서 핀을 빼서 스폰 시스템 앳 로케이션(Spawn System at Location) 노드를 연결한다.
2.3. 최종 결과 및 응용 가능성
- 최종 결과
- 플레이 시 링 효과가 점점 빨라지다가 폭발하며 액터가 사라지는 것을 확인할 수 있다.
- 플레이 시 링 효과가 점점 빨라지다가 폭발하며 액터가 사라지는 것을 확인할 수 있다.
- 링 셰이더 공식의 응용
- 거리값(랭스)을 이용한 그라데이션, 타임을 이용한 원형 확산, 특정 값들을 빼서 중앙을 비우고 절댓값으로 띠 형태를 만드는 이 공식은 다양한 곳에 응용 가능하다.
- 예를 들어, 포스트 프로세스(Post Process)에서 소나 형태의 맵 전체에 퍼져나가는 효과를 만들 때 활용할 수 있다.
- 거리값(랭스)을 이용한 그라데이션, 타임을 이용한 원형 확산, 특정 값들을 빼서 중앙을 비우고 절댓값으로 띠 형태를 만드는 이 공식은 다양한 곳에 응용 가능하다.
- 포스트 프로세스 방식의 한계 및 데칼 방식의 장점
- 포스트 프로세스 방식은 여러 개의 링을 서로 다른 위치에서 다른 타이밍으로 제어하기 어렵다는 단점이 있다.
- 반면 데칼 형태로 만들면 댑스페이드 방식의 면이 얇아지는 문제점을 해결할 수 있고, 개별 오브젝트마다 효과를 넣어 따로따로 제어하기 편리하다.
- 포스트 프로세스 방식은 여러 개의 링을 서로 다른 위치에서 다른 타이밍으로 제어하기 어렵다는 단점이 있다.

