영화나 시네마틱 제작 시 캐릭터나 독립된 세트의 실루엣을 효과적으로 강조하는 방법이 필요한 경우가 있습니다. 이 라이팅 기법은 림 라이팅 또는 에지 라이팅이라고 하며, 라이트를 추가하여 배경에서 캐릭터의 실루엣이 구별되도록 하는 데 도움이 됩니다. 영화에는 적합하지만, 3D 씬에 라이트를 추가하면 복잡도가 증가하여 순식간에 관리하기 어려워질 수 있습니다.
언리얼 엔진은 머티리얼 수준에서 이에 대한 해결책을 제공합니다. 프레넬(Fresnel) 을 사용하면 아티스트는 캐릭터 또는 소품 머티리얼의 림 라이팅을 시뮬레이션하여 이펙트의 룩 앤 필을 보다 섬세하게 제어할 수 있습니다. 프레넬은 유리, 물, 일부 직물과 페인트 등 자연적으로 발생하는 대다수 물질에 내재된 속성입니다. 이 튜토리얼의 기법은 이러한 머티리얼을 보다 정확하게 시뮬레이션하는 데 도움이 됩니다.
프레넬
프레넬 은 화각에 따라 반사되는 빛의 세기가 달라지는 현상을 설명하는 용어입니다. 예를 들어 웅덩이 위에 서서 수직으로 내려다보는 경우 수면 위에 빛 반사가 많지는 않을 것입니다. 관찰자가 머리를 움직여 웅덩이의 수면이 시선과 평행이 될수록 수면 위의 빛 반사가 점점 더 많이 보일 것입니다. 물과 유리는 모두 강한 프레넬 경향성을 띠며, 이는 정면에서 보면 상대적으로 투명해 보이고 비스듬한 각도에서 보면 빛을 더 많이 반사함을 뜻합니다.


액자 유리를 정면으로 볼 때는 투명해 보이지만, 측면에서 볼 때는 리플렉션이 더 많이 보이는 것을 눈여겨보세요.
언리얼 엔진에서 Fresnel 머티리얼 표현식 은 표면 노멀과 카메라 방향의 내적을 기준으로 감쇠를 계산합니다. 표면 노멀이 카메라를 똑바로 가리켰을 때 출력 값은 0이며, 프레넬 이펙트가 일어나지 않음을 뜻합니다. 표면 노멀이 카메라와 직각일 때 출력 값은 1이며, 프레넬 이펙트가 완전히 일어남을 뜻합니다. 그런 다음 중앙에 음의 컬러가 없도록 결과는 [0, 1]로 범위제한됩니다. 이 개념을 보여주는 것이 다음 이미지입니다.

스피어 중앙(0번)에는 프레넬 이펙트가 없습니다. 이는 카메라가 표면 노멀을 똑바로 가리키고 있기 때문입니다. 스피어 에지(1번)를 향할수록 표면 노멀은 점점 더 카메라와 직각이 되며, 프레넬 이펙트는 점점 더 잘 보이게 됩니다. 이를 통해 스피어 에지 부분이 빛나는 느낌을 줄 수 있습니다.
Fresnel 노드 살펴보기
팔레트 또는 컨텍스트 메뉴에서 'Fresnel'을 검색하면 유틸리티(Utility) 에서 Fresnel 머티리얼 표현식을, 벡터 연산(Vector Ops) 에서 머티리얼 함수를 찾을 수 있습니다. 이 두 노드는 동일한 용도로 사용되지만, 구성 방식에서 차이가 있습니다.

Fresnel 머티리얼 표현식
이 튜토리얼에서는 유틸리티 에서 찾을 수 있는 Fresnel 머티리얼 표현식이 사용되며, 두 옵션 중 더 간단하게 환경설정할 수 있는 옵션입니다. 처음에는 이 버전을 사용하는 것이 적극 권장되며, 노드 작동 방식을 제대로 이해한 후에만 Fresnel 머티리얼 함수를 사용하는 것이 좋습니다.

프로퍼티 | 설명 |
---|---|
ExponentIn | 프레넬 이펙트의 감쇠를 제어하는 입력입니다. |
BaseReflectFractionIn | 표면을 정면에서 볼 때의 스페큘러 리플렉션 부분을 지정합니다. 이 값을 1로 설정하면 프레넬이 사실상 비활성화됩니다. |
Normal | 노멀 맵을 입력하여 프레넬 이펙트 렌더링 방식을 변경할 수 있습니다. 노멀 맵은 탄젠트 스페이스에서 월드 스페이스로 변환해야 합니다(아래 참조). |
Fresnel 머티리얼 표현식의 값을 조정하는 방식은 3가지가 있습니다.
-
머티리얼 그래프에서 이 노드를 선택하면 디테일(Details) 패널에서 값을 입력할 수 있습니다.
-
Constant 또는 스칼라 파라미터를 입력에 연결할 수도 있습니다.
-
노멀 맵을 Normal 입력에 어태치하여 프레넬 이펙트의 외관을 변경할 수 있습니다. 노멀 맵 텍스처를 사용하는 경우 Normal 입력에 연결하기 전에 TransformVector 표현식을 통해 전달해야 합니다. 이를 통해 노멀 맵을 탄젠트 스페이스에서 월드 스페이스로 변환할 수 있습니다. 이 트랜스폼을 거치지 않으면 노멀 맵은 의도한 대로 프레넬에 영향을 주지 않습니다.
이미지를 클릭하면 확대됩니다.
Fresnel 머티리얼 함수
벡터 연산(Vector Ops) 카테고리의 Fresnel_Function 머티리얼 함수는 고도로 커스터마이징 가능한 프레넬 버전으로, 프레넬 이펙트의 몇 가지 다양한 측면을 제어합니다. 이 추가된 함수 기능은 세팅이 올바르지 않으면 프레넬 이펙트 렌더링 방식에 아티팩트나 오류가 일으킬 수 있다는 단점이 있습니다.
유틸리티 의 Fresnel 머티리얼 표현식으로 원하는 결과를 얻지 못하는 경우에만 이 머티리얼 함수를 사용해야 합니다.

프로퍼티 | 설명 |
---|---|
Normal Vector (V3) | 노멀을 입력하여 프레넬 이펙트 렌더링 방식을 수정할 있습니다. 정확한 결과를 얻으려면 Transform 노드(탄젠트 스페이스에서 월드 스페이스로)를 통해 노멀 맵을 전달해야 합니다. |
Camera Vector (V3) | 카메라 및 표면 노멀 간의 내적을 결정하는 데 사용되는 카메라 벡터를 수동으로 변경합니다. |
Invert Fresnel (B) | 프레넬 이펙트를 반전합니다. 프레넬을 중앙이나 에지에만 적용하고 싶은 경우 유용합니다. |
Power (S) | 스칼라를 입력하여 프레넬 이펙트의 규모 또는 감쇠를 제어합니다. 큰 수를 입력하면 영향을 받는 영역이 좁아집니다. 숫자가 작을수록 Fresnel 노드가 표면의 더 넓은 부분에 영향을 미칩니다. |
Use Cheap Contrast(B) | 활성화 시 Fresnel 노드는 빛과 어둠 간의 대비를 계산하기 위해 더 저렴한 메서드를 사용합니다. |
Cheap Contrast Dark (S) | 프레넬의 어두운 정도를 제어합니다. Use Cheap Contrast 가 활성화된 경우에만 효과가 있습니다. |
Cheap Contrast Bright (S) | 프레넬 이펙트의 밝은 정도를 제어합니다. Use Cheap Contrast 가 활성화된 경우에만 효과가 있습니다. |
Clamp Fresnel Dot Product (B) | 프레넬 내적의 결과를 0~1 사이로 범위제한합니다. 기본적으로 true이지만, 스태틱 부울(Static Bool) 을 false로 설정하여 오버라이드할 수 있습니다. |
머티리얼에 프레넬을 사용하는 방법
다음 단계를 따라 프레넬을 사용하는 머티리얼을 생성합니다.
-
콘텐츠 브라우저 에서 우클릭 하고 컨텍스트 메뉴의 기본 에셋 생성(Create Basic Asset) 섹션에서 머티리얼(Material) 을 선택합니다. 머티리얼이 생성되면 FresnelMaterial 로 이름을 변경합니다.
-
콘텐츠 브라우저 에서 섬네일을 더블클릭 하여 새 머티리얼을 엽니다.
-
팔레트(Palette) 를 펼치거나 머티리얼 그래프에서 우클릭 하여 컨텍스트 메뉴를 표시합니다. 다음 머티리얼 표현식 노드를 검색하여 그래프에 추가합니다.
노드 이름 개수 Vector Parameter Node 2 Scalar Parameter Node 2 Fresnel Node 1 완료 시 머티리얼 그래프는 다음과 같은 모습입니다.
Fresnel 머티리얼 표현식을 검색하면 선택할 수 있는 프레넬 노드가 2개 나타날 것입니다. 이 튜토리얼에서는 유틸리티 카테고리에 있는 Fresnel 머티리얼 표현식을 사용합니다.
- 모든 스칼라 및 벡터 파라미터 노드의 이름을 변경하고, 디테일 패널에서 디폴트값을 설정합니다.
이름 디폴트값 Fresnel Color 1.0, 0.0, 0.0, 0.0 Base Color 0.5, 0.5, 0.5, 0 Fresnel Falloff 8 Roughness 0.5 -
그래프에 Multiply 노드를 추가한 다음, 아래 이미지를 참고하여 모든 머티리얼 표현식을 연결합니다.
이미지를 클릭하면 확대됩니다.
-
툴바에서 적용(Apply) 을 클릭하여 머티리얼을 컴파일한 다음 저장(Save) 을 클릭합니다.
-
머티리얼을 컴파일 및 저장한 후 머티리얼 에디터를 닫고 콘텐츠 브라우저에서 FresnelMaterial 에셋을 찾습니다. 섬네일을 우클릭 하고 컨텍스트 메뉴에서 머티리얼 인스턴스 생성(Create Material Instance) 을 선택합니다.
-
인스턴스를 더블클릭 하여 머티리얼 인스턴스 에디터에서 엽니다. 각 파라미터 이름 옆의 박스에 체크하여 오버라이드할 파라미터를 활성화합니다. 파라미터가 활성화되면 파라미터 값을 수정하여 프레넬 이펙트의 컬러와 외관을 변경할 수 있습니다.
Fresnel Falloff 에 큰 수를 입력하면 프레넬 이펙트가 에지로 점점 밀려나는 반면, 작은 수를 입력하면 프레넬 이펙트가 중앙에 가까워집니다. 아래는 Fresnel Falloff 값을 0에서 10까지 늘렸을 때 어떤 변화가 일어나는지에 대한 예시입니다. 숫자가 커짐에 따라 파란색이 점점 더 스피어 에지로 밀려나는 것을 볼 수 있습니다.

프레넬 및 노멀 맵
프레넬은 한 면의 표면 노멀을 기준으로 계산되기 때문에, 노멀 맵을 사용하여 프레넬 이펙트가 머티리얼에 분포되는 방식에 영향을 줄 수 있습니다. Fresnel 노드는 표면 노멀이 카메라와 직각인지 여부를 확인하는 방식으로 작동합니다. 카메라와 직각인 경우 프레넬 이펙트가 표시됩니다. 매끄러운 스피어에서 이는 프레넬 이펙트가 에지에만 나타난다는 것을 뜻합니다.
그러나 노멀 맵 도입 시 메시의 실루엣 내에 기복과 윤곽이 생길 수도 있는 방식으로 표면 노멀이 수정됩니다. 이는 프레넬 이펙트로 인해 표면 노멀이 매끄러웠다면 보이지 않았을 디테일이 하이라이트 또는 강조될 수 있다는 뜻입니다.
아래의 두 이미지는 이를 시각화한 예시입니다. 왼쪽 이미지(1)에서 Fresnel 노드는 평평한 표면 노멀을 출력합니다. 프레넬 이펙트가 스피어의 에지에서만 보입니다. 오른쪽 이미지(2)에서는 노멀 맵이 입력되어 메시의 표면 노멀이 확연히 바뀌었습니다. 이제 프레넬 이펙트가 노멀 맵에서 정의된 윤곽을 따라 표시됩니다.

아래 이미지는 서로 다른 노멀 맵이 프레넬에 어떻게 서로 다른 방식으로 영향을 미치는지 보여줍니다.

위의 비교에 사용된 머티리얼은 이전에 생성된 머티리얼과 동일하지만, 다음과 같은 사항이 수정되었습니다.
- 머티리얼의 블렌드 모드(Blend Mode) 를 불투명(Opaque) 에서 반투명(Translucent) 으로 변경했습니다.
- 디테일 패널에서 반투명 라이팅 모드(Translucency Lighting Mode) 를 볼류메트릭 비방향성(Volumetric Non Directional) 에서 표면 반투명 볼륨(Surface Translucency Volume) 으로 변경했습니다.
- Emissive Color 입력에 연결된 Multiply 출력을 Opacity 입력에도 연결했습니다.
- 새 2D 텍스처 샘플러를 추가하여 Normal 입력에 연결했습니다. 시작용 콘텐츠의 Tech_Hex_Tile_N 을 노멀 텍스처로 사용했습니다.
- 새 스칼라 파라미터를 추가하고 Texture Coordinates 표현식으로 곱하여 노멀 맵에 몇 가지 기본적인 균등 타일링을 구현했습니다.
노멀 맵을 Fresnel 노드의 Normal 입력에 전달할 수도 있습니다. 이는 프레넬 이펙트의 노멀을 기본 머티리얼의 노멀과 다르게 만들고자 할 때 특히 유용합니다. 예를 들어, Fresnel 노드를 사용하여 머티리얼에 에너지 보호막 같은 것을 표현할 수 있으며, 보호막이 활성 상태가 아닐 때는 머티리얼을 노멀로 보이게 할 수 있습니다.
위의 머티리얼을 사용하여 이러한 이펙트를 구현하려면 머티리얼을 다음과 같이 수정합니다.
-
시작용 콘텐츠의 T_Brick_Clay_New_D 텍스처를 추가하고 Base Color 및 Roughness 에 연결합니다.
-
Normal 입력이 마찬가지로 시작용 콘텐츠에 있는 T_Brick_Clay_New_N 을 사용하도록 변경합니다.
-
Transform 머티리얼 표현식 노드를 찾아 머티리얼 그래프에 추가합니다. 탄젠트 스페이스에서 월드 스페이스 로 변환하도록 설정되어 있어야 합니다.
-
기존 노멀 맵 텍스처 노드를 Transform 노드의 입력에 연결하고 출력은 Fresnel 노드의 Normal 입력에 연결합니다.
완료 시 머티리얼은 아래 그래프와 같습니다.
이제 Fresnel 노드의 표면 노멀이 벽돌 텍스처의 표면 노멀과는 완전히 다른 모습이 되었으며, 프레넬 이펙트는 벽돌 위의 반투명 레이어처럼 보입니다. 이펙트가 너무 강한 것 같다면, 한 단계 더 나아가 Multiply 노드와 스칼라 파라미터를 추가하여 프레넬 이펙트의 강도를 제어할 수 있습니다. 머티리얼에서 강도 컨트롤을 구현하는 방법은 다음과 같습니다.
Fresnel Intensity 파라미터를 조정하여 표면의 프레넬 이펙트 강도를 제어할 수 있습니다. 값을 0 으로 설정하면 이펙트가 비활성화되며, 그 외의 값으로 설정하면 아래와 같이 프레넬 이펙트의 비저빌리티가 점차적으로 증가합니다.

입력 블렌딩
Fresnel 노드는 Lerp 노드의 서로 다른 두 입력 간 알파 블렌딩을 위한 다용도 유틸리티입니다.
아래 이미지에서 알파 입력의 Fresnel 노드는 Lerp의 입력 A와 B의 빨간색과 녹색 간 트랜지션을 제어합니다.

동일한 로직으로, 프레넬을 사용하여 메시에 있는 서로 다른 Roughness 값의 배치를 제어할 수 있습니다. 아래 이미지에서는 스피어 에지의 Roughness 값 0.1과 스피어 중앙 방향의 Roughness 값 0.9 사이의 트랜지션에 프레넬이 사용되었습니다. 이를 통해 스피어가 마치 유리처럼 에지 근처에서 더 많이 반사되는 이펙트가 연출됩니다.
