- 투명재질 - Trnas lit, Tran sunlit, Trans Advance, Trans Fast, Trans Dither, Refraction, REflect Refract, Ice, SL water
- 착시 질감 - Wpo, Parallax, Bump offset
- Dissolve
- 움직이는 커튼
<투명재질>
Translit
- 머티리얼 생성
- 베이스 컬러에 흰색 연결
- 블렌드 모드 Translucent로 변경
* Default Lit - 기본 빛을 받겠다는 뜻
- 오파시티 연결
= 반투명재질
* 뎁스 테스트
- disable 검색
> 오브젝트로 가려도 물체가 보인다
Transunlit
- 머티리얼 생성
- 셰이딩 모델을 Unlit으로 변경
* Unlit - 재질 자체로 띄워놓겠다, 빛을 안받겠다
- 블렌드 모드를 Translucent로 변경
* 너무 어두워지지 않기 위해 이미시브 컬러를 연결
= 영향 안받는 반투명재질
* 투명 재질이 겹칠수록 복잡도가 높아진다
> 눈속임을 하거나, 최대한 투명한 물체를 겹치지 않도록 한다
> 언릿을 사용한 투명재질이 더 가볍다
TransAdvance
* 가장 복잡도가 높은 투명재질
- 머티리얼 생성
- 블렌드 모드 Translucent로 변경
- Translucency의 스크린 스페이스 리플렉션을 체크
- 라이팅 모드를 Surface ForwardShading으로 변경
- 수치값들을 연결해준다
= 반사가 있는 투명재질 완성
Transfast
- 머티리얼 생성, 블렌드 모드를 Translucent로 변경
- Translucency > 라이팅 모드를 Volumetric PerVertex Directional로 변경
- 노드 연결
= 버텍스를 기준으로 라인이 생긴다.
* Translucency > 라이팅 모드를 Volumetric PerVertex NonDirectional로 변경
> 자기 마음대로 면을 계산한다
Mask
- 머티리얼 생성
- 블렌드 모드를 Masked로 변경
- 텍스쳐 노드 연결
- 복잡도를 확인했을때 불필요한 부분이 모두 사라진 모습을 볼 수 있다
> 가장 가벼운 방법
TransDither
- 머티리얼 생성
- 블렌드 모드 Masked 연결
- Dither Temporal AA를 생성 후 오파시티 마스크에 연결
- 다른 노드 연결
= 픽셀화가 됨
> 구멍이 뚤려 투명하게 보임 / 가장 가벼운 페이크
Refraction
- 머티리얼 생성
- 셰이딩 모델 > Unlit으로 변경
- 블렌드 모드 > Translucent로 변경
- 리프랙션 > 리프랙션 메서드를 Index Of Refraction으로 변경
- 오브젝트 끝에 맺히는 굴절을 위해 Fresnel 생성 후 Refraction에 연결
= 끝에 굴절이 맺히는 투명재질
* 노말을 넣으면 노말 굴곡에 맞춰 굴절이 생김
Reflect Refract - 반사와 굴절을 둘 다 사용
- Vertex normal WS를 생성 후 베이스 컬러에 연결
- Reflection Vector WS노드를 생성 후 사이에 끼워 베이스컬러에 연결
- HDRI를 불러와서 연결
- Refract 생성 후 Ray Direction에서 핀을 뽑아 Camera Direction Vectror을 연결
- Surface Noraml에 Vertex Normal WS를 연결한다.
- Refractive index Origin에 1, Refractive Index Target에 1.52를 각각 연결해준다
- HDRI 텍스처에 연결
- Reflect와 Refract의 노드를 각각 분리
- Lerp로 연결 후, Fresnel을 알파값에 연결해준다.
- Lerp를 베이스 컬러와 이미시브 컬러에 연결
= 반사와 굴절이 모두 일어나는 재질
Ice
- 머티리얼 생성
- Camera Vector WS 생성 후 핀을 뽑아 TransformVector 생성
> 공간을 계산하는 정보를 다른 공간을 계산하는 백터 값으로 변경
> 좌표계를 해당 선택지 좌표계에 맞도록 바꿔준다 (ex. XYZ를 ZYX로 변경)
게임이펙트-언리얼엔진3-Material-탄젠트.. : 네이버블로그 (naver.com)
* 언리얼 4 이펙트 게시글도 있는듯 함..
- Transform Vector의 소스를 World Space로 바꾼다
- Transform Vector의 대상을 Tangent Space로 바꾼다
- CustomReflection Vector 생성
- 기본 Normal에 연결되어있는 것을 CameraVector에 연결
- Normal엔 노말맵을 연결해준다
- Reflection 에 Mask를 두개 연결, 하나엔 Multiply를 연결해준다.
- 다른 하나의 마스크는 B값만 설정해주고 ABS를 연결해준다.
ABS
* 나오는 값을 모두 양수로 만드는 노드
- Abs에 Divide를 연결하고, Param을 생성하여 연결해준다
*해당 노드들은 z값의 깊이를 설정해준다
- 첫번째 Mask에 연결해둔 Multiply에 모두 연결해준다
- Multiply에 Multiply에 연결하고 B에 Divide를 연결
- Divide에 1과 512(텍스쳐 크기) 연결
* 해상도 조절 노드
- 노이즈 텍스쳐 불러오기
- Add를 생성하여 Multiply와 Texcoord를 더해준다
- 텍스쳐에 연결
* 텍스쳐를 복사하여 R 값을 Multiply를 연결해 Z값 깊이 노드의 Divide에 연결
= 색에 따라 깊이감이 다른 질감
- 베이스컬러 텍스쳐에 Lerp와 Multiply를 연결
- Lerp에 각각 색을 연결하고 Alpha값에 텍스쳐 RGB를 연결
- Multiply에는 0.3을 곱한다
- Lerp는 베이스 컬러에 연결
- Mulriply에는 Power를 연결하여 러프니스에 연결해준다.
= 반사까지 되는 얼음 재질
SLwater
- 머티리얼 생성
- 셰이딩 모델을 Single Layer Water로 변경
* Single Layer Water 노드가 되면 Single Layer Water Material 노드를 생성할 수 있음
- 노드 기본 연결
- 노드 디테일에서 리프랙션 메서드를 Index Of Refraction으로 변경
- 3 콘스탄트와 1파라미터를 만들어 Multiply에 연결
> Murkiness = 탁함의 정도
- Divide를 만들어 Multiply와 파라미터를 만들어 한번 더 연결
> Divide를 사용하는 노드는 섬세한 수치값이 필요한 경우이다
- Single layer Water Material의 Absorption Coefficients에 연결
= 물 속을 들여다보는 것 같은 재질
Scatterign - 확산
- Absorption Coefficients에 연결한 노드를 복사 한다
- water Murkiness의 이름을 water scattering으로 변경
- Scattering Coefficients에 연결
- 색상을 가져갈 수 있도록 3 콘스탄트를 파라미터로 변환
물 노말 연결
- Texcoord에 Panner연결하고 노말맵도 연결한다
- Tex coord의 UV를 각각 3, 3 적어준다
- 그대로 복사해서 나란히 두고 Panner X에 0.1, 아래 패널은 Y에 0.1을 적는다
- Blend Angle Corrected Normals 노드를 가져와 각각 연결
- Blend Angle Corrected Normals를 노말에 연결한다.
= 물 질감 추가
* 프로젝트 세팅 > 엔진 > 렌더링 > 루멘
> 사용 가능한 경우 / 하드웨어 레이 트레이싱 사용 활성화 해주면 좋음
<Post Process Volume>
Reflection
- 모두 켜주기
> 키고 안키고의 차이가 있음
<착시효과>
Wpo
- 머티리얼 생성 후 기본 베이스 텍스쳐와 노말맵 연결
- 텍스쳐에 Multiply로 40을 곱하고 Multiply를 한번 더 연결한 뒤 VertexNormal WS를 곱한다
- Multiply를 월드 포지셩 오프셋에 연결
= 기본 Plan과 SM_plan, SM_plan_Very Dense에 연결한 모습
> 버텍스가 많을수록 노말맵과 비슷하게 올라온다
Parallax
- 머티리얼 생성
- Parallax Occlusion Mapping 노드 생성
- 베이스 컬러와 노말맵 기본 연결
- 텍스쳐를 텍스쳐 오브젝트로 변경해 Parallax Occlusion Mapping의 Hightmap Texture에 연결
- 파라미터를 생성해 Height Ratio에 연결
- Hight map channel에 4콘스탄트 연결
= 올라와보이는 이미지
바운드
- 오브젝트 선택 후 디테일에 Bound 검색
- 바운드 스케일을 2로 올려주면 뷰포트 주변에 걸렸을때 깜빡거리지 않음
Bumpoffset
- 월드 포지션을 생성하고 Mask, Divide, 텍스쳐 순서대로 연결한다.
> Divide의 B를 500으로 설정한다 (확대)
= 이미지는 그대로 있고 오브젝트만 움직이는 모습
- BumpOffset 노드 생성
- Bump Offset의 Height에 파라미터 연결
- Bump Offset에 텍스쳐를 연결하고, 각 텍스쳐에 1-x를 연결
- Bump Offset과 연결된 텍스쳐에 Multiply를 연결하고 0.3을 곱한다
- Max를 생성하여 A에는 1-x를, B에는 Multiply를 연결
- 베이스컬러에 Max 연결
= 안에 깊이가 있는 것 같은 착시 효과
* 텍스쳐 연결
- Height 텍스쳐에 Multiply로 Bump offset height 파라미터를 곱해준다
- Multiply의 값을 Bump Offset의 Height 에 연결
- Bump Offset의 값을 베이스 컬러와 노말에 각각 연결해준다
= 올라온 모습
> 수치값을 너무 올리거나 내리면 텍스쳐가 이상해짐 주의
<Dissolve>
- 머티리얼 생성
- 머티리얼 함수 생성
- 머티리얼 함수에 들어가서 World position을 생성
> 월드 포지션을 사용하면 불규칙한 텍스쳐를 얻을 수 있다
- XYZ에서 핀을 뽑아 Noise 노드 달아준다
- Noise 노드에 Add를 달아준다. B값에 -2를 써준다.
> 완전한 검정을 만들어주는 역할
- Add에 Add를 한번 더 더해주고 B에 Mulfiply 연결
- 연결한 Multiply의 A값에 Function Input을 연결해주고 B엔 4를 적어준다
> -2부터 2까지 4개의 값에 4를 곱하면서 0~1로 동기화를 해줌
- Add에 연결
- Saturate 생성
> 값을 고정
- Frac 생성
> 정수를 없애고 소수점 밑의 값만 사용
- Subtract를 생성하고 B에 0.5를 써준다
- Sign을 연결
- Saturate에 1-x를 연결 후 Funtion Output연결
- Sign에 Multiply를 연결하고 Function Input을 생성하고 연결
* Input이 vector 3인지 확인
- Output outline에 Multiply를 연결해준다
- 함수 디테일 창에서 라이브러리에 노출 활성
* noise 노드 대신 텍스처 사용 가능
- Dissolve 머티리얼로 가서 결과노드 > 머티리얼 > 블렌드 모드를 Masked로 변경
- 베이스컬러에 회색 연결 후 만든 함수를 불러온다
- outline에 색상 파라미터 연결
- Fade에 파라미터 생성 후 연결
- Opacity > 오파시티 마스크 연결
- Outline > 이미시브 컬러 연결
- 머티리얼 인스턴스 생성
- Global Scalar Parameter Values > 머티리얼 사라짐 정도
- Global Vector Parameter Values > 이미시브 컬러
> 색상 지정 후 V값을 올려 빛나게 만들어 줄 수 있다
= 빛나며 사라지는 머티리얼
<움직이는 커튼>
- 머티리얼 생성
- Time 생성하고 Multiply를 생성해 연결한다. B에는 파라미터 연결
- Multiply를 하나 더 연결하고 Panner의 time과 연결해준다.
* panner의 Y값을 -0.1로 만들어줘야 움직임
- panner를 노말맵과 연결
- Multiply를 생성해 VertexNormal WS와 노말맵에 연결해준다.
- Add에 3백터를 생성해 연결하고 Multiply도 함께 연결한다.
> 3백터가 움직이는 방향 설정
- Multiply를 하나 더 생성 후 A에 Add를 연결하고, 노말맵 G값을 B에 연결한다
- Multiply를 하나 더 연결하고 월드 포지션 오프셋으로 연결
- 커튼의 위쪽 움직임을 멈추기 위해 Vertex Color와 Clamp를 생성해 Multiply B에 연결해준다
* 중간 노드 정리
- 메시페인트 모드에서 RGB채널로 펄럭임 강도 칠해주기
* 페인트 컬러에 따라 강도가 달라짐
= 울렁울렁 커튼
살랑살랑 흔들리는 바람 만들기
- Rotator를 달아 Panner의 Coordinate에 연결
- Texcoord를 만들고 Multiply를 만들어 연결
- 파라미터를 만들고 B에 연결
> wave size의 값은 -0.08로 설정
- Rotator의 Time에 Add 연결
- Time 노드 생성 후 Multiply도 생성. 파라미터를 만들어 Rotator speed라고 이름을 분류한다
- sine 노드 연결 후, Multiply 하나더 생성하고, Rotator direction Jiggle 파라미터를 만들어 함께 연결한다
- Add를 만들고 A에 Multiply를 B에 Rotator direction wave 파라미터를 연결한다
- Rotator에 Texcoord와 연결된 Multiply를 연결한다
= 살랑살랑 흔들리는 커튼
* 흔들리는 방향 고정하기
> 방향을 돌리면 흔들리는 방향도 바뀌는 상태임
- 마지막 Multiply에 Transform(Vector)를 연결하여 월드 포지션 오프셋에 연결해주면 된다.
셰이더 복잡도
- 재질이 부하를 얼마나 잡아먹고 있는지 볼 수 있다
FPS 표시
- 옆에 프레임이 뜬다
- 30프레임 밑으로 떨어지면 안됨. 60으로 유지하면 좋다. (40~50정도도 허용범위)
메시 페인트 복사
- 칠한 메시를 선택 후 복사하기를 누른 뒤 다른 메시를 선택하여 붙여넣기 하면 된다.
'언리얼 > 머티리얼' 카테고리의 다른 글
2024 언리얼 엔진 실무 기반 교육 과정 39일차 (0) | 2024.05.30 |
---|---|
2024 언리얼 엔진 실무 기반 교육 과정 34일차 (0) | 2024.05.23 |
2024 언리얼 엔진 실무 기반 교육 과정 17일차 (0) | 2024.04.25 |
2024 언리얼 엔진 실무 기반 교육 과정 12일차 (0) | 2024.04.18 |
2024 언리얼 엔진 실무 기반 교육 과정 7일차 (0) | 2024.04.11 |