0. 언리얼 머테리얼... 공부를 그리 많이 하지 않았지만, 미친 기능같다.
- 이전 글에 올렸던 Udemy 강의와, unreal doc을 보면서 대충 정리하는글
- 나중에 파편적인 기억만 남아도 금방 쓸 수 있게 작성해야겠다.
- 사용하기 어려운 shader 들을, 노드(그래프?)로 편하게 사용할 수 있게 만든 기능...인듯?
(일단 나는 카메라 깎는 것 부터 엄청 어려웠다. 하물며 조명이라던가 뭔가 그럴싸한 shader를 깎는 건? ㄹㅇㅋㅋ)
(그냥 언리얼은 조명 놓고, 물체 배치하면 알아서 그냥 다 해주니깐... 마법의 주문만 외우면 되는 너낌)
- shader는 화면에 찍힐 점이 어떨지를 결정하는... 로직(?)인데, 머테리얼은 그것보다 훨씬 쓰기 쉬우면서 훨씬 강력하고... 아무튼 훨씬 진보했다. 얼만큼인지는 내 지식이 없기에 피상적인 느낌만 전달 한다 ㅋㅋㅋㅋㅋㅋㅋ
1. 나이아가라에 쓰는 셰이딩 모델 (Shading Model) 그리고 블랜드 모드 (Blend Mode)
(약간 shader의 main 느낌이 아닐까..)
- 설명은 여기에 다 있다. 언리얼 엔진의 셰이딩 모델 | 언리얼 엔진 5.0 문서 (unrealengine.com)
- 이건 블랜드 모드 머티리얼 블렌드 모드 | 언리얼 엔진 문서 (unrealengine.com)
- 우리가 쓸 셰이딩 모델은 Unlit, 조명에 의한 추가적인 계산(빛의 방향 / 색 / 세기 등)이 없는 친구
- 블랜드 모드는? 이것저것 골라서 쓴다.
- opaque - 그냥 냅다 불투명
- masked - Opacity Mask로 구녕 뚫기
- additive - 그냥 냅다 색을 픽셀위에 얼마나 색을 더할지
- translucent - opacity로 반투명 정도를 계산 등등
(그냥 Unreal Doc을 보면 바로 이해가 된다.)
2. 나이아가라 렌더러 (Renderer) 종류에 맞춰서 머테리얼 깎기
- 주로 Sprite Render나 Mesh Render를 쓸 것이다. (+ Ribbon Renderer?)
- Sprite Renderer 는 Material을 Plane에 쏘는것 / Mesh Renderer는 진짜 Mesh에 Material을 얹어서 쏘는 것
(강의 내용을 예로 들면)
2_1. Sprite Renderer
- 특정한 Texture를 사용하는 머테리얼 일 때
- 그냥 특수효과용으로 엔진에서 제공하는 DefaultSpriteMaterial을 사용할 때
2_2. Mesh Renderer
- Static Mesh를 쏘는 Renderer이고 Material도 그에 맞춰서 깎아야 한다.
- 물론 모델링 사이트에서 Material도 다 만들어서 오면 상관 없다.
3. 나이아가라 System에서 머테리얼 Output 조정 하기
- Material의 표현식 중에서 Particle Expression이 있는데, Particle System (Niargara)의 Emitter에 쓰이는 Material에서 사용한다. (문장 구성이 좀...)
- 여기에 다 있다. 쓰는 방법도... Particle 표현식 | 언리얼 엔진 5.1 문서 (unrealengine.com)
- 강의 에서는 Particle Color 와 Dynamic Parameter를 사용했다.
- 그렇게 하면?
- 이렇게 System 상 Emitter에서 값을 조절 하여 Material의 내부 로직대로 Output을 바꿀 수 있다.
4. Unreal이 제공하는 쓸만한 머테리얼 함수(Function)
- 다양한 시각적 효과를 주기위해 언리얼은 머테리얼에서 사용할 수 있는 많은 함수를 제공한다.
- 그중에서 강의에서 배운것들을 정리해서 대충 적어 놓겠다.
4_1. 시각적 수정
- CustomRotator : UV를 냅다 돌리는 기능. 회전 중심과 회전량을 파라미터로 갖는다.
- CheapContrast : 대비를 증폭 시켜주는 진구. CheapContrast_RGB 도 있다.
- Panner : UV 좌표를 주어진 값에 의한 등속도로 움직여주는 친구
4_2. 편의성
- RemapValueRangeNormalized : 스케일러 값(Input)을, Low와 High에 의거하여 0 ~ 1 사이로 정규화 시켜주는 친구.
- Saturate : 이 친구는 0과 1 사이의 값을 남기고, 나머지 벗어나는 값은 0과 1로 만들어버리는 친구.
- makeFloat2, Append / ComponentMask : 여러 개의 Scalar를 Vector로 합치는 친구 / Vector에서 성분을 고르는 친구.
- TexCoord : UV 좌표 자체를 나타내는 친구.
- Lerp : 두 값을 알파로 선형보간 하는거다... 딱 봐도 엄청 많이 쓰일 것 같다.
- SwitchParameter : Static 값을 가지는 Switch나, bool parameter 대신에 쓰는 놈이다.
- TransformVector : 기본 Rendering 계산은 접평면(?) 접공간(?)에서 한다. Default가 Tangent space 이다. 그 좌표계를 알아서 예쁘게 변환 해주는 기능이다.
- Sine_Remapped : 입력으로 remap할 위상과 값 2개를 받는다.
4_3. 그냥 언리얼이 제공하는 요상하고 강렬한 함수
- DistanceToNearstSurface : Global Level 단에서 가장 가까운 점을 잡아주는 기능이다.
- Fresnel : 카메라 정면이 빛을 적게 반사하고, 카메라와 이루는 각이 클 수록 빛을 많이 반사하게 하는 기능이다.
- RadialGradientExponential : Gradient 친구 중 한명이다. UV에서 원형으로 뻣어나가는 값을 Exponential 하게 생성해주는 친구이다. 입력으로 UV, 중심점, 반경, 밀도, invert checker를 받는다.
- DepthFade : Translucent 친구와 불투명한 오브젝트가 겹칠때 저렇게 자연스럽게 뭉게주는 역할을 한다.
- DiamondGradient : 아마 얘도, gradient 친구들 중 하나일 것이다. falloff 값에 따라, 사각형에서 다이아몬드 모양으로 줄어들면서 값을 생성하는 친구이다.
- GenerateBand : 얘도 뭔가를 생성해주는 친구이다. Band (띠)를 생성해주는 친구이다.
- DitherTemporalAA : 약간 점묘법을 이용할 수 있게 해주는 노드이다. 경계를 예쁘게 해주거나, 뭔가가 사라질때 자연스럽게(?) 해주는데에 쓰인다.
- Noise : 찐으로 noise를 생성해준다. 신기하다...
5. 그 이외 언리얼이 제공하는 머테리얼과 함께 사용하는 기능
- RenderTarget : Material로 Texture를 만들 수 있게 해주는 친구이다.
해상도와, 포맷을 잘 설정하고
블루프린트에서 Material과 Rendertarget을 설정하고, 그 RenderTarget에서 Texture를 뽑아내면 된다.
'Programming > UE5' 카테고리의 다른 글
[Plugin] 플러그인 강의 듣는중 - 메모용 / 계속 추가 (0) | 2023.08.30 |
---|---|
[Niagara] 대충 정리 03 - 언리얼 제공 나이아가라 모듈 (Module) (0) | 2023.08.29 |
[Niagara] 대충 정리 01 - 개요 (0) | 2023.07.11 |
Gaea + Unreal Material Function+ Landscape 연습하기 (0) | 2023.06.24 |
자동으로 변환된다매.... TObjectPtr (0) | 2023.02.01 |