Game Effecter

2021년 4월 22일 목요일

( Unreal4 ) Scan Effect 제작방법론 ( PostProcessing Material, BluePrint )

 *사전에 Map상에 Post Processing Volume이 들어가 있어야하며 Post Processing Volume Settings에 [Enabled]과 [Infinite Extent]가 체크되어 있어야합니다.


Material 제작

  1. Material Domain 설정을 [Post Process]으로 변경해줍니다.
  2. Post Process Material Blendable Location의 설정을 [Before Tonemapping]으로 변경해줍니다.
    fig01. Material 설정변경
  3. Sphere Mask 노드를 WorldPos과 CameraPos에 연결함으로써 Scan 이펙트의 기초가 되는 선의 형태를 만들어줍니다.
    fig02. Scan 기초 노드

  4. Post Process Volume의 Render 설정에 들어가 에셋을 추가하여 에셋 레퍼런스로 설정하여 생성한 Material Instance를 연결해줍니다.
    fig03. PostProcessVolume 셋팅

  5. Scan Effect의 선 형태를 제작하기 위해 Sin노드를 연결합니다. 그러나 Sin노드는 [-]값도 표현하기에 이를 방지하고자 Clamp노드를 연결합니다.
    fig04. Sin노드를 활용한 선 Effect 연출
  6. Scan에 들어가는 Pattern Design을 연결하고자 Multiply를 SphereMask과 연결해줍니다. 하지만 Texture과 바로 연결해주면 카메라의 각도에 따라 Texture가 나오기 때문에 [WorldAlignedTexture]와 연결해줍니다. 이때 Texture를 성질 Texture Object로 변경해야합니다.
    fig05. Texture 연결_01

  7. 하지만 Texture가 늘어짐에 따라 Scene Texture노드Texture ID를 WorldNormal로 변경한 후에 [WorldSpaceNormal] 연결해줍니다.
    fig06. Texture 연결_02
    fig07. Texture 연결_03
  8. Scan된 부분을 제외한 곳은 기존의 Texture가 나오도록 연출하기 위해서는 SceneTexture를 하나 생성해서 Scene Texture ID는 Post Process Input0으로 설정해주고 CompMask를 연결해줍니다.

    CompMask를 연결해주는 이유는 그 다음에 연결할 Lerp노드를 활용하기 위함에 있습니다.

    그런 다음에 Lerp노드를 생성해서 0값에는 SceneTexture를 연결해주고 1값에는 Scan의 색상값을 연결해줍니다. Alpha값에는 사전에 제작한 Scan 이펙트를 연결해줍니다.
    fig08. 기존의 Texture 연출
  9. 기존의 Scan이펙트는 카메라를 중심으로 생성되었다면 현재 제작하고 있는 Scene은 캐릭터를 중심으로 Scan이펙트가 나타나야하기에 CameraPos에 3Vector를 연결하여 최종 Scan 이펙트 Material Node를 제작해줍니다.
    fig09. Scan Node

Scan BluePrint Node

*Project Setting
사전에 Scan Effect가 Scan한 물체를 다른 이펙트를 입히기 위해서는 Project setting에서 Custom Depth-Stencil Pass의 설정을 [Enabled with Stencil]로 수정해줘야합니다.
fig01. Project Settings
  1. Scan된 물체에 색상값을 변경하기 위해서는 Material 노드에 SceneTexture 노드를 추가하여 CustomStencil로 설정을 변경해줍니다. 그리고 Masking을 위해서는 BitMask노드에 연결해줍니다.

    마지막으로 Scan에 영향을 받지 않는 물체의 Texture는 본래 Texture가 나오도록 하기 위해서 Lerp노드를 활용하여 A값에는 기존의 노드를 B값에는 Scan된 물체의 색상값을 그리고 Alpha값에는 BitMask 노드를 연결해줍니다.
    fig02. BitMask

  2. 다음으로 Scan된 이펙트가 지나가면 색상값이 나오도록 연출하고자 Lerp 노드를 하나 더 연결해줍니다. A값에는 PostProcessInput, B값에는 Lerp 노드, 그리고 마지막 Alpha값에는 ShpereMask를 연결해줍니다.

    그러나 SphereMask노드를 바로 연결하는 것이 아니라 Ceil노드를 연결해준 다음에 Alpha노드에 연결을 해줍니다.
    fig03. Scan Effect Basic Node

    • 만약 다른 색상값을 넣고 싶다면 Lerp노드앞에 Lerp 노드를 연결합니다. 
      fig04. Another Color Node

  3. Scan된 물체의 색상의 외각만 색상을 입히고자 Fresnel노드를 사전에 제작한 ScanNode Basic노드Multiply로 연결해줍니다. 그리고 연결한 Multiply를 기존의 ScanNodeBasic의 값 즉 Alpha의 값에 넣어줍니다.
    fig05. Fresnel Effect

  4. 다음으로 Scan이 작동되는 BluePrint를 제작하고자 Material Parameter Collection을 생성하여 앨리먼트를 추가하여 이름을 지정해줍니다.
    fig06. Material Parameter Collection

  5. 생성한 Material Parameter Collection이 Scan Material 노드에 추가하기 위해 Material 노드에 Collection Parameter를 하나 생성하고 사전에 지정한 Parameter 이름을 선택해줍니다.

    Scan의 범위를 지정하기 위해서 Multiply로 범위의 크기를 조절할 Parameter를 연결하고 SphereMask의 Radius값에 연결해줍니다.
    fig07. Scan Effect Area
    • BLUEPRINT

  6. 레벨 블루프린트를 열어줍니다.
  7. F Key에 작동되도록 F Key를 불러옵니다. 그리고 움직임을 담당할 타임라인을 추가합니다. 생성한 타임라인에 애니메이션을 잡아줍니다.
    fig08. TimeLine

  8. 애니메이션을 잡은 타임라인 노드에 Set Scalar Parameter Value 값을 설정해줍니다.
    fig09. BluePrint

  9. 마지막으로 Scan이 시간이 지남에 따라 사라지도록 연출하고자 Collection Parameter 노드에 One-Minus 노드를 연결하여 Texture과 ShpereMask를 연결한 Multiply 노드 앞에 Multiply로 연결해줍니다.
    fig10. Scan Dissolve

*만약 GameMode에 원형이 생긴다면 Defult Pawn에서 생성한 구체임으로 다음 설명을 토대로 수정하시길 바랍니다.

댓글 없음:

댓글 쓰기