언어:
페이지 정보
태그:
수준별:
엔진 버전:
언리얼 엔진
이 문서가 번역된 이후 업데이트된 내용이 있을 수 있습니다. 자세한 내용은 영문 페이지를 참고하세요.

3. 블루프린트 구성

언리얼 엔진

필수 머티리얼과 렌더 타깃 생성 및 구성이 완료되었으니, 블루프린트를 새로 만들어 플루이드 서피스(유체 표면) 액터로 작업하기 위한 환경설정을 해 줄 차례입니다.

블루프린트 생성 & 변수 구성

  1. 콘텐츠 브라우저의 우클릭 메뉴에서 기본 애셋 생성 부분의 블루프린트 클래스 옵션을 선택합니다.

    HFP_BP_Setup_00.png

  2. 부모 클래스 선택 창에서 Actor 를 선택하고 이름을 WaterSurface_BP 라 합니다.

    FS_Water_BP_Creation.png

  3. WaterSurface_BP 를 더블클릭하여 열고 다음 변수 유형을 추가합니다.

    FS_Var_Creation.png

  4. 변수 기본값을 다음과 같이 설정합니다:

    변수 이름

    변수 유형

    기본 값

    WaterMeshAsset

    Static Mesh

    SM_Plane1000_512 (Content Example 맵에 포함)

    WaterMaterial

    Material Interface

    WaterMaterial

    HeightState

    Integer

    0

    TimeAccumulator

    Float

    0.0

    WaterMID

    MaterialInstanceDynamic

    없음

    UpdateRate

    Float

    60.0

    TouchingCharacter

    Actor

    없음

    LastTouchingActorPosition

    Vector

    0, 0, 0

    InteractionDistance

    Float

    1.0

    MouseDown

    Bool

    Un-Checked

블루프린트 함수 생성 & 구성

필수 변수를 포함한 블루프린트 생성이 완료되었으니, 함수를 몇 가지 생성해 줄 차례입니다. 여기서는 그 세 가지 함수는 무엇이고 어떻게 구성하는지에 대해 살펴보겠습니다.

블루프린트를 컴파일하고 저장해야 사용할 수 있다는 점, 잊지 마세요.

  • GetHeightRT 함수는 렌더 타깃의 높이를 구해 나중에 다시 사용할 수 있도록 저장합니다. 이 함수 생성을 시작하기에 앞서, 함수의 입력과 출력이 다음과 같은 정보로 구성되었는지 확인하시기 바랍니다.

    • 입력:

      • 이름: Index

      • 유형:Integer

    • 출력:

      • 이름: Heigh RT

      • 유형:텍스처 렌더 타깃 2D

      Copy Node Graph

      FS_Get_Height_Function.png

      세 가지 렌더 타깃 각각을 Return 노드의 Height RT 입력에 추가해 줘야 한다는 점 잊지 마세요.

  • GetLastHeight 함수는 유체 표면의 마지막 알려진 위치를 나중에 사용할 수 있도록 저장합니다. 이 함수 제작을 시작하기 전, 함수의 입력과 출력이 다음과 같은 정보로 구성되어 있는지 확인하세요.

    • 입력:

      • 이름: CurrentHeightIndex

      • 유형:Integer

      • 이름: NumFramesOld

      • 유형:Integer

    • 출력:

      • 이름: Heigh RT

      • 유형:Texture Render Target 2D

      Copy Node Graph

      FS_Store_Last_Height.png

  • Trace From Camera 는 하이트 필드 페인터 블루프린트에서 사용된 것과 동일한 트레이스입니다. 이 함수의 경우, 별도로 구성해 줘야 하는 입출력 변수는 없습니다.

    Copy Node Graph

    HFP_BP_Setup_05.png

블루프린트 컨스트럭션 그래프 구성

컨스트럭션 그래프는 유체 시뮬레이션의 정상 작동을 위해 스태틱 메시와 머티리얼 둘 다 생성하고 설정하는 데 사용됩니다. 다음 섹션에서는 세 가지 함수는 무엇인지, 그 구성 방법은 어떻게 되는지 살펴보겠습니다.

블루프린트를 컴파일하고 저장해야 사용할 수 있다는 점 잊지 마세요.

  • 컨스트럭션 그래프에서는, 물 표면에 필요한 스태틱 메시를 생성한 뒤, 다이내믹 머티리얼 인스턴스를 생성하여 그 스태틱 메시에 적용, 물 표면 시뮬레이션을 하도록 하겠습니다.

    Copy Node Graph

    FS_Con_Script.png

블루프린트 이벤트 그래프 구성

이벤트 그래프는 이 이펙트의 정상 작동을 위해 필요한 모든 것을 추가하고 연결하는 곳입니다. 여기서는 이벤트 그래프의 각 섹션이 어떤 역할을 하는지, 월드에 배치된 최종 블루프린트에 어떻게 영향을 주는지 알아보겠습니다.

블루프린트를 컴파일하고 저장해야 사용할 수 있다는 점 잊지 마세요.

  • Clear all render targets of data 는 블루프린트를 처음 실행시켰을 때 부작용이 나타나지 않도록 하기 위해 기존의 데이터 렌더 타깃 전부를 지우는 블루프린트 부분입니다.

    Copy Node Graph

    FS_Clear_All_RT.png

    Return 노드의 Height RT 입력에 세 가지 렌더 타깃 각각을 추가해야 한다는 점 잊지 마세요.

  • Check to see if Left Mouse Button is held down 은 사용자가 왼쪽 마우스 버튼을 눌렀는지 확인하는 블루프린트 부분입니다. 사용자가 왼쪽 마우스 버튼을 누르고 있으면, MouseDown 이 true 로 설정되고, 그렇지 않으면 false 로 설정됩니다.

    Copy Node Graph

    FS_Check_If_Left_Mouse.png

  • Take Damage Force 섹션은 스태틱 메시에서 맞은 위치를 찾아 그 부분에 ForceSplat 머티리얼을 적용하여 충격 이벤트 시뮬레이션으로 표면에 오프셋을 적용시키는 곳입니다.

    Copy Node Graph

    FS_Take_Damage_Force.png

  • Begin & End Overlap 섹션은 플레이어가 현재 월드에 배치된 플루이드 서피스 액터에 닿아있는지 여부를 검사합니다.

    Copy Node Graph

    FS_Begin_End_Overlap.png

  • Shoot when mouse is down 은 매 틱마다 왼쪽 마우스 버튼이 눌렸는지 확인하는 블루프린트 부분입니다. 왼쪽 마우스 버튼이 눌린 상태면 Trace From Camera 함수를 호출, 카메라 중앙에서 월드로 트레이스를 합니다.

    Copy Node Graph

    FS_Shoot_When_Mouse_Is_Down.png

  • Touching Character Force 는 플레이어가 플루이드 서피스 액터를 건드리면 적용할 힘을 업데이트하고 적용하는 것을 담당하는 블루프린트 부분입니다.

    Copy Node Graph

    FS_Touching_Char_FOrce.png

  • Fixed timestep, so fluid speed is framerate independent 는 유체 표면을 통해 전파되는 물결이 프로젝트의 프레임 속도와 상관없이 별도의 프레임 속도로 전파되도록 하는 블루프린트 부분입니다. 본질상 유체 표면의 물결은 레벨에 무슨 일이 벌어지든 상관없이 느려지거나 빨라지지 않습니다.

    Copy Node Graph

    FS_Fixed_Time_Step.png

  • Cycle Active heightfield 는 유체 표면을 쏘거나 건드렸을 때 유체 표면에 다양한 렌더 타깃을 순환시켜 보다 역동적인 반응을 내도록 만드는 블루프린트 부분입니다.

    Copy Node Graph

    FS_Cycle_Active_Heightfield.png

  • Apply fluid surface simulation kernel, which propagates waves 는 시간이 지남에 따라 플루이드 서피스 액터를 통해 전파되는 물결이 사그라들게 만드는 블루프린트 부분입니다.

    Copy Node Graph

    FS_ApplySim.png

  • Compute Surface Normal 은 물결이 보다 선명하고 잘 보이도록 유체 표면에 노멀을 적용하는 블루프린트 부분입니다.

    Copy Node Graph

    FS_Compute_Surface_Normal.png

블루프린트 구성이 완료되었으니, 다음에는 UE4 에서 이 모든 부분을 구성하는 법을 살펴보겠습니다.