Transparency 맵이 적용된 모델링 데이터의 앰비언트 오클루전 렌더링 방법에 대해 알아봅니다.
본론에 들어가기에 앞서서 앰비언트 오클루전(Ambient Occlusion)의 용도에 대해 먼저 살펴보겠습니다.
* 라이팅 기초 없이 앰비언트 오클루전을 설명한다는 것이 어불성설이긴 하지만, 빠른 팁 진행을 위해 이해가 필요한 개념들은 얼른 훑고 지나가겠습니다.
1. 앰비언트 오클루전의 용도
앰비언트 오클루전에 대해서는 위키피디아에서 상세히 설명하고 있지만 다소 그 개념이 어려운데요, 일단 오클루전(Occlusion)이라는 용어를 우리말로 번역하면 '폐색, 폐쇄, 맞물림'이라는 뜻으로, 일상 생활에서 잘 쓰는 단어는 아닙니다. 가장 손쉽게 접근할 수 있는 개념은 바로 '겹침'이라는 뜻입니다. 실제에서도 사물과 사물이 맞닿게 되는 부분, 가령 책상 위에 마우스가 올라있는 것처럼 표면적이 겹치게 되는 영역은 일반적으로 어두워는데, 앰비언트 오클루전은 바로 이 겹침의 영역을 화이트 앤 블랙으로 렌더링하는 기술입니다.
앰비언트 오클루전의 용도를 설명하기 전에 먼저 알아야 할 개념이 '난반사(Scattered Reflection)'이라는 개념입니다. 다른 말로 확산반사라고도 하는데, 빛이 사물의 표면에 닿게 되면 표면에 따라 광자(光子)가 여러 방향으로 반사가 되어 사물의 형태를 다른 곳에서도 알아볼 수 있으며, 주변 사물의 조명 효과에도 영향을 끼치는데요, 이것을 난반사라고 합니다.
마야의 기본 렌더러인 소프트웨어 렌더의 경우, 이러한 난반사 효과가 적용되지 않습니다. 그래서 주 광원(Key Light)에 필 라이트(Fill Light)와 림 라이트(Rim Light)를 추가한 3점 조명과 같은 조명 기법을 사용하기도 합니다. 좌측은 한 개의 조명을, 우측은 3점 조명을 적용했는데, 우측 이미지의 점선 안쪽 부분을 중심으로 비교해면 그 차이를 알 수 있습니다.
조금 더 리얼한 조명 효과를 위해 나온 것이 바로 글로벌 일루미네이션(Global Illumination)과 이미지 베이스 라이팅(Image Based Lighting)입니다. 광선투사기법, 즉 레이트레이싱(Ray-tracing) 엔진을 사용하면 난반사 효과를 구현할 수가 있는데요, 결과물의 암부(暗部)가 다소 약하게 표현됩니다. 그래서 여기에 앰비언트 오클루전 이미지를 Multiply(곱하기)하면, 더욱 리얼한 효과를 볼 수 있습니다.
위 이미지는 HDRI(High Dynamic Range Image)를 이용한 것인데, 좌측은 멘탈레이의 파이널 개더링(Final Gathering)만을 이용한 이미지이고, 우측은 FG 이미지 위에 앰비언트 오클루전을 멀티플라이로 얹은 상태입니다. 구와 바닥이 맞닿는 부분이 어둡게 처리됨으로써, 우측의 느낌이 좌측보다 자연스러운 것을 확인할 수 있습니다.
* 해당 이미지에 사용된 HDRI 역시 오픈 소스입니다. HDRI 소스 출처는 http://www.openfootage.net/ 입니다.
2. Transparency 맵이 있는 모델링의 앰비언트 오클루전 렌더링
애니메이션 캐릭터의 머리카락같은 경우, 예전에는 플레인(Plane) 모델링으로 머리 뭉텅이를 만들고 맵핑에서 투명도를 적용하는 방식을 많이 썼는데, 요즘에도 그러한 방식은 매우 유용하게 쓰입니다. 이번 포스트에 사용할 모델링 데이터 역시 비슷한데요, 열대 야자수입니다. 이 야자수 데이터는 모델링 판매 사이트인 http://www.turbosquid.com/에서 무료로 다운로드하실 수 있습니다.
* 최근 일부 학원들이 유저들이 만든 튜토리얼을 본인들의 것인양 영업에 사용하는 경우가 많아 부득이 튜토리얼 이미지에 워터마크를 첨가하였습니다.
* 튜토리얼에 사용된 프로그램과 소스는 모두 비상업용 정식 라이센스와 오픈 소스를 사용했음을 알립니다.
* 본 튜토리얼은 기존의 영문 팁(오픈 소스)을 변형한 튜토리얼입니다.
보시는 바와 같이 잎파리가 전부 모델링되어 있지 않고, 몇 개의 덩어리를 플레인 형태로 만든 뒤에 맵핑에서 투명도를 이용하여 디테일한 잎의 모양을 표현했습니다.
앰비언트 오클루전은 마야의 멘탈레이를 사용해서 뽑을 수 있으므로 먼저 멘탈레이 옵션이 켜져 있는지를 살펴봅니다. 먼저 상단 메뉴에서 Window > Settings/Preferences > Plug-in Manager를 선택하시고 새로 팝업된 창 하단에 Mayatomr.dll에 체크 표시가 되어 있는지를 확인합니다. 체크가 되어있지 않으면 체크 표시를 해서 멘탈레이를 활성화합니다.
앰비언트 오클루전 렌더를 위해 Hypershade 창을 엽니다. Maya Shader 중 하나인 Surfaceshader 를 꺼냅니다. 다른 쉐이더와 다르게 이 쉐이더는 조명의 영향을 받지 않는 쉐이더인데, RGB Matte를 뽑을 때 아주 유용하게 쓰이는 쉐이더이기도 합니다. 이어서 Mental Ray 쉐이더인 mib_amb_occlusion을 꺼내어 Surfaceshader의 OutColor에 연결합니다.
야자수 모델링을 모두 선택하고, Surfaceshader를 우클릭하여 Assign 시킵니다.
Render Setting 창을 열어서, 멘탈레이 렌더러를 선택합니다. 멘탈레이 옵션이 예전 버전들과 달라졌는데 Legacy Sampling Mode를 선택하면 Production Quality 정도의 아웃풋을 낼 수 있습니다.
Surfaceshader에는 Transparency 옵션이 있지만, 직접 여기에 알파 이미지를 연결해도 오클루전에 적용이 되지 않습니다. 바로 파일을 연결할 수는 없고 mib_transparency 노드를 이용해야 합니다. Hypershade에서 Surfaceshader, mib_amb_occlusion, mib_transparency 노드를 작업창에 불러옵니다.
Maya Node 중 2D Textures의 File Node 하나를 불러옵니다. file의 속성창에서 폴더 모양을 클릭해서 알파가 뒤집힌 그림 파일을 연결합니다. file 노드를 trmap이라는 이름으로 바꿔주었습니다.
이제 file 노드를 mib_transparency의 transp 속성으로 연결합니다.
이번에는 아까와 같이 mib_amb_occlusion을 surfaceshader의 outcolor에 연결한 뒤, 이것을 다시 mib_transparency의 Input으로 연결합니다. 저는 surfaceshader의 이름을 trao라고 바꿔주었습니다.
이번에는 새로운 Lambert 쉐이더를 생성합니다. 결과적으로 지금 만든 노드들을 새로운 램버트 쉐이더에 연결하고, 이 쉐이더를 잎사귀에 적용할 것입니다. 저는 이름을 ao_shader로 바꿨습니다.
ShadingGroup의 속성을 조정해야 하므로 아까 작업한 쉐이딩 그룹과 새로 만든 Lambert를 선택한 뒤, Input and Output Connections 버튼을 클릭합니다(빨간 선이 그려진 부분).
아까 만든 Lambert 쉐이더의 상위인 LambertSG의 속성창을 엽니다(Ctrl+a). 메뉴 중간쯤에 Custom Shader > Export with Shading Engines의 체크를 해제하고, mib_transparency 노드를 Material Shader로 연결합니다.
Lambert 쉐이더를 이제 야자수 잎사귀 부분에 Assign 시켜서 렌더링을 걸어줍니다. 잎사귀 부분의 알파값이 적용된 것을 확인할 수 있습니다.
* 튜토리얼 프로젝트가 필요하신 분은 코멘트에 메일주소를 적어주시면 보내드리겠습니다. 마야 2014 버전입니다.
'Tutorial > Autodesk Maya' 카테고리의 다른 글
Autodesk 제품을 학생용 라이센스로 무료로 이용하는 법 (2) | 2013.05.03 |
---|