2018년 10월 3일 수요일

[2012. 2. 9] Custom color pass 와 writeToColorBuffer node 사용법 in Maya2012

우선 이번 주제는 상당히 상급의 유저들이 많이 사용하는 부분인데요... 이 사용법 자체가 어렵다기 보다는, 렌더패스들을 뽑아서 활용하는 자체가 최상급 퀄리티를 끌어내기 위한 부분이다보니 그다지 범용적으로 활용되지 않아서라고 할 수 있을 것 같습니다...

갖가지 렌더패스를 뽑는 이유에 대해서는 깊이값을 패스로 뽑아서 실사와의 합성이라거나 다른 툴끼리 렌더된 이미지를 합성한다거나 모션블러, DOF같은 것을 렌더러에서 활용하기에 너무 느려서 패스로 뽑아서 포스트작업에서 활용하는 등등 갖가지 이유가 있겠습니다만...
이 외에도 Diffuse , specular 부터 해서 아주 세세한 갖가지 부분을 다 패스들로 뽑아서 포스트에서 블렌딩시키고 각각의 패스들의 컬러나 루미넌트 등을 세세하게 컨트롤 해서 최상급의 퀄리티를 뽑아내기 위한 것도 있습니다.
이렇게 컨트롤 했을 때, 실사나 다른 렌더 이미지와의 합성등에서 옛날 영화의 합성처럼 튀지않고 아주 자연스러운 결과물을 얻을 수 있기도 하구요...
이뿐만 아니라 3D씬에서 단순 렌더링한것만으로는 창조해내기 쉽지않은 아트웤의 결과도 얻을 수 있기도 합니다...

어쨌거나 이렇게 다양하게 사용되는 렌더패스에 있어서, 가끔은 멘탈레이라거나 마야에서 기본으로 보유하지 않은 패스를 뽑고 싶을 때도 있을 것입니다...
아래는 Maya2012 의 렌더패스 리스트입니다






































이렇게 Maya가 제공하는 것 이외의 것도 뽑고 싶은 경우가 있을 수 있습니다.
Google 같은데 custom color pass로 검색해봐도 정말 예상못한 갖가지 정보를 custom으로 뽑아서 사용합니다... 이들은 Nuke같은 포스트 툴에서 활용이 되고요...
예를들어 UV pass 를 만들어낸다거나 해서 Nuke에서 활용하는 것입니다...

또 한가지는 SSS 쉐이더에서 Diffuse , front Scattering , Back Scattering 등등 세분화된 pass를 뽑아내는 등에 활용할 수도 있다는 것입니다...

바로 위의 것들을 하면, 복잡할 수 있으니 가장 간단한 것을 해보고, 이해를 돕도록 하겠습니다... 원리가 이해되면, SSS쉐이더에 관한 부분도 간단합니다... 이후 SSS쉐이더 까지 해보도록 하죠...

(1) 우선 간단한 걸로 합니다...
다음 아래와 같은 이미지가 렌더링되는 씬입니다...


여기서 얼굴 오브젝트의 outColor 에 pass를 걸어 뽑아보겠습니다...
설명은 이미 작업된것을 작업순서대로 설명하는 것이니까 헷갈리지 마시고 그대로 따라해 보세요...





여기까지 해보시고 제 설명이 잘 되었다면, 어떤 단계와 원리로 되는 것인지 이해가 가실 거라고 생각합니다..
위에 connection editor에서 연결할 때, 많은 채널중에 어떤것을 연결하느냐에 따라 해당 정보가 writeToColorBuffer에 쓰여지고, 그것이 Custom color pass와 연결되어서 렌더링시에 이미지로 뽑히게 되는 원리이죠...
이이미지는 그림이미지가 아니고 32bit floating 정보일 수도 있고요... 설정에 따라서요...(openEXR file 과 Framebuffer 설정 등을 참조하세요)
마지막으로 writeToColorBuffer node의 attribute에서 customColor 패스로 선택후에 바로 아래에 write Operation 설정이 있습니다...
no operation / add /multiply / overwrite 
이 설정도 잘 상황에 맞게 해 주시구요... 각각의 효과에 대해선 굳이 설명은 필요없겠죠 ?

위와 같이 customcolor pass 가 생성됩니다...


CustomColor pass를 열어본 것입니다... 

아래는 알파채널 mask 로 본 것입니다... 


여기서는 간단히 outColor로 해보았습니다... connection editor에 갖가지 채널들이 많은데요... 직접 하나하나 해보시면 알게 되시겠지만, 채널에 있는 것이 생각외의 효과를 낼 수도 있습니다...
예를 들면 채널에 reflected color 같은것을 연결해서 pass로 뽑으면, 일반적인 pass로 뽑을 수 있는 reflection pass와 같은 효과가 나올 것으로 기대하실 것입니다만... 해보시면 전혀 엉뚱한 결과를 얻을 것입니다...
이것은 생각해보면, 간단한데요 렌더링된 결과에서 반사된 패스만이 뽑혀져 나오는 것이 원하는 효과인데, reflected color란 것은 그 쉐이더(blinn등) 속성에 specular shading tab에서 reflected Color를 가리키는 것입니다... 이것이 오브젝트에 씌워져 그냥 뽑혀져나온 결과를 얻게되는 것이어서 일반적인 reflection pass와는 전혀 다른 결과를 보이는 것입니다...

이것은 다음에 SSS쉐이더의 예에서 두드러지게 적용됩니다...
miSSS_fast_skin_maya 와 같은 쉐이더를 가지고 diffuse / front scattering / back scattering 을 뽑으려고 했을 때, 문제가 발생합니다...
왜냐하면, rendering 된 결과를 writeToColorBuffer에 쓰고 그것을 Custom color pass로 뽑아야 하는데 misss_fast_skin_maya 를 컨넥션 에디터에서 보면 그렇게 뽑을 수 있는 채널이 없기 때문입니다...
물론 diffuse 니 front scattering / back scattering 있습니다... 하지만 이것은 앞서 말한 것과 같은 결과를 보입니다...

다음은 misss_fast_shader_x_passes 를 가지고 custom color pass를 뽑아보겠습니다... (diffuse / front scattering / back scattering)
역시 passes 이름붙은 쉐이더가 괜히 있는 것이 아니죠...

복잡하게 다시 설명하지 않겠습니다...
위에서 이미 다루었기 때문에 이해하실 것으로 알고 바로 writeToColorBuffer 에 원하는 채널을 연결하는 것으로 들어가도록 하겠습니다...


당연하지만, 3개의 writeToColorBuffer node가 필요하겠죠... 각각 diffuse / front scattering / back scattering 이렇게 셋을 뽑아서 각기 custom color pass로 연결하여 뽑아야 하니까요... (물론 여기선 앞서 다루었기에 설명없이 넘어갔지만, custom color pass도 3개를 만들어 두셔야 한다는 것을 뜻합니다... 미리 해야만 하는 것은 아니지만요)


보시면 다른 sss쉐이더와는 달리 passes 가 붙은 쉐이더는 이 result 라는 부분이 있습니다...
렌더링된 결과인 것을 뜻합니다...
위 이미지처럼 잘 연결해 줍니다... 이것은 diffuse에 관한 것이구요...



위 이미에서 처럼 front result 와 back result를 연달아 작업해 줍니다...

이제 각 writeToColorBuffer의 속성에서 각각 custom color pass를 선택해 줍니다...


각 writeToColorBuffer node를 선택해 속성창에서 위 이미지처럼 해당 custom color pass 를 선택해 줍니다..
전 custom color pass 를 생성할 때, 1,2,3 로 구분해서 만들었는데, SSS_diffuse / SSS_frontScatter / SSS_backScatter 등의 이름으로 만들었으면 더 좋았겠죠...

이렇게 해서 렌더링한 후의 결과를 보겠습니다...
    Beauty 입니다...

    Diffuse pass입니다.

    Front scattering pass 입니다...

    그림이 거의 블랙이지만 자세히 보시면 보입니다... back scattering pass입니다...


이것처럼 이런 결과를 Nuke등에서 합성할 때, back scattering 또는 front scattering을 좀더 강하게 나타나도록 한다면, beauty와는 다른 결과를 얻을 수 있죠...

마야에서 SSS 수치를 계속 바꿔가면서 렌더링해보려면 많은 시간이 소요될 수 밖에 없습니다만... 이렇게 pass로 뽑고 나서 Nuke 등에서 세밀하고, 유연하게 조절해 주면 훨씬 쉽게 작업할 수 있는 것입니다...
물론 마야에서 어느정도의 결과물은 내고, Nuke에서 세밀하게 조정하는 식이겠지만요...




























댓글 없음:

댓글 쓰기