본문 바로가기

UnrealEngine

[UE] 볼륨메트릭 라이트, 메가스캔, 블루프린트 클래스로 오브젝트 생성

볼륨매트릭 라이트

빛줄기가 내려오는 신을 연출하는 방법.

이런 표현을 빛줄기, 라이트 샤프트(대기에 산란된 빛을 시뮬레이션)라고 한다.

  1. 엔진 폴더에서 텍스쳐 필터링엔진 

⇒ 엔진 폴더에서 텍스쳐를 가져와 머티리얼을 생성텍스처의 알파 빼기

⇒ 머티리얼 에디터 → 디테일 → 블렌드 모드를 Translucent, 쉐이딩 모델을 Unit으로 설정(머티리얼의 오파시티가 활성화되고 나머지는 비활성화된다. 오파시티에 텍스쳐를 연결한다.) → 텍스쳐의 RGB를 이미 시브 컬러에 또 한 번 연결한 뒤 저장.

 

상수값으로 멀티플 하여 이미시블 컬러에 연결. 머티리얼 인스턴스에서 파라미터 값을 조절 가능. 레벨에서 원뿔 액터를 배치하여 빛줄기 머티리얼을 입히면 위와 같은 모습을 확인할 수 있다.

 

2. 디렉셔널 라이트 자체로 만들기

  • 물리엔진으로 디렉셔널 라이트를 단일로 사용해서 만들기

⇒ 디테일 → Light Shafts → Light Shaft Bloom 체크 → 이후 Bloom Scale값 조절

 

3. 디렉셔널 라이트 + 익스포넨셜 하이트 포그 이용

  • 익스포넨셜 하이트 포그 씬에 배치
  • 포그와 라이트를 같이 사용해서 효과를 내는 방법
  • 디렉셔널 라이트의 Light Shaft Bloom을 체크 해제하고 진행한다.

⇒ 디렉셔널 라이트 디테일 → Light → Volumetric Scattering Intensity → 볼륨메트릭 스캐터링 인텐시티 수치를 30으로 설정

⇒ Directional Light →Detail → 애트머스피어 및 클라우드 → Atmosphere Sun Light 체크

⇒ Cast Volumetric Shadow도 체크(기본적으로 되어 있음)

⇒ 익스포넨셜 하이트 포그 선택 / 볼륨메트릭 포그 체크하기 → 스캐터링 분포 조절

⇒ 빛줄기 색상조정 : 알베도는 메인 빛줄기, 이미 시브는 산란되는 빛.

  • 노출값 조절이 중요

⇒ 씬에서 체크 해제하고 EV100 수치를 조절하면 Play 또는 렌더링시 적용이 안됨 → 모드 / 볼륨 / 포스트 프로세스 볼륨을 설치하고 익스포저에서 설정 시 적용 가능. 또는 세팅 / 프로젝트 세팅에서 엔진-렌더링(exposure 검색) Auto Exposure 체크해제(프로젝트 전체가 꺼짐. 포스트 프로세스는 그 레벨만 꺼짐)

 

밀폐된 공간에서 노출 문제

  • 어두운 곳에서 밝은 곳으로 이동 또는 밝은 곳에서 어두운 곳으로 이동시 카메라의 노출값이 자동으로 변경됨.

⇒ 포스트 프로세스 볼륨 액터를 배치한 뒤 디테일 패널에서 미러링 모드를 체크하고 Manual로 변경. 노출보정 체크 후 수치 조절

 

메가스캔 Open 스태틱메시 Backface Shadow 문제

  • 뒷면이 오픈되어 있는 스태틱메시는 뒷면이 렌더링이 안 돼서 그림자 또한 렌더링 되지 않는다.

⇒ 인스턴스 머티리얼의 부모 머티리얼 에디터에서 디테일 패널의 양면을 체크

  • 이러면 2 side 렌더링이 되어 뒷면의 그림자도 렌더링 된다.

레벨 블루프린트로 오브젝트 폭파 표현하기

  • 원하는 오브젝트에 트리거 박스 액터를 설치
  • 트리거를 선택한 상태에서 레벨 블루프린트 열기 → 레벨 블루프린트이므로 해당 레벨에서만 사용이 가능하다.
  • 캐릭터가 액터에 접촉하였을 때 발생하는 이벤트 처리를 위해
  1. Collision > On Actor Begin Overlap 추가(트리거를 선택한 상태에서 이벤트 공간 내 마우스 우클릭)
  2. 실행소캣 노드에 print Text 함수 추가 후 컴파일 → 함수 안에 원하는 메시지 입력
  3. 이벤트 공간 안에 이벤트 처리 액터를 드래그 앤 드롭 또는 우클릭
  4. 선택한 액터의 Set Actor Location 노드 연결(접촉 시 액터가 사라지는 기능) → 레벨에서 액터 자체가 사라지는 것이 아니라 접촉 시 지정된 좌표로 이동시켜 사라지는 것처럼 연출하는 것.
  5. 비긴 액터 오버랩 연결 → 이때 액터의 속성이 무버블로 변경되어 있어야 한다.
  6. Set Actor Location의 실행 소켓에 Spawn Emitter at Location 연결 → 액터가 사라지면서 이펙트 효과를 적용시키기 위함.
  7. 이때 폭발이 발생한 뒤 다시 접촉하면 폭발 이펙트가 다시 나오게 되는데 폭발발생을 기록하는 변수를 만들어 이와 같은 문제를 해결.
  8. Get = 읽어오기(Ctrl + 드래그 앤 드롭), Set = 쓰기(Alt + 드래그 앤 드롭), Branch 노드 = True와 false 중 한 가지 조건일 때 (B + 좌클릭)

 

블루프린트 클래스로 오브젝트 생성

레벨 블루프린트로 만든 경우, 그 오브젝트를 복사할 때마다 새로운 오브젝트 이름과 변수이름을 다시 만들어야 하는 번 걸로 움이 있다.

⇒ 많은 개수를 복사해야 하는 경우, 많은 시간이 소요된다.

이때 블루프린트 클래스로 만든다면 쉽게 복사가 가능해진다.

  1. 콘텐츠 브라우저 창에서 마우스 우클릭 후 블루프린트 클래스 생성 클릭
  2. 액터 선택
  3. 블루프린트 에디터 창에 원하는 메시를 드래그 앤 드롭
  4. 무버블 체크, 스케일 값 조정
  5. 이벤트 그래프 탭으로 이동하여 Hit 이벤트 추가
  6. 이후 앞의 방법처럼 Spawn Emitter at Location을 추가하여 Hit 이벤트의 Hit Location을 Spawn Emitter at Location의 Location 소켓에 연결
  7. 마지막으로 폭파 후 파괴되는 효과를 연출하기 위해 마지막에 Destroy Actor를 추가하여 연결

이후 레벨에 배치하여 자유롭게 복사하여도 모든 오브젝트들이 해당 이벤트를 가지고 복사되는 것을 확인할 수 있다.