내가 직접 정리하면 좋겠지만, 꽤 방대한 양이고 잘 정리한 글이 있어서 메모겸 여기에 옮겨둔다.
https://artisticrender.com/the-definitive-tutorial-to-uv-mapping-in-blender/
글링크 딸랑 하나 있으면 심심하니까, 블렌더 UV unwrap 공식 강좌도 가져옴. UVMap이란, vertex가 가진 데이터인데, 3D 좌표정보외에 U와 V라는 2D좌표정모를 뜻한다. 이 정보를 이용해서 3D 도형을 2D에 펼치면 전개도처럼 되는데, 이 과정이 UV mapping 이고 어떻게 매핑할지 결정하는 과정이 UV unwrapping이다. vertex 하나, 하나 작업을 하기 힘드니까 자동으로 생성하기도 하고, 절취선(seam line)을 설정해주면 종이접기하듯이 펼쳐지게 된다.
메쉬 데이터에서 UVMap 데이터를 만들었으면, 이제 텍스쳐를 씌워야지. UVMap에 이미지 데이터를 매핑시키면, 역으로 계산되어 3D 오브젝트에 이미지가 입혀지게 된다. 여기에 사용되는 이미지가 Texture이다.
좀 더 진행하기전에, Shader, Texture, Material의 용어정리를 해야겠다. stack exchange 질답항목 참조.
Shader는 vertices를 shading하는 작은 코드 집합이다. difuse , Emission , BSDF, Glass, Box 등이 있다.
Shader는 기본색상을 베이스로 작동하는데, 이 기본색상대신 디테일을 추가할 수 있는게 Texture이다. Texture는 익히알고 있는 image texture와 수식으로 생성해내는 procedure texture가 존재한다.
material이란 빛에 대해 3D 오브젝트가 어떻게 반응하는지 기술하는 파이프라인인데, 결국 Shader의 집합이다. 블렌더에서 material 생성은 node editor로 여러개의 Shader, texture들을 이용해 만들게 된다.
Texture를 사용하는 방법은 3가지로 분류된다. 1) 외부에서 만들어진 이미지를 가져다 입히는 방법 2) 조명 및 각종 쉐이딩 설정을 베이킹하는 방법 3) UV map 또는 3D 오브젝트에 직접 페인팅 하는 방법.
1번은 큰 어려움없이 익숙한 내용이긴한데, PBR Texturing에 대해선 알아둬야 한다. PBR은 Physical Based Rendering의 약자로 image, normal, roughness 등의 개별데이터로 표면을 렌더링하는 방법이다. Blender 2.8의 기본 쉐이더인 Principle BSDF가 이 방법을 쓴다.
현실의 사물표면은 항상 매끈하지 않다. 거친 표면도 있고, 돌기가 있는경우도 있고, 금속처럼 정말 매끈한 표면도 있다. 이런 디테일을 vertices로 표현하기 힘들기 때문에 적은 계산으로 흉내를 내는 방법이 많이 개발되었다. 예를들면, 표면의 높이정보 또는 빛의 반사를 계한하는 Normal vector를 RGB값에 대입하여 이미지로 저장해놓고 균일하지 않은 표면을 표현하는 방법이다.
PBR Textureing은 이렇게 단순한 칼라정보 외에 normal, roughness등의 정보를 가진 텍스쳐 셋을 이용하여 렌더링되도록 하는 방법이다. 다음 영상을 참조.
2번 베이킹은 말 그대로 빵굽듯이 Texture이미지를 굽는걸 말한다. 블렌더 내에서는 렌더링시 매번 빛에 대해 오브젝트의 material 계산이 이뤄진다. 이는 부하가 상당한 작업으로, 특정 상황의 오브젝트 상태를 그대로 Texture이미지에 담아두면, 복잡한 연산없이 단일 texture만 그려줘도 같은 효과를 낼 수 있다.
마지막 3번째는 Texture Painting이다. Blender 내에서도 지원하는 기능인데, 외부 이미지를 가져오는게 아니고 이미지를 생성하여 포토샾처럼 직접 브러쉬로 칠하는 방법이다. UV Map처럼 2D에서 칠할수도 있고, 3D 오브젝트 상태에서 칠할 수도 있다. 말 그대로 페인팅작업이라서, 포토샾처럼 레이어등 다양한 기능을 지원해주면 편한데 블렌더에서는 복잡한 기능을 지원하지 않는다. 그래서 외부툴을 쓰는데, 대표적인 상용 툴이 Substance Painter이다.
업계 표준이지만, 구독모델 유료 제품이다. 오픈소스로 유사 기능을 하는 프로젝트가 있는데, 바로 Armor Paint이다.
빌드버전은 유로로 팔지만, github에서 직접 소스를 받아 어렵지 않게 빌드해 볼 수 있다. 단점은 아직 개발중인 단계로, 0.7 안정화 버전 이후 0.8dev 버전이 진행중이다.
링크만 몇개 메모해두려고 했는데, 간단하게 전체 내용도 메모하려다 보니 글이 좀 길어졌다. 여기에선 texture만 언급을 했는데, 최종적으로 shader 부분도 같이 봐야 한다. 블렌더는 내가 숙련자가 되기전엔 이런 외부링크 위주의 글을 올리게 될듯하다.