[Tutorial #01] 02. 블렌더 PBR 사용하기
PBR 텍스처 사용
블렌더에서 어지간한 재질은 Principled BSDF로 표현 가능합니다. 그중에서도 Base Color, Metallic, Roughness 세 가지를 기본으로 사용합니다.
아래 그림처럼 간단한 씬에 텍스처를 적용해 보겠습니다.
텍스처는 아래 사이트에서 다운로드할 수 있습니다.
ambientCG라는 사이트로 여러 PBR 텍스처를 고화질로, 그것도 무료로 제공해 주는 고마운 곳입니다.
여기서 wood라고 치니까 여러 가지 관련 이미지들이 나옵니다.
저는 이 녀석을 다운받았습니다. 아래 표시한 곳에서 1k부터 8k까지 다운 받을 수 있습니다.
쉐이더에서 Image Texture 노드에 텍스처를 불러와 아래처럼 연결해 주면 뷰포트에서 바로 텍스처가 적용된 것을 알 수 있습니다. Base Color, Metallic, Roughness 모두 연결하면 됩니다.
금속이 아닌 비금속 wood 재질입니다. Metallic에는 텍스처를 연결하는 게 아니라 값을 0으로 설정합니다. 다운받은 파일에서는 metallic 텍스처가 아예 빠져 있는 것을 알 수 있습니다.
이때 텍스처를 하나씩 가져오지 마시고, principled BSDF 노드를 선택해 놓고 Ctrl + Shift + T를 누르면 아래처럼 이미지를 한 번에 가져올 수 있습니다. 이 단축키는 블렌더 addon인 node wrangler를 활성화해야 사용할 수 있습니다. 아주 유용한 addon이니 그냥 블렌더 기본 기능처럼 켜놓고 사용하시길 추천드립니다.
텍스처 이미지 6개를 모두 선택한 상태에서 파일을 불러오면 아래 그림처럼 블렌더가 알아서 가져올 텍스처는 가져오고, 버릴 텍스처는 버리고, 또 연결까지 자동으로 해주는 것을 볼 수 있습니다. 아래 그림처럼 Mapping 연결까지 잘 되었습니다.
텍스처를 불러오는 기준은 텍스처 파일의 이름에 따라 달라집니다. 텍스처 파일명에 Color, Roughness, Metal 이런 식으로 각각의 역할을 구별할 수 있는 항목이 포함돼야 합니다. 그렇지 않으면 엉뚱한 파일을 불러오거나 불러오지 못하는 경우가 발생합니다.
그 외의 경우, AmbientOcclusion 텍스처는 불러왔지만 노드에 연결되지 않았습니다.
normal의 경우 NormalDX, NormalGL 두 가지 버전이 있었는데 그중 NormalGL만을 가져와서 연결한 것을 볼 수 있습니다.
Displacement는 연결되긴 하였으나 정상적으로 작동하지 않습니다. Displacement는 이 외에 별도 세팅이 필요합니다.
texture coordinate와 mapping이 무엇인지, ambientOcclusion, normal, displacement를 어떻게 사용면 좋을지 글을 진행하면서 계속 살펴보려고 합니다.
Color Space
먼저 살펴볼 것은 Color Space입니다. 쉐이더에 이미지를 가져오면 아래 그림처럼 colorSpace가 자동으로 설정됩니다. Base color 이미지만 sRGB로 설정하고 나머지는 모두 Non-Color로 설정되었습니다. 특히나 노멀 이미지는 설정이 잘못되었을 때 화면에서 재질이 이상하게 보일 수 있으므로 꼭 Non-color로 설정되었는지 확인해야 합니다.
혹은 Linear, raw (4.0 버전에서는 Linear Rec.709)라는 항목을 선택해도 됩니다. 그 외 이미지들은 사실 sRGB나 NonColor나 크게 상관은 없습니다. 어차피 이미지를 가져와 그대로 사용하는 경우는 드물고, 노드를 사용하면 사용자의 입맛에 따라 roughness나 기타 색상들을 조절하면서 사용하기 용이하기 때문에 뷰포트에서 직접 눈으로 보면서 수정하는 경우도 많습니다. 하지만 노말은 편집하기가 번거로워서 그냥 Non-color를 선택한 후, Normal Map 노드에서 강도를 조절하는 게 좋습니다.
색깔을 표현하려는 이미지는 sRGB, 데이터를 표현하려는 이미지는 Non-Color, 또는 Linear로 세팅하시면 됩니다.
이 둘을 간단하게만 살펴보자면...
sRGB와 Linear의 차이는 컴퓨터와 사람이 색을 인식하는 차이에서 발생합니다.
컴퓨터는 색을 선형으로 인식합니다.
아래 그림과 같은 그라디언트가 있다고 생각해 보겠습니다. 이 색을 10단계로 나눈다고 가정했을 때, 컴퓨터는 아래 그림처럼 선형적으로 데이터를 입력받고 출력합니다. 가장 어두운 검정을 0, 가장 밝은 흰색을 10으로 놓고 중간색들을 밝기 단계에 따라 정확하게 10등분 합니다. 1보다 2배 크면 2, 1보다 3배 크면 3, 이런 식으로 인식하는 것이죠.
하지만 사람은 재밌게도 이런 식으로 변화를 받아들이지 않습니다. 베버의 법칙에 따르면 사람은 자극을 로그 함수 형태로 느낀다고 합니다. 네이버에서 찾은 검색 결과입니다.
자극을 받고 있는 감각기에서 자극의 크기가 변화된 것을 느끼려면 처음에 약한 자극을 주면 자극의 변화가 적어도 그 변화를 쉽게 감지할 수 있으나 처음에 강한 자극을 주면 자극의 변화를 감지하는 능력이 약해져서 작은 자극에는 느낄 수 없으며 더 큰 자극에서만 변화를 느낄 수 있다는 법칙이다.
[네이버 지식백과] 베버의 법칙 [Weber's law] (두산백과 두피디아, 두산백과)
음... 뭔 소리인지 어렵게도 써 놨네요.
요약하면 인간은 자극이 없을 때는 작은 자극도 민감하게 느끼지만, 자극이 많을 때는 추가되는 자극을 둔감하게 느끼게 됩니다. 시신경을 통해 받아들이는 시각 정보도 마찬가지입니다. 어두운 곳에서 촛불을 켜면 촛불의 불빛이 아주 밝게 느껴지지만, 환한 대낮에 촛불을 켜면 촛불의 불빛이 밝다고 느끼지 못하는 것과 같죠. 촛불의 세기는 둘 다 동일하지만 자극이 많은 대낮보다 자극이 없는 어두운 곳에서 촛불이 훨씬 밝다고 느끼는 것입니다.
그래서 인간은 어두운 영역의 색 변화는 민감하게 받아들이고, 밝은 부분의 색 변화는 조금 더 둔감하게 받아들입니다. 마치 어두운 영역에서는 색이 2배 밝아졌는데 3배 밝아진 것 같고, 밝은 영역에서는 2배 밝아졌는데 0.5배 밝아진 것 같고... 이런 식으로 받아들이게 됩니다.
모니터의 중요한 역할은 바로 사람이 느끼는 것과 최대한 비슷하게 색을 표현하는 것입니다. 그래서 컴퓨터가 선형적으로 표현하는 색 영역을 사람이 느끼는 것처럼 로그 형태로 보정해 줄 필요가 있습니다. 이를 감마 보정이라고 합니다. 어두운 곳을 좀 더 조밀하게, 즉 어두운 곳을 더 잘 표현하는 방식으로 보정하게 됩니다. 감마 보정에 대해서는 인터넷에서 검색해 보면 쉽게 찾아볼 수 있습니다.
중요한 것은 이러한 이미지들을 프로그램이 알아서 잘 만들어 주도록 이미 세팅되어 있다는 것입니다. 우리는 상황에 맞게 사용하기만 하면 됩니다.
색깔을 표현하려는 이미지는 보정된 sRGB로, 데이터로 사용하려는 이미지는 Non-Color, 또는 Linear로 세팅하시면 됩니다.
대표적으로 normal map에는 오브젝트의 노멀 정보가 담깁니다. 이 정보를 사람이 보기 위한 sRGB로 세팅해버리면 노멀 정보가 왜곡되어 나오게 됩니다. 보정되지 않은 원본 데이터를 사용하기 위해 Non-Color 세팅을 해줍니다.
[Tutorial #01] 02. 블렌더 PBR 사용하기
[Tutorial #01] 02. 블렌더 PBR 사용하기 (1) - 연결된 글입니다.
01. 블렌더 PBR 기본 재질
02. 블렌더 PBR 사용하기(1)
05. AmbientOcclusion (AO) 연결하기 (1)
06. AmbientOcclusion (AO) 연결하기 (2)
'블렌더 > 블렌더 튜토리얼' 카테고리의 다른 글
[Tutorial #01] 06. AmbientOcclusion (AO) 연결하기 (2) (1) | 2023.12.30 |
---|---|
[Tutorial #01] 05. Ambient Occlusion (AO) 연결하기 (1) (1) | 2023.12.29 |
[Tutorial #01] 04. Normal map 적용 (1) | 2023.12.18 |
[Tutorial #01] 03. 블렌더 PBR 사용하기(2) (0) | 2023.12.18 |
[Tutorial #01] 01. 블렌더 PBR 기본 재질 (2) | 2023.12.15 |