일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- node
- 데이터베이스
- 프린세스메이커
- R
- 마인크래프트뮤지컬
- JWT
- Ajax
- 카렌
- 언리얼프로그래머
- 스마일게이트
- 게임개발
- 언리얼
- VUE
- Unseen
- 언리얼뮤지컬
- 프메
- 미니프로젝트
- EnhancedInput
- Enhanced Input System
- Jinja2
- 으
- Express
- 레베카
- 파이썬서버
- flask
- Bootstrap4
- 디자드
- 알고풀자
- 정글사관학교
- 스터디
- Today
- Total
Showing
[언리얼 Metarial] fresnel reflectioin 이용하여 반투명 재질 만들기 본문
머티리얼에 프레넬 사용하기 | 언리얼 엔진 문서 (unrealengine.com)
https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/Materials/ExpressionReference/
목표 에너지 쉴드(래퍼런스)
투명한 재질을 만들기 위해서는 Blend Mode에서 Masked 아니면 Translucent를 선택해주어야 한다.
그런데 Masked는 true, false와 같이 투명아니면 안투명밖에 선택지가 없고
반투명한 재질을 만들고 싶다면 Translucent를 선택해야 한다.
Translucent 선택시에 Ligthg Mode에서 Surface Translucency Voulume을 선택하면 비활성화 상태였던 Roughness 등등이 활성화된다.
1. Fresnel 노드 추가하여 Base Color 지정
필요한 정보(1) 투명하다는 0 (Black), 불투명하다는 수치로 1 (white)
필요한 정보(2) fresnel reflectioin을 설명하기 위한 강물 예시: 바로 발밑 즉, 가까운 강물을 위에서 아래로 바로 바라보면 투명해보이지만, 강가의 수평선을 바라보면 물 표면의 주변 풍경이 반사되어 보인다.
여기서 법선벡터를 대입하여 생각해보면 바로 발밑의 법선벡터는 카메라(눈)의 벡터와마주보게 되고 저멀리 강가면의 법선벡터는 카메라 벡터와 수직이 되는 셈이다.
언리얼의 shpere 메터리얼에 바로 적용해서 생각해볼 때, fresnel 노드는
법선벡터가 카메라와 마주보게 되는 구의 앞쪽은(구의 중점과 카메라 간 거리가 가장 짧은 경우) Black(투명),
법선벡터가 카메라와 수직이 되는 외곽 쪽은 불투명한 값인 white 1로 보이게끔 짜여져있는 노드이다.
rim light
테두리만 사알짝 빛나듯이(경계만 빛나게 하고 싶을 때) 만드는 것을 rim light라고 하는데,
프레넬 노드에서 지수값을 설정할 수 있는 이유는 최소값(0) 최대값(1)을 고정시켜놓고 중간 톤의 값만 바꾸고 싶을 때 용이하기 때문이다.
위 캡처와 다르게 바로 opacity에 프레넬 노드를 꽂아버리면 중간이 텅비게 되는데 은은하게 색을 채우고 싶다면
투명도 20퍼가 되게끔 0.2 Lerp를 준다.(아래캡처)
lerp를 80퍼 보이게 조절한 경우(아래 캡처)
다른 오브젝트와 맞닿은 경계 표현
Depth fade가 적용된 오브젝트는 다른 3d 오브젝트와 겹칠때 흐릿해지는 느낌을 줄 수 있다.
그러나 맞닿은 경계만 보이고 나머지는 안 보여야 하기 때문에 (보인다 1 안 보인다 0) 노드를 바꿔야 한다.
1-x 노드의 힘은 바로 반전효과이다.
목표: 프레넬 + Depth fade
구체 위쪽으로는 프레넬이되, 바닥과 맞붙는 부분은 Depth fade가 적용되어야 한다.
위에서 작업한 프리넬 노드들과 Depth fade 노드들에 대해서 add를 사용하면 된다.
벡터 계산을 해보면 multiply는 안된다는 것을 알 수 있다.
다시 종합해서 노드를 잘 연결해준다.
목표 : 무늬 넣기
현재 육각형 격자무늬 크기가 너무 크다!
u,v 값을 직접적으로 입력하는 대신 multiply 노드를 쓸 수도 있다.
그러나 가로세로에 대해 타입이 달라 float가 동일하게 복제되기 때문에 n*n 꼴만 가능하므로 자유도가 낮다
u,v 반복도를 다르게 하고 싶다면 constant2vectors노드를 활용해볼 수 있다.
파라미터로 바꿀 수가 없으므로 constant vector 노드 2개 만들어서 각각 파라미터로 변경해준뒤(우측 마우스 클릭 첫번째) append 해주는 방식을 취하도록 한다.
합치기
add or Max
외곽 경계값이 1이든 2이든 Opacity에서는 인식 컬러가 비슷하다.
(다만 Emissive 합친 것을 꽂으면 블룸 효과가 나타난다)
타일 애니메이션
쉐이더는 tick이 없기 때문에 time을 가져와서 써야한다.
최종
'Unreal' 카테고리의 다른 글
[Unreal, Virtual Production] VP 학습 계획 (2) | 2024.03.06 |
---|---|
[Unreal] 라인트레이스 C++ (1) | 2024.01.27 |
[언리얼 그래픽스] Wet Ground, 노멀맵 믹싱 (0) | 2024.01.24 |
[Unreal Project] 싱글톤 패턴을 이용한 네트워크 플레이어 프로그래밍 (0) | 2024.01.13 |
[Unreal Git] GitHub Desktop 이용한 언리얼 fork 형상관리 (팀프로젝트 ver) (0) | 2024.01.13 |