2 분 소요

시작하기

  • 언리얼을 이용해서 프로젝트를 시작했는데 컨셉은 청소기를 통해 물체들을 빨아들이는 건데 그 중에서 물같은 유체도 포함된다.
  • 팀원들에게 부탁하기에는 다들 바빠보여서 이번 기회에 공부할겸 한번 직접 제작해 볼까 한다.

Fresnel 프레넬 이란?

  • 프레넬이란 모든 빛은 매질(media)에 따라 반사, 흡수, 굴절을 하게 되는데 이 프레넬 공식을 통해 빛의 움직을 계산한다.
  • 이를 사용하면 물체의 가장자리 빛이 더 강하게 반사되는 현상을 표현할 수 있다.

골절률 (Refactive index)

  • 빛이 특정 매질을 통과해서 이동할때 얼마나 느려지는지 비율을 측정한 것이다.
  • 빛이 느려지면 이동 방향이 바뀌게 된다.
  • 빛은 여러 파장이 합쳐서 보이게 되는데 이런 파장에 따라 골절률이 달라진다.
  • 그렇기에 파장별로 골절률 계산을 해야한다.
    image

스넬의 법칙(Snell’s law)

  • 매질에 따라 빛이 꺾이는 것을 알 수 있는 공식이다.
    image|200

  • v 는 속도 (velocity)
  • λ는 파장 (wavelength)
  • n은 골절률 (IOR)
  • 이런 관계를 설명한 것이 스넬의 법칙이다.
    image

  • 그래서 물과 기름이 만나면 아래처럼 파장이 변화한다.
    image

매질이 반사할수도 있다.

  • 굴절률이 다른 매질을 만나게되면 특정 각도에서 굴절이 아니라 완전히 반사하는 경우가 있다.
  • Critical angle처럼 특정 각도를 넘어가면 전반사가 발생한다.
    image

전반사 각도 구하기 공식

  • 대기의 굴절률이 1이고 아크릴의 굴절률이 1.5면 전반사 각은 41.8이 된다.
    image
    image

프레넬 공식 (Fresnel equation)

  • 그래픽스에서 반사와 굴절을 계산하기 위해서 반사되는 빛의 양과 얼마나 빛이 굴절되는지 알아야한다.
  • 그 공식이 프레넬 공식인데 유도식은 너무 어려워서 패스
    • 프레넬 공식은 스넬의 법칙, 반사 법칙 등을 이용해서 유도된다
  • 일반적으로 컴퓨터 그래픽스에서는 Schlick’s approximation을 사용한다. 근사계산 공식이다.
    • 모든 각도에서의 굴절률(IOR)을 알 수 없기 때문에 근사계산을 해야한다.
      image

그래프

  • 프레넬 공식을 그래프와 시키면 다음과 같다.
  • 가로축 : 시선과 노멀벡터의 각도
  • 세로축 : 반사율
  • 수평(90도)일 수록 높은 반사율을 보인다.
    image

  • 일반적으로 물체를 수직에서 바라본(0도) 반사율 값을 넣는 근사 계산식을 사용한다.
  • R0값이 그래프에서의 0도의 반사율 값이라 보면된다.
  • 대부분의 엔진에서는 F0이라고 표현한다(Fresnel at Degree 0 도 인듯 하다.)

  • 아래는 대기속에 있다고 가정할때의 식이다.
    image
  • 물의 경우 1.33의 굴절률을 가진다.
  • 일반적으로 이 F0 를 “Metallic” 핀에다가 넣어 주시면 된다
    image

물 쉐이더 만들기

겉부분만 반사시키기

image


언리얼의 Fresnal 노드

image

  • Fresnal 노드는 빛의 굴절률 공식이지만 림라이트나 실루엣을 만들때 많이 사용한다.
  • 다만 이 노드는 Metalic으로 반영되는 Fresnel은 의미가 명확하지만 이건 그냥 효과이기 떄문이다.
  • 이 노드는 사용하면 비물리적인 결과를 산출할 수 있어서 보통 Metalic을 제거하고 Emissive를 사용한다.
    image

타일링 오프셋

타일링 오프셋 (Tiling Offset)

  • 언리얼은 타일링 오프셋 노드가 따로 없다
  • 그래서 직접 텍스처 좌표계나 월드 포지션을 통해 이동시켜야한다.
    image

시간에 따른 노이즈 생성

  • Absolute world Position
    • 절대적인 월드 포지션
      image

Noise Node

  • Function으로 노이즈 종류를 변경할 수 있다.
    image
  • Output Value를 통해 흰색 검은색 부분 비율을 조절할 수 있다.
    image

노이즈 조절하기

  • Multiply로 Destortion(파괴) 값을 조절해서 노이즈 값을 연하게 해준다.
    image

  • Destortion 값이 1이면 노이즈가 눈에 보여서 줄이는 작업이 필요하다.
    image|300

씬 컬러 적용

  • 스크린 포지션에 노이즈를 입히고 그렇게 만들어진 UV에 화면 색깔을 입히면 물처럼 일그러진 효과를 만들 수 있다.
    image

image

프레넬, 빛 반사효과 추가

  • 프레넬을 추가해서 빛 반사 효과를 준다.
    image

일렁임 효과 추가

  • 노이즈 값과 NormalVector를 곱해서 일렁임 효과를 줄 수 있다.
    image

투과시키는 빛 일렁임

  • 투과되는 뒤쪽 배경을 일렁이고 싶다면 Refraction을 수정한다.
    image

결과물

image

image



댓글남기기