CG 이야기/블렌더

블렌더에서 벤트 노말(Bent Normal)맵 굽기

영균 2021. 10. 13. 22:38

블렌더에서 벤트 노말 제작에 대한 튜토리얼이 정확히 없어서 정리 겸 적어봤습니다.

1. osl 다운로드

  여기를 눌러서 osl파일을 다운로드합니다. 벤트 노말을 만들어주는 쉐이더입니다.

2. 렌더러 변경

  렌더엔진을 사이클로 변경하고 Open Shading Language에 체크합니다. 이 기능을 사용하려면 반드시 CPU로 렌더링을 진행해야 합니다. (GPU 미지원) 그리고 Sampling 값도 넉넉히 올려줍니다. 



3. 하이폴에 osl 적용하기

  하이폴 모델에 머티리얼을 생성하고 아래와 같이 노드를 구성합니다. 이 쉐이더는 uv와 관련이 없기 때문에 하이폴에 언랩을 하지 않아도 됩니다.
   *Script 노드에서 External 탭을 누르고 다운받은 AmbientOcclusionDirection.osl 파일을 연결합니다.
   *Distance 항목에서 AO의 적용범위를 조절할 수 있습니다.



4. 베이크

  로우폴 모델을 선택합니다. 이때 로우폴에 머티리얼이 없다면 하나 생성해줍니다. 그리고 Image Texture 노드를 꺼내고 New 버튼을 눌러서 빈 텍스처를 생성합니다. 사이즈는 상황에 맞게 조절해서 생성해주세요.


  그리고 하이폴, 로우폴 순서로 선택하고 Bake 패널에서 아래 이미지처럼 설정합니다.
    *언리얼엔진에서 사용하려면 G채널을 바꿔주세요. (DirectX : -Y / OpenGL : +Y)
    *Extrusion과 Max Ray Distance는 모델에 맞게 조절해주세요.


  Bake 버튼을 눌러서 결과를 확인합니다. 시간이 오래걸려요.


5. 안티 알리아싱, 디노이징

  예시 이미지가 나쁘지 않게 나와버렸는데, 실제로 실무에서 작업해보면 경계선도 엉망이고 노이즈가 많이 섞여있을 겁니다. 이것은 컴포지팅으로 해결이 가능합니다.
  Compositing 워크스페이스로 전환하고 Use Nodes에 체크합니다. 그리고 아래 영역은 Depe Sheet 대신 Image Editor로 열어놓습니다.


  화면 우측 Render Properties의 Color Management 패널에서 View Transform을 Standard로 변경합니다.


  Image 노드를 꺼내고 조금 전에 베이크 한 이미지를 선택합니다.


  Anti-Aliasing과 Denoise, Viewer 노드를 추가하여 아래와 같이 구성합니다.


아래 Image Editor에서 이미지를 Viewer Node로 변경합니다.


결과물을 확인합니다.

안티알리아싱과 디노이징 전/후

마지막으로 벤트 노말맵을 저장하고 마무리합니다.