일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 티스토리챌린지
- Ice
- ghost
- particle simulation
- vignette
- post process
- snow
- world position
- Swamp
- character
- Vertex Animation
- 오블완
- raymarching
- burn
- accumulation
- UV
- texture
- dissolve
- sphere mask
- normal
- bug fix
- optimization
- pivot painter
- noise
- UI
- WOOD
- Liquid
- sampling
- particle
- vertex offset
- Today
- Total
SuHong Log
Normal Map 텍스처 제작하는 법 (1) Baking 본문
Normal Map이란 3D 그래픽에서 표면의 세부 디테일과 질감을 표현하기 위해 사용하는 텍스처 맵입니다. 텍스처에 메시의 법선 벡터 값을 저장하고, 폴리곤의 형태를 변경하지 않고도 빛이 메시 표면에 닿았을 때의 방향을 조작하여 디테일을 표현합니다.
게임에서는 보통은 하이 폴리곤 모델링을 먼저 만들고 로우 폴리곤 모델링에 노말 맵을 씌우는 형태로 많이 사용하는데, 하이 폴리곤 모델링은 만들기에도 어렵고 오래 걸립니다. 특히 이펙트 제작에서는 메시를 안 쓰고, 스프라이트 이미지로만 만드는 경우가 많기 때문에 Diffuse Map만 가지고 이펙트를 만들게 되는 경우가 많습니다.
이 포스트에서는 디퓨즈 맵만을 가지고 노말 맵을 제작하는 법을 소개하겠습니다.
디퓨즈 텍스처로는 Pixabay에서 다운로드한 무료 사용 라이선스 이미지를 사용하겠습니다.
우선 하단의 사이트에서 노말맵을 생성합니다.
NormalMap-Online
cpetry.github.io
이미지를 넣으면 이렇게 질감은 살지만 입체감이 없는 노말 맵이 나옵니다. 보통 자동 생성 툴로는 이 정도가 최선입니다. 서브스턴스 디자이너(Substance Designer)에서도 비슷한 방식으로 노말맵을 제작할 수 있지만, 여기서는 다루지 않겠습니다.
우리는 이 이미지를 응용해서 더 그럴듯한 노말 맵을 제작할 겁니다. 참고로, 이 포스트에서는 OpenGL이 아닌 DirectX 기준으로 제작하겠습니다. (OpenGL과 DirectX의 Normal Map 차이 참고)
대부분의 3D 모델링 툴에 있는 Baking 기능을 사용해서 노말 맵을 만들 겁니다.
이 포스트에서는 오픈 소스 툴인 블렌더(Blender)를 사용하겠습니다.
블렌더를 켭니다.
기본 세팅은 다 지우고, Plane을 하나 꺼냅니다.
Shading 탭으로 가서 머티리얼을 하나 추가합니다.
예의 돌 이미지를 Base Color로 넣어줍니다.
Modeling 탭으로 가서 우측 상단의 Viewport Shading을 Material Preview 또는 Rendered로 바꾸어 이미지가 보이도록 합니다.
왼쪽 하단의 Knife 툴로 이미지 형태대로 잘라줍니다.
적당히 돌의 모서리를 따라서 잘라줍니다.
잘라서 만든 버텍스들을 자연스러운 형태가 되도록 조형해 줍니다.
위에서 모델링 어렵고 오래 걸린다고 해놓고 결국 만들고 앉아있습니다. 하지만 일이란 게 안 하려고 했던 것도 결국은 해야 하고 그런 거죠 뭐.
버텍스도 조금씩 더 나누어가며 모양을 잡습니다. 폴리곤을 많이 늘려 Sculpting 탭에서 제작해도 좋습니다.
엉성하지만 이 정도면 됐습니다. 여기에 새로운 Plane을 만들고, 똑같이 머티리얼도 추가해 줍니다.
다시 Shading 탭으로 가서 머티리얼에서 Add 탭으로 image를 추가해 주고,
New를 눌러 새 이미지를 만들어줍니다.
추가한 이미지를 선택하고, 아까 만든 돌 모델링을 먼저 선택하고 그다음 Plane을 선택합니다.
반드시 순서대로 선택해야 합니다.
그다음 Render Properties 탭에서 Eevee로 되어 있는 Render Engine을 Cycles로 바꾸고
스크롤을 내려 Bake 탭을 엽니다.
Bake Type은 Normal로 바꾸어주고, Selected to Active를 활성화해 준 후 Extrusion 값을 대략적으로 설정해 줍니다.
저는 넉넉하게 1m로 했습니다.
마지막으로 Bake 버튼을 누르면 이렇게 노말 맵을 베이킹할 수 있습니다. 아래의 영상에 전체 과정에 나와있으니 보면서 따라 하셔도 좋습니다.
제작한 이미지를 저장해서 포토샵으로 가져옵니다. 여기서 제가 실수한 점이 있는데, OpenGL 기준으로 노말 맵을 제작 해버렸습니다. 이 포스트에서 설명한 대로 G 채널을 뒤집어 DirectX 버전으로 바꾸어줍니다.
블러 처리를 해주고
상단에서 Normal Map Online에서 제작한 텍스처와 겹칩니다. 이때 모델링하면서 모서리가 살짝 어긋난 것을 볼 수 있는데, 픽셀유동화나 손가락 툴로 슬쩍 수정해서 사용하면 됩니다.
처음 제작한 노말 맵도 블러 처리를 해주고, 이런저런 방식으로 텍스처 둘을 섞어주면 됩니다. 어떠한 방식으로 섞느냐는 자유이지만, 노말 맵이므로 RGB 값이 기본적으로 128, 128, 255 인 것만 유념해 주시면 됩니다.
이런 식으로 노말 맵이 완성되었습니다.
이 방식의 단점은 모델링 기술과 툴이 필요하다는 점입니다. 모델링에 능한 분이라면 제가 만든 예시보다 정교하게 제작할 수 있을 것입니다. 이펙트 아티스트라면 어느 정도의 모델링은 가능할 테지만 너무 귀찮은 방식이죠. 그래서 포토샵에서 노말 맵을 직접 그리는 방식을 다음 포스트에 이어서 소개하겠습니다.
'Tech Art' 카테고리의 다른 글
Normal Map 텍스처 제작하는 법 (2) Painting (4) | 2024.11.30 |
---|---|
Normal Map의 방향 구분하는 법 (1) | 2024.11.23 |
셰이더? 쉐이더? Shader 란 무엇인가 (7) | 2024.11.17 |
게임 엔진의 좌표계 (0) | 2024.11.11 |