블렌더/블렌더 튜토리얼

[Tutorial #01] 05. Ambient Occlusion (AO) 연결하기 (1)

노루3759 2023. 12. 29. 21:38
반응형

[Tutorial #01] 05. AmbientOcclusion (AO) 연결하기 (1)

Ambient Occlusion

이제 pbr과 노말에 이어 ambinet occlusion (ao) 맵을 연결해 보겠습니다.
 
Ctrl + Shift + T로 텍스처를 일괄 import 했을 때 ambinet occlusion은 블렌더가 자동으로 연결해 주지 않았습니다.
그래서 수동으로 아래와 같이 연결해 주었습니다.

 
 
AO 텍스처가 적용된 전, 후 차이가 느껴지시나요? 나무 사이사이가 더 어둡게 표현되었습니다.

 
 
ao 텍스처를 사용하려면, MixColor 노드를 사용해 BaseColor에 ao 텍스처를 multifly로 블렌딩해줘야 합니다... 뭔가 ao 연결만큼, 복잡한 글이 되어버린 느낌입니다.
 
다른 프로그램은 그냥 ao 항목을 옵션으로 만들어서 ao 텍스처를 드래그 앤 드롭으로 가져오기만 하면 프로그램이 알아서 표현해 줬는데, 블렌더는 그렇지 않죠. ao의 표현 방식을 따라 사용자가 직접 연결해 줘야 합니다. 그래서 모르면 매번 ao 텍스처 사용할 때마다 인터넷에서 어떻게 연결해야 하는지 검색해 보고, 수학 공식 사용하듯이 따라서 연결하게 됩니다. 근데 한번 알고 나면 어렵지 않습니다.
원래 컴퓨터 작업이라는 게 몰라서 어렵지 알면 쉽습니다.
 
 
일단 블렌더에는 Ambient Occlusion이라는 노드도 따로 있습니다. 게다가 이것저것 복잡하게 만지지 않아도 블렌더에서 자체적으로 Ambient Occlusion을 지원해 줍니다. 사용 전에 Ambient Occlusion을 먼저 알아보겠습니다.

 
 
그리고 AO를 사용하기 위한 MixColor 노드와 ColorRamp 관련 설명은 아래 링크를 참조하시면 됩니다.
ColorRamp 노드

 

[blender node] 01. ColorRamp (1)

ColorRamp 사용 방법 ColorRamp는 블렌더 쉐이더에서 자주 사용하는 아주 중요한 노드입니다. 블렌더뿐만이 아니라 다른 렌더러에서도 재질을 내 맘대로 다루기 위해서는 ColorRamp를 사용하는 게 중요

noru3759.tistory.com

MixColor 노드

 

[blender node] 02. Mix Color (1)

[blender node] 02. Mix Color (1) Mix Color 노드 만들기 MixColor 노드에 대해 알아보겠습니다. mix color는 두 가지 방법으로 만들 수 있습니다. (버전에 따라 다를 수 있습니다. 제가 사용하는 블렌더는 4.0 버

noru3759.tistory.com

 
 
 
Ambient Occlusion을 사용하면 3d 그래픽을 보다 사실적으로 보이게 만들 수 있습니다.
아래 ambient occlusion 이 적용되기 전, 후의 이미지가 있습니다. 왼쪽은 적용되지 않았고, 오른쪽은 적용되었습니다.

 
물체가 만나는 곳이나 좁은 틈새에는 빛이 덜 들어가게 됩니다. 그러면 빛을 덜 받는 영역에는 어둡게 그림자가 생깁니다. 침대 밑이나 책상 사이의 틈이 그렇듯이, 방에 불을 밝게 밝혀도 물체 사이의 좁은 틈에는 빛이 덜 들어가 훨씬 어둡게 보입니다. 이런 틈새 공간에서 발생하는 어두운 그림자를 표현하기 위해 ambient occlusion을 사용합니다.
 
3D 그래픽에서 ambient occlusion을 사용하면 물체의 표면이 조명에 얼마나 노출되는지를 계산해서 부드러운 그림자를 시뮬레이션해 줍니다.  오브젝트가 만나거나 물체가 안쪽으로 들어가는 부분에 부드러운 그림자를 만들어주면 더 사실적인 그래픽을 만들 수 있습니다. 
 
두 사진을 비교해 보면, 물체 사이사이가 좀 더 어두워진 걸 확인할 수 있습니다. 물체에 그림자를 표현해 주고 안 해주고에 따라 사진에서 느낄 수 있는 입체감에 차이가 난다는 것을 알 수 있습니다. 

 
 
 
먼저 Eevee 렌더러에서 Ambient Occlusion을 사용하기 위해서는 Ambient Occlusion 옵션을 따로 켜줘야 합니다. 이 버튼을 누르는 것만으로 화면이 좀 더 입체감 있게 바뀌는 것이죠. 

 
 
사이클 엔진은 빛을 계산해서 보다 사실적으로 렌더 해줍니다. 그래서 ambient Occlusion을 자동으로 만들어 줍니다. 애초에 ambient Occlusion이 표현되지 않는 게 비현실적이죠. 빛이 있으면 그림자가 생기는 게 당연하듯이, 물체 사이 틈에는 어두운 영역이 만들어지는 게 자연스럽습니다.

 
 
 
예전부터 많은 예술가들이 '2d 공간에 어떻게 3차원 같은 입체감을 표현할 것인지' 많은 연구와 고민을 해왔습니다. 빛과 물체가 만나는 곳을 어떻게 표현하느냐에 따라 같은 이미지라도 입체적으로 보이게 할 수 있습니다. 아래 그림처럼 동그란 물체에 빛이 만나 밝은 곳이 생기고, 빛이 부족한 곳에는 그림자가 생깁니다. 이걸 표현해 주는 것만으로도 물체가 다르게 보입니다.

 
 
아래 그림은 똑같은 빨간색 원이지만 색을 어떻게 표현하느냐에 따라 물체가 다르게 보인다는 것을 보여줍니다. 포토샵에서 마우스로 대충 슥슥 문질러 3초 만에 만들었습니다. 똑같은 빨간색 원위에 흰색 점 하나 찍고, 아래로 갈수록 어두운색으로 브러쉬 칠 해준 것뿐입니다. 그런데 같은 2d 그림이라도, 더 입체감 있어 보입니다. 빛이 물체에 미치는 영향을 표현해 주는 것만으로 더 사실감 있는 그림을 만들 수 있습니다.

이게 Ambient Occlusion을 사용하는 이유입니다. 아래 두 렌더 장면을 다시 보면, ambientOcclusion이 없는 장면은 뭔가 더 붕 뜬것처럼 보입니다. 오브젝트의 틈새를 잘 표현해 주는 것만으로도 씬에 입체감을 더해 줍니다.

 
 
생각해 보면, 예전 사실적인 렌더러가 없었을 때에는 직접 물체에 비치는 빛을 관찰하고 손으로 일일이 그려서 표현했습니다. 지금은 빛을 사실적으로 시뮬레이션 해주는 렌더러들이 넘쳐 나고 있습니다. 예전 미술의 대가들이 고민해 왔던 작업을 이제 우리는 옵션 하나만 만져서 구현할 수 있는 시대에 살고 있는 것이죠. 
 
 
 

Ambient Occlusion 사용

ambient occlusion을 크게 두 영역에서 살펴보겠습니다.
첫 번째가 우리가 봤던 오브젝트의 영역에서 관찰할 수 있는 음영 표현입니다.
 
예를 들어, 아래 쌓인 그릇을 살펴보겠습니다. 이 그릇들은 각각이 하나의 오브젝트입니다. 그래서 오브젝트 사이에 ambient occlusion이 만들어집니다. 뭐... 블렌더가 알아서 만들어 줍니다. 왼쪽은 ao가 적용되지 않았고, 오른쪽은 적용되었습니다. 쌓인 그릇 사이에 그림자가 생깁니다.

 
 
 
하나의 오브젝트 안에서도 굴곡이 있고, 들어가는 홈이 있으면 ambient occlusion을 알아서 만들어 줍니다. 왼쪽 두 개는 이비에서 AO 적용 전, 후 사진이고, 오른쪽은 사이클 렌더입니다.

빨간 동그라미에서는 서로 다른 오브젝트 사이에서 만들어지는 ao를 볼 수 있습니다. 오브젝트가 가까이 있거나 서로 만나는 곳에 그림자가 표현됩니다. 노란 동그라미에서는 안쪽으로 들어간 모서리에서 발생하는 ao를 볼 수 있습니다. 모서리 안쪽이 조금이라도 더 어둡게 표현되는 것을 알 수 있습니다.
 
 
복잡할 거 없이 이비에서는 Ambient Occlusion 옵션을 켜주는 것만으로 AO를 사용할 수 있습니다. 사이클은 렌더러 자체가 빛을 계산해서 표현해 주기 때문에 별도 옵션 없이도 AO를 알아서 잘 만들어 줍니다.
 
이렇게 보면, Ambient Occlusion 텍스처를 사용하지 않아도 큰 문제는 없어 보입니다... 그리고 실제로 없어도 됩니다. 
 
하지만 정말 Ambient Occlusion이 필요 없다면 많은 사람들이 언급하지도 않았겠죠. ambient occlusion은 빛을 계산해서 렌더 해주는 사이클 렌더보다도, 이비나 게임 같은 실시간 렌더 계열에서 더 빛을 발합니다. ambient occlusion을 표현하기 위해 렌더러는 옆에 오브젝트가 있는지, 어디가 모서리 졌는지 등등, ao 관련 항목을 계산해야 합니다. ambient occlusion을 표현하기 위해 컴퓨터가 더 많이 일해야 한다는 것이죠. 이렇게 컴퓨터가 계산하는 과정을 보통 비용에 빗대어 표현합니다. ambient occluston은 비용이 꽤 많이 들어가는 계산입니다.
 
그래서 ambient occlusion, 줄여서 AO 맵에 이런 음영이 지는 영역을 이미지로 미리 표현해 놓습니다. 그리고 그걸 가져다 쓰는 거죠. ambient occlusion을 위한 비용을 줄일 수도 있고, ao 맵 자체를 조절해서 음영의 영역을 더 디테일하게 조절할 수도 있습니다.
 
AO를 컴퓨터에서 직접 계산해서 만들어 줄 수도 있지만, 아래 그림처럼 AO texture에 음영 정보를 저장해 놓고 그걸 가져와 음영이 지는 곳을 표현해 줄 수도 있습니다. 저장된 데이터를 사용해 음영이 지는 것처럼 색을 합성해 주는 방식입니다. 그러면 컴퓨터가 ao를 계산해 주지 않아도 텍스처에서 어두운 영역을 표현해 줄 수 있습니다.

 

 
 
 

Ambient Occlusion Bake

아래 분홍색 박스의 ao 정보를 텍스처로 만들어 보겠습니다. 
이렇게 오브젝트의 정보를 이미지 텍스처로 옮기는 과정을, 보통 이미지를 Bake 한다고 표현합니다. 

 
 
먼저 AO 텍스처를 bake 하기 위해서는 세 가지를 확인할 필요가 있습니다.
 
첫 번째로, uv를 잘 펴야 합니다.
bake 작업은 오브젝트의 정보를 이미지 텍스처에 옮기는 작업입니다. 그래서 오브젝트의 UV를 잘 펴줘야 합니다. UV 자체가 구겨져 있으면 그림을 잘 그려도 이상하게 표현되겠죠?
 
오브젝트에서 smart UV project 옵션을 사용해 uv를 펴줬습니다. uv가 겹치는 곳이 없도록 해야 이미지가 이상해 지지 않습니다. 

 
 
두 번째로 사이클 렌더에서 사용해야 합니다.
사이클 엔진은 사실적인 표현을 위해 빛을 추적해서 계산해 주는 방식을 사용합니다. 이비 엔진은 그렇지 않습니다.
아래 그림에서 볼 수 있듯이 이비에서는 그림자 표현이 이상하게 나오는 곳이 있습니다. 반면 사이클은 빛을 계산해서 렌더 해주기 때문에 이런 오류가 없죠.

그러다 보니 이비 엔진에서는 빛과 오브젝트가 상호작용하는 씬에서 이런 오류 같은 표현이 종종 발생하곤 합니다. ambient occlusion이 대표적인 예입니다. 물체가 만나는 곳에 그림자가 생기는 것이 당연하지만, 사이클처럼 빛을 추적해서 계산하지 않다 보니 표현해 주지 못하는 것이죠. 그래서 이비 렌더러는 ambient occlusion이라는 옵션을 따로 만들어 제공하는 겁니다. 빛을 추적하지 못해서 발생하는 오류들을 기술력으로 커버하는 느낌이랄까요?
 
이런 이유로 빛을 추적해서 계산해 주는 사이클 엔진에서 빛의 정보를 제대로 기록할 수 있습니다. 그림자도 빛 정보가 있기에 만들어집니다. 
 
 
세 번째로, AO 정보를 기록할 이미지가 필요합니다.
그림을 그리려면 도화지가 필요한 것처럼 AO를 기록하기 위한 이미지 텍스처가 한 장 필요합니다. 박스의 재질 내부로 들어가서 Image Texture 노드를 하나 만들어 줍니다. 

 
여기서 New 버튼을 눌러주면 블렌더 내부에 AO라는 새로운 이미지 텍스처를 하나 만들어 줍니다.

 
 
이렇게 만들어진 이미지는 Image Editor에서 확인할 수 있습니다. 

 
 
 
 
 
texture baking
이제 사이클 엔진에서 렌더 항목을 보면, Bake 항목이 있습니다. 여기서 Bake 버튼을 눌러주기만 하면 됩니다.

 
 
베이크 타입에 AO 말고 다른 항목들도 Bake 할 수 있습니다. Ambient Occlusion을 선택해서 베이킹하면 됩니다.

 
아래 박스 친 곳에서 베이킹 진행률을 확인할 수 있습니다. 베이킹이 텍스처로 정보를 옮기는 작업이다 보니 시간이 좀 걸립니다. 특히 블렌더는 베이킹 시간이 좀 느립니다. 그래서 필요한 데이터만 베이킹하시면 됩니다. 

 
 
혹시 베이킹이 안 되면, 안 되는 이유도 여기 박스 친 곳에 표현됩니다.
No active images found in material.....라고, 오브젝트 재질에서 ao 정보를 저장하기 위한 image 파일을 찾지 못했다고 확인할 수 있습니다.
특정 작업 시에 문제가 발생하면 왜 오류가 발생하는지 알아야 해결할 수 있습니다. 이 문구를 더블클릭하면 팝업창으로도 Log 기록을 볼 수 있으니, 오류 발생 시 다른 곳보다 여기를 확인해서 나오는 정보로 인터넷에 검색해 보시길 바랍니다. 
오류가 발생해서 인터넷에서 물어보고 싶은데 뭐라 설명하기 어려울 때, 여기 Log 기록으로 표현하면 블렌더 사용을 위한 도움을 받을 수 있습니다.

 

 
 
아래 그림처럼 오브젝트 ao 정보가 이미지에 잘 기록되었습니다.

 
 
 

[Tutorial #01] 05. AmbientOcclusion (AO) 연결하기 (1)


[Tutorial #01] 05. AmbientOcclusion (AO) 연결하기 (1)
 

01. 블렌더 PBR 기본 재질
02. 블렌더 PBR 사용하기(1)

03. 블렌더 PBR 사용하기(2)

04. Normal map 적용

05. AmbientOcclusion (AO) 연결하기 (1)

06. AmbientOcclusion (AO) 연결하기 (2)

07. Displacement


 

반응형