이 문서에서는 VFX 그래프 및 셰이더 그래프(Unity 2022 LTS)를 사용하여 Unity 샘플 프로젝트Happy Harvest에서 특수 효과를 생성하는 방법을 설명합니다.
Unity 에셋 스토어에서Happy Harvest를다운로드하여 설치할 수 있습니다.
이 페이지에서는 무료로 제공되는 두 가지 고급 전자책에서 심층적으로 설명하는 일부 기술과 도구 세트를 다룹니다.
Happy Harvest의 효과와 시각 효과를 복제하는 방법을 알아보려면 이 시리즈의 다른 기사를 참조하세요.
여러 가지 방법을 사용하여 Unity에서 2D 시각 효과를 만들 수 있습니다. 예를 들어 불 효과를 만들려면 프레임별로 불꽃에 애니메이션을 적용하거나셰이더 그래프에서 만든 셰이더를 사용하여 스프라이트에 애니메이션을 적용하거나 불 같은 입자를 생성할 수 있습니다. 후자의 방법의 경우 CPU에서 실행되는내장 파티클 시스템을선택하거나VFX 그래프와 GPU의 성능을 사용하여 수백만 개의 파티클을 생성할 수 있습니다. 두 시스템 모두 동일한 프로젝트에서 사용할 수 있으므로 특정 효과에 가장 적합한 시스템을 선택하고 선택할 수 있습니다.
이 문서에서는 Unity 2022 LTS 이상의 2D 게임에서 사용할 수 있는 VFX 그래프에 중점을 둡니다.
Unity 2D 프로젝트에서 특수 효과를 만들기 전에 고려해야 할 몇 가지 핵심 사항이 있습니다.
- 카메라 원근 카메라를 사용하면 3D 게임에서처럼 3차원 공간에서 효과가 발생합니다. 직교 카메라를 사용하는 경우 올바른정렬 레이어를사용하도록 시스템의 렌더러를 설정해야 합니다. 여기에서카메라 관점에 대해 자세히 알아보세요.
- 포스트 프로세싱 유니버설 렌더 파이프라인(URP)을 선택하면 2D 프로젝트에후처리 효과를적용할 수 있습니다. 예를 들어 URP볼륨프레임워크를 통해 입자 효과에 블룸 효과를 추가할 수 있습니다.
- 효과는 다양한 방법으로 얻을 수 있습니다. 예를 들어, 효과를 나타내는 GameObject에는 사용자 정의 셰이더가 있는 스프라이트나 여러 입자 시스템과 같은 다양한 시스템을 사용하는 여러 하위 GameObject가 있을 수 있습니다.
- 애니메이션 클립 애니메이션 클립은부드러운 스프라이트 기반 애니메이션 효과를 조정하는 데 도움이 됩니다. Unity의 골격 애니메이션시스템을 (드물게) 사용하여 스프라이트 애니메이션의 스프라이트 부분을 제어할 수도 있습니다.
- Unity 에셋 스토어 Unity 에셋 스토어로 이동하여 다양한 기성 2D 효과를 찾아보고 프로젝트에 시각 효과를 추가해 보세요.
시각 효과 그래프 자산은Unity 2022 LTS의 셰이더 그래프를 사용하는 2D 렌더러와 호환됩니다. 프로젝트에서 새 VFX 그래프를 만들려면설명서의 단계를 따르십시오.
VFX 그래프의출력 컨텍스트는효과가 렌더링되는 방식을 정의합니다. 출력 파티클 쿼드와 같은 메시의 출력 컨텍스트는 셰이더 그래프를 추가하는 옵션을 제공합니다. 조명 모델이 셰이더 그래프에 맞게 변경되므로 Lit 또는 Unlit 출력으로 시작하는지 여부는 중요하지 않습니다. 아래 나열된 기본 셰이더를 사용하거나 자체 셰이더 그래프 기반 셰이더를 사용할 수 있습니다.
URP의 2D 프로젝트의 경우 다음세 가지 스프라이트 기반셰이더 그래프 중 하나를 사용할 수 있습니다.
- 문학: 2D 조명 시스템에서 빛을 받으려면
- 꺼짐: 2D 조명 시스템의 영향을 받지 않음
- 관습: 사용자 정의 2D 조명 모델을 구현하려면
셰이더 그래프 내부의 SRP 타겟에서Support VFX Graph옵션을 확인하세요.
셰이더 그래프에 노출된 속성은 VFX 그래프에 표시됩니다. 필요한 경우 이를 재정의할 수 있습니다. 예를 들어 VFX 그래프 파티클 시스템이 시간에 따라 셰이더의 색상 변경을 제어하도록 하려는 경우입니다.
비는 게임에서 흔히 사용되는 입자 기반 효과입니다. 다음은 VFX 그래프와 GPU를 사용하여Happy Harvest 에서 비를 생성하는 데 사용되는 주요 단계입니다. 이를 통해 많은 개별 입자의 움직임이 가능합니다.
비 입자(계층 구조에서Visual Effect Rain으로 명명됨)는 정렬 레이어에서 지면 위, 개체 뒤에 렌더링됩니다. 그 이유는 실제 비가 어떻게 반응하는지 시뮬레이션하기 위해 물방울 입자가 땅에 닿을 때 물 튀김 효과가 생성되기 때문입니다. 가로등 기둥과 같은 수직 표면에 빗방울이 보이면 잘못 보일 수 있습니다. 현실 세계에서 빛은 빗방울을 포함한 모든 환경에 영향을 미칩니다. Happy Harvest에서 비에 대한 VFX 그래프는 출력 컨텍스트에서 Sprite Lit 기반 셰이더 그래프를 사용하여 비 입자에 빛을 비춥니다. 비에 대한 Lit 셰이더 그래프 일치가 없으면 하루 종일 변화하는 빛을 반영하기 위해 톤을 변경할 수 없습니다. 프레임별 스플래시: 비 입자가 죽으면Trigger On DieBlock은 간단한 스플래시 애니메이션을 재생하는 단일 플립북 입자를 생성하는 GPU 이벤트를 트리거합니다. Happy Harvest는 플립북셰이더 그래프 UV 블록을 사용하여 텍스처 내부의 다양한 프레임을 표시합니다. 또는 VFX 그래프 내의플립북 플레이어블록을 사용하여 동일한 효과를 얻을 수 있습니다.
비 입자가 전경에 나타납니다(계층 구조에서Visual Effect Rain Foreground로 명명됨). 카메라 렌즈에 가까이 있는 것을 시뮬레이션하기 때문에 땅에 닿을 때 물이 튀는 현상이 발생하지 않습니다.
이전 효과의 변형이 번쩍이는 천둥 효과(시각 효과 Rain Foreground Thunder)와 함께 사용됩니다. VFX 출력 이벤트 재생 오디오 구성 요소를 사용하여 천둥에 대한 사운드 효과가 추가되었습니다. 이 구성 요소는출력 이벤트 처리기의 샘플 스크립트와 함께 제공됩니다. 출력 이벤트 컨텍스트가 그래프에서 이를 트리거합니다. 천둥번개: 이 효과를 생성하는 간단하면서도 효과적인 방법은 카메라 위치 중앙에서 초기화되고 화면을 채울 만큼 큰 VFX 그래프 기반 단일 입자를 생성하는 것이었습니다. 출력 노드의Color Over Lifetime블록은 시간에 따른 그라데이션을 평가하여 파티클의 색상을 변경합니다. 해당 그라데이션에서 투명도 변경은 천둥번개의 번쩍임과 희미함을 시뮬레이션합니다.
비는Happy Harvest의 전체 장면에 영향을 주지만, 카메라를 통해 비의 일부만 볼 수 있으므로 계산된 입자 중 많은 부분이 불필요합니다. Inspector에서절두체 컬링(Frustum Culling)옵션을 확인하여 이러한 입자 렌더링을 방지하거나 데모에 사용된 트릭인 카메라 타일링을 사용할 수 있습니다.
카메라 타일링을 사용하면 장면 뷰와 일치하는 상자에서 입자를 생성하고 렌더링할 수 있어 입자가 장면의 모든 곳에서 시뮬레이션되는 것처럼 타일링되는 느낌을 줍니다. 카메라 외부에서는 파티클이 생성되지 않으므로 별도의 설정 없이 생성되는 파티클의 양과 효과의 용량 할당을 줄일 수 있습니다.
Happy Harvest에서 카메라 타일링을 사용하려면 빗물 생성이 위치 설정 모양을 사용하여 카메라 크기와 일치하도록 설정됩니다. AA박스. 카메라 형식(크기를 수동으로 입력하거나 MainCamera를 직접 사용하거나 AspectRatio 슬롯을 사용)은 장면의 카메라 설정과 일치하도록 크기 승수로 크기가 조정됩니다. AABox는 컬링으로 인한 팝핑 효과를 방지하기 위해 실제 카메라 크기보다 약간 더 큽니다. 2D 프로젝트에서는 전체 볼륨에 생성할 필요가 없기 때문에 Shape Spawn 모드가 Surface로 설정됩니다(Z축이 사용되지 않기 때문).
이 설정이 완료되면 시스템 출력에타일/워프 위치블록이 필요합니다. 이것은 시스템의초기화 컨텍스트에서 수행하려는 것처럼 위치 및 카메라 크기와 일치하도록 카메라 변환에 연결됩니다.
이 기술은 3D의 비 효과에도 적용됩니다. 단, Shape Spawn 모드를 볼륨으로 설정하고 깊이 보기를 원하는 경우 Z축에 0이 아닌 값을 사용해야 한다는 점은 예외입니다.
게임의 또 다른 일반적인 효과는 불입니다. Happy Harvest에서는 마당과 농부 집의 벽난로에 아늑한 모닥불이 있습니다. 화재 효과는 세 가지 입자 세트로 구성됩니다. 불꽃, 불꽃, 연기는 모두VFX_Fire라는 동일한 그래프에서 생성됩니다.
불꽃 애니메이션
불꽃의 부드러운 애니메이션은 셰이더 그래프의 셰이더 수준에서 발생하며 GPU와 셰이더의 성능을 사용하여 얻을 수 있는 결과를 보여줍니다.
프로젝트에서ShaderGraph_Fire파일을 열면 단일 스프라이트(마스크 텍스처2D)가 불꽃에 타원형 모양을 제공하는 마스크를 만드는 데 사용되는 것을 볼 수 있습니다. 애니메이션과 스프라이트는 노이즈와 불꽃 및 배경의 색조 색상이 포함된 스크롤 "보로노이" 패턴을 통해 생성됩니다. 알파 마스크는 동일한 불꽃 모양을 사용하지만 더 눈에 띄는 윤곽선을 생성하는포화 연산자를사용합니다.
불에 세련된 디테일을 추가하는 불꽃과 연기 효과는 표준 릿 셰이더 그래프를 사용합니다. 속도, 스케일 및 초기 위치 블록에 대한 변경 사항을 조합하면 단 하나의 스프라이트만으로 생생한 효과를 생성할 수 있습니다. 불꽃 및 연기 효과 그래프에는 자신의 프로젝트에서 효과를 재현하는 데 도움이 되는 메모가 포함되어 있습니다.
물은 만화 같은 화선이나 투명도 효과가 있는 파도를 사용하여 데모의 전반적인 아트 스타일과 일치합니다. 물 셰이더는 데모 환경의 대부분을 구성하는 타일맵과 함께 작동하도록 최적화되어 있습니다.
Water 라고 불리는 기본 2D Lit 재질은 타일맵의 타일맵 렌더러에 있습니다. 이는 물 셰이더를 사용하여 사용자 정의 재질로 교체되었습니다. 타일맵 내부의 모든 타일은 동일한 재질을 사용하여 렌더링되므로 이 타일맵은 물 타일에만 사용됩니다.
ShaderGraph_Water그래프에서 물 효과는 화선을 시뮬레이션하기 위해 늘어난 반전 보로노이 노이즈 패턴에서도 생성됩니다(물 화선의 일반적인 방법). 진동 모션은 노이즈 효과가 적용된 타일링 및 오프셋 UV 초과 작업의 결과입니다.
굴절 효과
굴절 효과는 Lerp 노드를 사용하여 표면 텍스처에 혼합됩니다. 굴절은 정의된 정렬 레이어까지 렌더링되는 카메라의 스냅샷인카메라 정렬 레이어텍스처를 사용합니다. 즉, 이전 정렬 레이어의 모든 요소가 해당 텍스처에 나타납니다. Happy Harvest에서는 캐릭터와 같은 요소에 사용되는개체정렬 레이어까지 렌더링이 발생합니다. 카메라 정렬 레이어 텍스처의 UV는 표면 텍스처와 동일한 Voronoi 텍스처를 사용하는 Normal 및 Height 노드로 생성된 노멀 맵으로 왜곡됩니다.
Lost Crypt 2D 데모를 사용하여 이 튜토리얼을 시청하여2D의 다른 물 효과에 대한 단계별 튜토리얼을 확인하세요.
지금까지 논의된 효과는Happy Harvest의 게임플레이와 상호 작용하지 않습니다. 그들은 환경의 일부이며 데모에서 무슨 일이 일어나고 있는지에 관계없이 플레이합니다. 그러나 대부분의 게임에서는 환경 및/또는 캐릭터에서 동작이 발생하는 시점에 따라 재생할 효과 중 일부를 트리거해야 합니다. Happy Harvest의 일부 트리거 효과를 살펴보겠습니다.
아이템 사용시 효과
물통과 같은 일부 효과는 캐릭터 도구에 부착됩니다. 물통용 프리팹인Prefab_Tool_WaterCan에는 캐릭터가 향하는 방향(위, 아래, 측면)에 따라 스프라이트를 변경하는 세 개의 애니메이션 클립이 있습니다. 이러한 애니메이션에는 도구 애니메이션 이벤트 핸들러 구성 요소 내부의 함수를 호출하는애니메이션 이벤트가있습니다.
이 스크립트는 인스펙터에서 참조되는 각 위치에 대해 해당 VFX 그래프 인스턴스를 활성화하거나 비활성화합니다.
타일로 반복할 때의 효과
파기 및 수확과 같은 일부 효과는 타일에 발생합니다. 이렇게 하면 캐릭터 애니메이션이나 위치 변경에 문제가 발생하지 않습니다. 세포를 경작할 때가 되면 그 세포에 경작 효과가 작용하고, 수확할 때가 되면 세포는 수확 효과를 불러옵니다.
타일링 효과가 트리거되면GridGameObject에 연결된TerrainManager구성 요소의TillingPuff_prefab효과를 참조합니다. 타일 중앙 으로 이동한 후 재생됩니다. 작물 수확과 같은 다른 효과는Data/CropsScriptableObject에서 참조되는 VFX 그래프를 호출합니다. TerrainManager스크립트를 초기화하면 필요할 때 재생할 여러 VFX 프리팹을 인스턴스화하는 VFX 풀 사전(m_HarvestEffectPool스크립트의 변수)이 생성됩니다.
Happy Harvest의 작은 효과는 데모에 세련미를 더해 탐색을 더욱 즐겁게 만듭니다. 이들 중 일부는 다음과 같습니다:
- VFX_DustParticles: 환경에 주변 먼지를 퍼뜨리려면
- VFX/Water:미묘한 물결과 물보라에 적합
- VFX_Leaves: 플레이어가 지나갈 때 덤불에서 나뭇잎이 떨어지도록 합니다.
- 캐릭터 캐릭터에 부착된 연기 퍼프 효과를 트리거합니다. 이것은 내장 파티클 시스템으로 만들어졌습니다.
- P_VFX_Moths: 스포트라이트 근처에서 나방이 날아다니도록 합니다. 이것도 내장 파티클 시스템으로 만들어졌습니다.
위 목록의 각 VFX 그래프 기반 효과에는 각 노드의 목적을 설명하는 참고 사항이 포함되어 있습니다.
숙련된 Unity 개발자가 Unity 엔지니어와 기술 아티스트의 의견을 바탕으로 작성한 이 가이드는 시각 효과 개발을 위한 역대 최대 규모의 가이드입니다. 이 전자책은 Unity의 시각 효과 제작 도구를 사용하여 물과 액체, 연기, 불, 폭발, 날씨, 충격, 마법, 전기 등 모든 종류의 효과를 만드는 방법에 대한 전체 개요를 제공합니다. 유일한 한계는 상상력입니다.
VFX 그래프를 사용하여 특수 효과를 만드는 방법에 대한 다음 두 가지 비디오 튜토리얼도 볼 수 있습니다.