CG 이야기/블렌더

블렌더에서 헤어카드 텍스처 만들기

영균 2024. 1. 27. 20:17

  최근에 헤어카드 제작이 필요하여 "과연 블렌더에서 헤어카드 텍스처를 만들 수 있을까?"라는 의문을 가지고 여러 정보를 찾아보았는데요. 애드온으로 만드는 방법들은 많이 있지만 블렌더 자체 기능을 활용하여 베이크 하는 방법은 정리가 안 되어있더군요. 지금까지 찾은 정보를 공유해 봅니다.

  블렌더는 헤어에 지오메트리 노드를 사용할 수 있는 것이 장점인 듯합니다. 지오메트리 노드를 활용하면 먼 길을 돌아가도 결국엔 내가 원하는 목적지까지 도달할 수 있다는 것을 한 번 더 깨닫게 되는 계기였습니다.

  초반에는 플랜 위에 헤어를 올려놓고 베이크 기능으로 텍스처를 만들어 보려고 시도했지만, 사이클이 헤어까지는 지원하지 않아서 이 방법은 포기했습니다. 맨 처음 이 방법을 생각했던 이유는 우리가 일반 로우폴/하이폴 베이크를 하듯이 헤어 캡에도 같은 원리를 적용하고 싶어서, 다이렉트로 버텍스 노멀 방향으로 베이킹이 될까?라는 마음으로 테스트를 했었습니다.

이제 남은 것은 흔히 나와 있는 헤어 카드 제작 프로세스들... 카메라를 하나 세팅하고 헤어를 UV에 배치하듯이 하나하나 만들어서 렌더링하는 것입니다. (아래 영상은 이 방법의 예시입니다.)

 

1. 일러두기

  1.1 저는 개인적으로 헤어를 직접 베이크하기 보다는 메쉬로 변환하여 베이크한 것이 더 좋은 것 같다고 판단되어 지오메트리 노드에 "Curve to Mesh"가 들어가 있습니다.
  1.2 아래 방법들은 절대적인 방법이 아닙니다. 오류가 있을 수 있고, 더 좋은 방법들이 있을 수 있습니다.
  1.3 전체적인 내용은 너무 길어서 핵심 내용만 서술하겠습니다.
  1.4 이 방법은 렌더로 제작하는 것이기 때문에 컬러 매니지먼트를 Flimc에서 Standard로 변경해야 합니다.
  1.5 뒷 배경은 셀프입니다. 플랜에다가 컬러를 수동으로 바꿔주세요.
  1.6 eevee 렌더 엔진으로 렌더링하였습니다.
  1.7 Top 뷰 기준으로 제작했습니다. Front 뷰 기준으로 헤어를 제작했을 경우 일부 노드를 수정해야할 수도 있습니다.

2. Normal Map 만들기

결과물

  노멀 맵은 지오메트리 노드의 어트리뷰트를 따로 받아올 필요없었고, 쉐이딩 에디터에서만 작업을 했습니다. 텍스처에 들어가기 위해 -1~1 범위의 벡터를 0~1로 만들고 감마를 2.2로 변경했습니다.

  또는 이렇게 노드를 구성해도 같은 결과가 나옵니다.

  그러나 문제가 생겼는데요. 다른 맵들은 다 원하는 대로 나왔지만 유독 노멀 맵이 "이게...맞나?" 싶을 정도로 애매하게 나왔습니다. 아래의 이미지를 같이 보시죠.

  물론 얘가 잘못한 것은 아닙니다. 하지만 가만히 생각해 보니 어차피 화면을 줌 아웃 하여 피사체를 축소하면 화면에 1픽셀로 찍힐까 말까인데 저렇게 한 가닥 안에서 굴곡이 있는게 과연 맞을까? 생각이 들더군요. 그래서 여러 레퍼런스를 찾아보다가 그래도 이미지가 잘 찍힌 이 게시물이 맘에 들어서 이 작업물의 느낌을 비슷하게 가지고 가고 싶었습니다. 링크를 타고 들어가서 보면 어떤 느낌인지 아실 겁니다.
  그래서 쉐이딩 노드를 바꿔서 어떻게 해결해 보려고 했는데, 여기서는 문제가 없는 듯하여 지오메트리 노드를 수정해 줬습니다. 우리가 보통 Curve to Mesh를 하면 Profile Curve에 Curve Circle을 붙이게 됩니다. 이래서는 원하는 느낌이 나오질 않아서 과감히 Circle을 버리고 플랫한 면으로 가기로 하였습니다. Arc를 붙입니다.

  그래도 약간 심심한 느낌이 들어서 일부 영역을 tilt로 베리에이션 했습니다.

 

3. Flow Map 만들기

  플로우 맵은 결과적으로 보면 만드는 방법은 매우 쉬웠지만, 검색해도 정보가 나오질 않아서 고생했던 맵입니다. 먼저 지오메트리 노드에서 "Curve Tangent" 노드를 "Capture Atrribute" 노드에 연결하고 아웃풋에 연결합니다. 아웃풋 Name은 Flow라고 지었습니다.

  노멀 맵과 마찬가지로 텍스처에 들어가기 위해 -1~1 범위의 벡터를 0~1로 만들고 감마를 2.2로 변경했습니다. 다른 점은 위에서 만든 Curve Tangent 정보를 Attribute 노드로 받아왔습니다.

 

4. ID Map 만들기

  지오메트리 노드에서 랜덤 값을 받아서 아웃풋에 연결합니다. Float으로 만들어서 넘겨도 되지만 뭔가 결과물 느낌이 썩 맘에 들지 않아서 벡터로 넘겼습니다. 마찬가지로 아웃풋 Name을 지정해 주세요.

  쉐이딩 에디터에서 Attribute 노드로 데이터를 받아옵니다.

 

5. Root Map 만들기

  Spline Parameter 노드의 Factor를 아웃풋으로 연결합니다.

  쉐이딩 에디터에서 Attribute 노드로 데이터를 받아옵니다.

 

5. Depth Map 만들기

  Depth 맵은 지오메트리 노드 편집 없이 바로 쉐이딩 에디터에서 노드를 구성합니다. 저는 Top 뷰에서 카메라를 놓았기 때문에 Z값을 사용했습니다. 그리고 Gamma 노드를 쓰면 이미지가 어둡게 나오지만, 엔진에 들어가면 sRGB 체크 해제를 할 테니 유지하였습니다.

 

6. Opacity Map 만들기

마지막 맵입니다. 쉐이딩 노드 에디터에서 Emission 노드를 하나 꺼내어 아웃풋에 연결하고 렌더링하면 끝입니다.