2018년 10월 2일 화요일

[2012. 1. 30] [CGI] 3D 캐릭터 / 애니 제작 프로세스에 대하여 (About the production pipeline of 3D Character / Animation)

[서문]
이러한 제작 파이프라인이란게 의외로 대단히 중요합니다. 가장 효율적이면서 가장 고퀄리티의 캐릭터를 만들어내기 위해 최근 몇 십년간 발전되어 CG 기술이 적용되어 파이프라인이 구성된 것입니다. 제가 여기서 다루는 방식만이 사용되거나 가장 좋은 방식인 것은 아닙니다. 그리고 앞으로 더 좋은 방식과 기술이 도입되어 발전되어 가겠지요.

여기에 간단히 최근 주로 사용되는 3D캐릭터 제작 방식을 적어 보려 합니다...
이전에 사용되던 방식들도 잠깐 살펴 보고요... 이젠 역사속에 묻힌 것도 있겠지만, 그것들이 모여서 지금의 방식이 이루어진 거니까요...
물론 이 방법만이 있는 것은 아닙니다만, 여러가지로 보았을 때, 시기마다 가장 많이 사용되는 프로세스 방식은 있어왔으니까요...
우선 전체적인 흐름은 다음과 같겠죠...
Modeling ---> Animating ---> Light&Shading ---> Rendering ------> 후반 작업
과거에는 하나의 툴에서 rendering 까지 하는 경우가 많았고요...
호환성 문제도 있고 해서 주로 모델링 과 텍스쳐 제작하는 정도가 다른 툴에서 했었고요... 렌더링은 물론 외부 렌더러를 사용하게 되는 경우엔 다른 툴에서 하게 되죠... 특히 렌더맨 같이 렌더링 전문 소프트웨어도 있고요...(렌더맨은 상당히 재밌는 것이 있어서 이 후에 이야기 해 보려 합니다.)
모델링을 우선 보자면 (모델링이 결국 애니메이팅, 텍스쳐링과 연관되게끔 되어 있습니다만)
캐릭터애니메이션의 경우, 처음엔 물론 폴리곤이 많이 사용되었고요... 옛날 이야기다 보니 컴퓨터 성능도 지금과는 비교할 수 없게 느리고 해서 캐릭터도 딱딱하게 생긴 것들이었죠...
폴리곤의 최대 특징인 UV정점을 이런 저런 프로젝션으로 투영해서 설정할 수는 있었지만, 지금 처럼 맘대로 편집할 수는 없었습니다...
이 후에 넙스가 나왔는데 이것은 곡면을 적은 점으로 표현할 수 있어서 view 상에서 폴리곤과 비교할 수 없이 깔끔했습니다... 그리고 렌더링 시에 테셀레이션을 줘서 디스플레이스먼트 맵이니 적용하기에 훨씬 유리하고요... 지금도 그렇지만, 테셀레이션에 있어서 Quad(사각)를 유지하는게 중요한데 넙스는 무조건 사각이죠...
사각 즉, UV에 절대 종속되는 넙스이다 보니 극이란게 생기는데 예로 넙스 sphere를 보시면 위도와 경도 처럼 UV가 있고, 극이 위 아래로 생기게 됩니다...
특히 텍스쳐제작에 있어서 극 부분이 문제가 되기에 이 부분을 잘 숨겨야 되고요... 정수리에 두는 방법이 있었습니다... 목쪽은 문제가 되지 않겠죠... 다만 입이 구멍을 내기가 좀 힘든데, 물론 트림을 쓸 수도 있지만, 좀 더 디테일을 위해서 거의 사용되지 않고 접어 넣는 방법으로 많이 했습니다...
제레미 번 이라고 유명하신 캐릭터 애니메이션 하는 분의 튜토리얼이 유명했던게 생각나네요... 이 분도 포토리얼의 선구적인 분이죠... 사진 스캔을 맵소스로 많이 사용하던 분이죠...
(와~~~ 홈페이지가 아직도 있네요 ^^ : http://www.3drender.com/jbirn/index.html )
이 분처럼 스캔된 사진등 원래의 이미지를 맵으로 활용하려면 UV가 생성하는 방향과 위치가 맵과 어느정도 일치되어야 하므로 최대한 사람 얼굴에 가까운 정수리를 극으로 하는 넙스 모델링이 사용된 것입니다...
이 방법은 입의 움직임등 애니메이션에 불편함이 있습니다... 물론 제레미번 님의 애니를 보면 그렇지도 않아 보이지만 ^^;
더 편한 방법이 입부분을 극으로 하고 목쪽으로 빼는 방법이죠... 애니메이션에 아무래도 유리합니다...
다만 맵은 전혀 사람의 형상과는 전혀 상관없게 되어 버리죠... 포토리얼하지 않은 모델링시에 아무래도 유리합니다...
또 나중엔 넙스 서피스를 붙여주는 기능도 마야에 나왔는데, 빙고같은 캐릭터가 그렇게 제작되었고요... 일종의 위의 두 방식을 합한 듯한 방법이었습니다...
3D스캔받은 데이터는 지금도 그렇지만, 상당히 데이터가 크죠... 당시는 이걸 애니메이션등에 활용하는 건 거의 불가능이라 깔아놓고, 넙스서피스의 CV를 움직여서 스캔받은 폴리곤에 잘 겹쳐지게해서 폴리곤 -> 넙스로의 일종의 컨버팅이죠... 그렇게 해서 넙스모델로 바꿔 사용하기도 했죠...
이 후 제 기억으론 픽사가 첨 개발했던 것은 아닌것 같은데, 적극활용했던 Subdivision Surface가 나왔습니다... 사용하기에는 넙스와 폴리곤의 중간같은 것이 폴리곤 처럼 유연한 면이 있어서 전 폴리곤의 다른 형태로 느꼈습니다만, 내부적으로는 폴리곤과 좀 다르게 구현되기에 구분해서
모델링은 폴리곤-넙스-서브디비젼서피스 세 가지로 크게 나누게 되었죠... 이 후 지금까지도요...
픽사의 제리의 게임(할아버지가 체스 두는거)에서 사용되었고요... 이것도 결국은 테셀레이션이라는 것 때문에 유행하게 되었습니다...
대략 지금의 기준으로 종합해서 보면, 모델링의 편리성을 위한 다양한 툴기능은 계속 나왔고 나오고 있고 지금은 어느정도 완성되어 있다고 보이고요... 그러기에 테셀레이션에 많은 비중을 보이곤 했는데, 모델링에서 표현하기 힘든 부분을 디스플레이스먼트 맵(노멀맵도 이 후에 나왔고요)등으로 표현해야 하는데 이를 위해서는 적절하게 테셀레이트되어야 하는 것이 중요합니다...
폴리곤-넙스-섭브디비전서피스 등 모두 결이란게 있어서 이게 테셀레이션이 적용되어 면이 쪼개지더라도 계속 남아있게 됩니다... 그래서 사각의 유지란게 그렇게 중요한 것이고요...
폴리곤-넙스-서브디비전서피스 등 모두 사각으로되면 동일하다는 점도 중요합니다... 서로의 전환 등에 있어서요... 특히 서브디비전서피스는 폴리곤에서 기반되서 전환되는 것이어서 더욱 그렇죠...
이렇듯이 디스픞레이스먼트(노멀맵) 맵이 디테일에 있어서 중요한데, 이를 위해서 많은 발전이 있었고요...
어찌보면, 디스플레이스먼트(노멀맵) + 애니메이터블 을 가장 잘 살리는 방향으로 개발되어 왔다고 볼 수 있겠습니다...
또 다른 쪽으로 마야 아티산처럼 브러쉬기반의 모델링이 나왔다는게 중요할 것 같은데요... 마야에서는 그다지 많이 사용되지는 않는 것 같지만, 지브러쉬와 머드박스 등이 있기에 더더욱...
지브러쉬, 머드박스 등으로 발전되어 나왔다는 것이 중요하겠죠...
위에서 말한 디스플레이스먼트(노멀맵) + 애니메이터블 : 결국은 애니메이팅 할 땐 최대한 간단한 모델을 가지고 하고, 렌더링할 때는 디테일한 것
이를 위해서 가장 쉽게 사용되는 것이 렌더링될 디테일한 모델 이외에 간단하게 더미를 조인트 등에 붙여서 이걸 보고 애니메이팅하고 렌더링 할 때는 디테일 모델로 렌더링레이어에서 보이게 해서 렌더링 하는 등의 방법이 있고요... 많은 메이킹 영상들 보면 나오죠... 토이스토리1 에서도 그렇고...
결국은 같은 방법인데, 프록시모델을 사용하는 방법이 있습니다... 지금은 마야에도 기본으로 있는 걸로 압니다.. 전에 플러그인, 스크립트 형식이라 그것을 사용했었는데...
기본 base 폴리곤 모델이 있고 여기에 서로 내부적으로 연결된(히스토리 연결 같은...) 기본모델을 smooth(maya의 폴리곤 기능 중)를 준 디테일 모델이 있습니다..
기본 모델을 정점을 수정,변형하거나 하면, 연결되어 있기에 디테일 모델도 이에 따르게 되어 있죠...
이 기본 모델로 UV편집, 애니메이팅 등을 작업하고, 디테일 모델로 렌더링하는...
서브디비전서피스 모델링과 크게 다를바가 없습니다만, 어쨌거나 폴리곤이라 유연한 면이 있습니다...
이렇게 현재는 넙스로 유기체를 모델링하는 방법은 거의 사라지게 되었고요...
서브디비전서피스는 계속 사용되는데, 정확하게 이것이라고는 할 수 없으나 지브러쉬와의 연계 등과 연관 됩니다....
골룸과 같은 수준의 초디테일 캐릭터가 나올 수 있었던 건 ZBrush의 힘이 컸다고 생각됩니다...
[이제 본문 시작이네요 ^^;]
이제부터가 실제 본론 일 수 있겠습니다만...
위에서 장황하게 얘기한 것은 결국엔 그러한 발전의 결과가 ZBrush 같은 툴로 집결되었다고 생각되기 때문입니다...
Zbrush같은 툴에 대해서 잠깐 얘기를 해 보자면, 이 툴은 물론 2.5D라고 하고, 자체적으로 3D까지 활용한 일종의 페인팅 툴을 표방하고 있습니다... 그러나 그 강력함으로 인해서 캐릭터의 페인팅과 디스플레이스먼트, 노멀, 범프맵을 여기서 제작하는 경우가 많습니다...
3D 페인팅 즉 3D오브젝트 상에 페인팅을 직접하면서 텍스쳐를 제작할 수 있는 것은 body paint와 같은 기존툴에서도 얼마든지 찾아 볼 수 있었습니다만...
Zbrush가 첨 나왔을 때, 페인팅기능도 훨씬 발전되기도 했지만, 가장 뛰어났던 것은 엄청나게 빠른 3D화면을 제공해서, 기존 3D CG에서 범프맵이라거나 디스플레이스먼트, 노멀맵같은 맵상에서나 디테일을 표현을 주어서 렌더링시에나 효과를 볼 수 있던 것들을 즉, 이것들은 어떻게 효과가 나올 것이라는 것을 예상하고서 2D 드로윙이나 포토샵등의 편집으로만 제작을 했던 것들인데, 3D오브젝트로 그것들을 직접(Sculpting이라는 표현을 쓰는데 조각한다라는...) 브러쉬를 가지고 3D상에서 실시간으로 보아가면서 작업을 한다는, 이전에는 생각하기 힘들었던 것이 가능해 졌다는 것입니다...
게다가 그러면서도 지브러쉬의 가격은 정말 싸다고 생각됩니다...^^
그렇게 직접 디테일을 표현한 이후 디스플레이스, 노멀맵으로 뽑아낸다는 것이죠... (범프맵의 경우는 극도의 디테일은 렌더링시에 디스플레이스먼트로 표현하기엔 폴리곤을 극도로 테셀레이션 해야 하기 때문에 무리가 가고, 또 실제로 렌더링된 이미지 상에서 그렇게 극도의 표현은 범프와 별로 차이가 없기에 ...
예를 들면, 7단계의 디바이드(테셀레이션)를 가지고 지브러쉬에서 작업한 것이 있다면, 마야 등에서 렌더링시에 5단계까지는 디스플레이스먼트로 표현하고, 5~7단계는 범프맵으로 뽑아서 표현하는 식의 방법을 쓸 수 있습니다...
최근 컴퓨터 성능이 좋아져서 전부 디스플레이스로 표현할 수도 있지만, 선택의 문제겠고요...
게임등과 같이 리얼타임 렌더링의 표현이 필요한 경우는 노멀맵이 쓰이고요.. 간단한 디스플레이스먼트 맵도 쓰이긴 합니다만...
어쨌거나 Zbrush와 같은 툴이 나오면서 획기적으로 바뀐것 중 주목할 부분이 디스플레이스/노멀맵을 실제 오브젝트에다 조각해서 제작할 수 있다는 사실입니다...
이것이 가능해진 이 후의 작품들을 보면, 그 이전에도 사람과 같은 경우 극도의 리얼을 보이긴 했지만, 요즘 작품들을 보면, 정말 골룸도 한 물가 보이도록 디테일이 살아있고 실제 조각한 듯 세밀함까지 표현한 작품들이 넘쳐나게 되었습니다... ZBrushCentral 가보면 *.* 놀랍죠...
Zbrush를 배워보면, 포토샵 등에서 맵소스 제작할 때에 비교해서, 엄청나게 퀄리티를 올릴 수 있고, 저렇게 정교한 모델도 만들 수 있는 방법을 알게되지만, 실제 해보면 엄청난 집중력과 디테일을 표현하기 위한 노력이 수반되야 함을 느끼게 됩니다...
잘 만든 조각작품보면, 어떻게 만드는지는 알지만, 실제로 내가 그렇게 잘 만들지는 못하는 것과 비슷한 상황이랄까요 ㅎㅎ
3DCG에서 기술적인 부분보다 미술적인 양감이라거나 깊은 관찰을 통한 세밀한 표현등이 더 많이 요구되어짐을 느낍니다...
그래서 최근 많이 사용되는 캐릭터 제작 프로세스를 요약해 보면
Maya(아무 3D package 로 보시면 됩니다.) - UV tool (주로 마야나 Zbrush에서 작업되지만 최근엔 UV Layout같은 전문툴) - Zbrush(mudbox) - Maya (animating) - Maya (Shading & Lighting) - Rendering (renderer)
중간 중간은 아티스트에 따라 약간씩 달라질 수 있지만, 전체적인 흐름은 위와 같이 정리될 수 있을 것 같습니다. 특히 특정툴은 제가 쓰는 걸 따라서 그냥 써놨는데요... Maya대신 맥스도 될 수 있고 3D패키지 어떤것도 마찬가지라고 할 수 있겠죠... 지브러쉬는 머드박스로 대체할 수도 있겠고요...
기본 모델링을 Maya 등의 3D패키지에서 작업합니다... 이는 순전히 아티스트의 익숙도에 따라 달라질 수 있는데요... 지브러쉬 등이 편한 분은 지브러쉬의 지스피어, 지스케치 등에셔 시작할 수 도 있고요... 이것은 이러한 프로세스를 유지하기 위해 꼭 지켜야만 하는 규율 몇 가지를 자동적으로 해결 할 수도 있습니다...
우선 그 규율중 가장 큰 것은 사각폴리곤을 되도록 유지하고 모델링 해야 한다는 것입니다... 로우폴리와 하이폴리사이의 결 문제도 있고요... 또한 렌더링 시에 예를 들면, 멘탈레이렌더러 같은 것을 사용시에 Approximation Editor를 사용해서 테셀레이션을 하게 되면, 멘탈레이는 이 폴리곤을 일종의 서브디비전서피스처럼 전환하고 쪼갭니다...
폴리곤이 서브디비전서피스로 전환될 수 없는 경우가 있습니다... 마야 매뉴얼에도 나오니깐 봐주시고요... 폴리곤 툴에서 cleanup > nonmanifold 옵션 체크해서 보면, 폴리곤에 문제가 있을 시에 해당 face나 정점등이 해결되서 나타나긴 하는데, 마야는 이들 face나 정점을 그냥 디테치 한다고 할까요... 나눠 버려서 이걸로 해결할 수는 없고 이렇게 확인해서 문제가 있으면, undo 로 되돌려서 해당 부분 해결하고서 지브러쉬로 넘기게 됩니다... (일종의 중요한 팁입니다.. ^^)
이렇게 잘 정리된 기본모델을 마야건 지브러쉬건 어디서건 제작합니다... obj 라는 형식이 가장 호환모델로 많이 사용되죠... obj폴리곤 메쉬로 여기저기 마야, 소프트이마지, 맥스, 지브러쉬, 머드박스 등등 어디로건 왔다갔다 하면서 작업할 수도 있습니다만... 아티스트가 가장 편한데로 하면 됩니다...
이렇게 기본모델이 완성되면 UV를 잘 정리해야 되겠죠...
이는 텍스쳐와 관련될 뿐만 아니라 하이폴리곤으로 쪼개지는 과정에도 깊이 관련됩니다... (이 부분이 의외로 작업하다 보면 중요해 지는 경우가 있습니다... Zbrush등에서는 별문제가 없었는데 마야에서 문제가 되는 경우도 있습니다... UV 정점이 붙어있지 않고 조각조각 나있는 경우도 있고 한데, 이렇게 되면 테셀레이션 주고 디스플레이스를 주었을때 uv가 서로 붙어있지 않음으로 인해서 결과물의 페이스가 나눠진 상태로 튀어나오기도 하고요... 또 Zbrush에선 폴리곤이 쪼개지면서 에지가 부드럽게 표현되던게 마야에서는 이상하게 표현되기도 합니다...
어쨌거나 마야도 그렇고 Zbrush의 UV Master등도 좋고요... UV Master 로 사람 캐릭터 같은 UV하기 편하더군요...
다음은 UV 편집후에 체크무늬 텍스쳐로 시험해 보는 이유를 말씀드리죠... 이걸 왜 하는지 잘 이해하지 못하고서 해보시는 분들이 꽤 많더라고요... ^^;
UV라는 것이 결국은 텍스쳐라는 사각형 안에 위치를 정해주는 것이죠... 이렇게 봤을때, UV의 편집에 따라서 그 한정된 텍스쳐 사각형의 공간에 대한 사용이 달라지게 됩니다...
실제 오브젝트와 UV 정점이 형상 배열 위치 등이 다른 경우가 다반사죠...
예를 들어 실제 오브젝트에서 몸통이 손가락에 비해 훨씬 큰데 UV 상에서는 손부분은 크게 차지하고 몸통부분은 작게 표현되는 경우에 사각텍스쳐라는 한정된 공간이 비효율적으로 될 것입니다... 만일 텍스쳐가 16K 20K(실제로 이렇게 크게 사용하지는 않기에 말하는 것이지만 ^^;) 같이 엄청나게 크고 디테일하면, UV상에서 작은 부분도 충분히 디테일하게 나오겠지만, 텍스쳐라는 것이 한계가 있고, 특히 리얼타임 렌더링을 요구하는 게임의 경우는 더하죠...
그러기에 한정된 UV텍스쳐 공간을 최대한 효율적으로 사용해야 하고 UV가 흘러가는데에 따라서 텍스쳐도 입혀지기 때문에 그러한 것도 중요하고요... 이러한 것을 체크무늬에 번호가 쓰여진 텍스쳐를 입혀서 UV텍스쳐의 공간효율, 흐름, 위치 등을 파악할 수 있는 것입니다...
그리고 오브젝트의 UV가 전체가 한덩어리인 경우면 좋지만 이렇게 되기는 쉽지 않은 경우가 많아서 여러덩어리로 나뉘어 져 있는 경우에 UV정점편집에 따라서 어느 부위는 크고 작고 한 경우에 이음새 부분이 크기 차이로 인해 두드러 질 수있는데 이러한 것도 체크무늬 텍스쳐를 통해 확인해 보고 UV편집을 통해 잡아 줄 수 있겠죠...
이렇게 적절한(서브디비전 전환이 가능한 폴리곤) 폴리곤메쉬로 모델링하고, 적절하게 UV의 정렬까지 마친 캐릭터 폴리곤 메쉬를 얻게 되었습니다...
이제는 쉐이딩 텍스쳐링을 주게 되는데, 이 디테일링작업은 Zbrush 나 Mudbox 같은 툴을 통해서 주로 이루어집니다...
지브러쉬는 이쪽분야에 워낙 알려진 툴이기에 특별히 드릴 말씀이 없고요, Mudbox는 Maya와 같은 업체인 Autodesk에서 제작된 툴로서 최근에는 마치 Adobe의 Creative suit 시리즈의 소프트웨어 묶음판매식으로 autodesk maya entertainment creation suite premium 에 mudbox도 포함되어 있습니다.
autodesk entertainment creation suite premium 2012 의 경우
- Autodesk® 3ds Max® or Autodesk® Maya®
- Autodesk® Softimage® 
- Autodesk® MotionBuilder®
- Autodesk® Mudbox™
이렇게 포함되어 있습니다... Maya 자체는 Composite 랑 Matchmover도 포함되어 있죠...
소프트이마쥬 는 소프트이미지가 된 이후 (일종의 Joke입니다... ㅎㅎ 몬트리얼퀘벡에 본사를 둔 소프트이미지사에서 제작되다가 미국회사인 Autodesk로 넘어갔지요... 퀘벡은 프랑스어를 사용하기에 당시 소프트이마쥐 비슷한 발음으로 불리곤 했죠...) 마야/맥스와는 좀 다른쪽으로 발전방향이 잡힌 것인지 왜 저렇게 포함소프트웨어가 되었는지 모르겠네요... 한 때를 풍미하던 최고의 3D 모델링 애니메이션 툴이었는데...
어쨌거나 이렇게 패키지에 포함된 mudbox이다 보니 제가 사용하지 않는 툴이라 잘은 모르겠습니다만... 데이터 호환 등에 있어서 유리한 점이 있지 않을까 생각됩니다만...
다시 지브러쉬에 대해서 말씀드리자면, 마야 등에서 제작된 3D 모델에 디테일을 주기위해서 만들어진 툴은 아닙니다. 기본적으로는 2.5D 툴이라고 해서 디지털아티스트들에게 3D 기능을 포함해서 디지털페인팅을 가능케 하기 위해 나온 툴이라고 하는 것이 맞겠죠... 그러다 보니 뛰어난 디테일 작업 기능으로 인해서 그 기능을 살려서 마야에서 데이터를 지브러쉬로 넘기고 거기에서 디테일 주고 다시 마야로 모델 + 맵소스들 을 넘겨 받아 애니메이팅하고 라이팅,렌더링을 하는 파이프라인 프로세스로 이어지게된 것입니다.
디테일 작업을 통하여 아래그림과 같은 수준의 작품이 가능해 졌고요...








골룸을 비롯 아바타 등 최신 영화에서 활약하는 캐릭터들도 많이 제작 되었죠..
처음에는 오히려 유기체 모델링에 좋은 툴이었는데 현재의 버전은 기계모델링 등 전반적으로 뛰어납니다..
Zbrush의 툴기능에 대해서는 여기서 설명할 수는 없겠고,
www.pixologic.com 또는 www.zbrushcentral.com 등에서 많은 것을 보실 수 있을 것이구요..
이미 Zbrush에 대해선 다들 알고 계시리라 생각되지만요... ^^
이렇게 폴리곤메쉬 디테일 툴에서 디테일 작업을 하고요... 이를 다시 마야로 보내는데, 둘 사이의 연계를 위한 세팅이 좀 필요합니다... 마야와 Zbrush사이에 좀 차이가 있어서 디스플레이스먼트 강도값이라거나 맵의 V방향의 차이라거나 등등... 최근엔 GoZ 라는 플러그인이 제공되서 이런저런 세팅이 자동으로 됩니다만... 마야의 멘탈레이렌더러 사용을 위해, 위에서 언급한 폴리곤->서브디비전 Surface 전환이 가능케 되어야 하고요...
Zbrush에서 만들어진 맵이 그냥 사용될 수도 있지만, 마야에서 더 높은 퀄리티를 구현하기 위해서 마야의 렌더러와 라이팅 등에 맞게 다양한 맵(Diffuse/Ambient/Specualar/translucence 부터해서 SSS 등 다양한 맵이 적용가능하죠) 소스를 Zbrush에서 뽑아낸 맵을 기본으로 해서 포토샵등에서 제작해 냅니다...
이 후 마야에서 애니메이팅하고 FX도 제작하고 등등 그리고 라이팅도 완료하고요...
사실 상 애니메이션의 퀄리티에 가장 중요하게 연관되는 것 중의 하나가 바로 라이팅입니다...
예로 아무것도 없는 씬에 구랑 박스만 뽑아놓고 GI FG와 쉐도우만 잘 준 씬을 보면, 아주 아름답습니다...
메이저 프로덕션의 애니메이션을 보더라도 그렇습니다... 간단한 모델이더라도 라이팅과 씬 분위기를 잘 살려서 높은 퀄리티의 장면을 생산해내죠...
이를 위해서 중요한 것의 하나가 렌더링일 것입니다...
마야에서는 퀄리티 렌더러로 멘탈레이가 많이 쓰입니다...
렌더링과 렌더러에 대해서는 워낙의 한 분야라고 할 만큼 많은 것들이 있기에 여기서 말씀을 드릴 것은 없고요...
다만 렌더맨의 재밌는 점만 하나 얘기해 보려 합니다.. (기본적인 프로그래밍 지식은 있으셔야 이해하실 수 있을 것입니다만...)
저도 렌더맨을 사용하고 있지는 않습니다... 다만 전에 잠깐 공부해 본 적은 있습니다만.. 깊이 못 해봤습니다.
다만 그 개념이 정말 뛰어나기도 하고 재밌더라고요... 기존에 제가 알고 있던 체계를 바꿔놓았죠...
렌더맨이 개발, 발전되는 과정이 3DCG의 발전 자체와 관련이 있다 보니, 3DCG를 구현하는 프로그래밍이라는 부분이 강하게 나타납니다..
렌더맨이 유연하다는 것도 또한 그렇고요...
렌더맨에서는 렌더링 과정을 프로그래밍의 컴파일과정으로 생각합니다...
또한, 모델링과 애니메이팅 라이팅 등의 모든 과정은 프로그래밍의 코딩과정이라는 것입니다.
아티스트들을 위해서 인터페이스가 제공되고 그 위에서 아티스트들이 작업을 하지만 최종적으로 렌더러에게 넘기는 데이터는 결국 프로그래밍의 코드와 같다는 것이죠...
이는 마야도 다르지는 않은데, 마야의 ASCII (ma) 로 저장 후에 열어 보시면, 정말 일종의 프로그래밍 언어처럼 멜명령어로 만들어져 있죠...
이를 컴파일러인 렌더맨이 컴파일해서 최종적으로 이미지가 생산된다는 개념입니다...
이러한 과정에 있어서 각종 쉐이더 등이 연결될 수 있는데, 멘탈레이도 같은 개념이기에 멘탈레이 쉐이더라는 것들도 이전에 마야 외부에 있고, 지금도 커스텀 멘탈레이 쉐이더를 제작해서 렌더링 시에 연결할 수 있고요...
이러한 쉐이더라는 것은 프로그래밍에서 함수들, 또는 객체에 비할 수 있습니다...
즉, 마야 씬은 프로그래밍에 있어서 메인함수이고, 쉐이더들은 외부 함수로서 불러져서 렌더맨이라는 컴파일러로 컴파일하는 것이죠...
앞서 말씀 드렸듯이 멘탈레이도 마찬가지 개념입니다...
그러기에 유연하다고 말씀드린 것입니다...
유연하다는 것이 외부함수를 얼마든지 프로그래밍해서 다양한 효과를 만들어낼 수 있는 것이죠..
한 예로서 멘탈레이에 관련된 것인데요... 오래전 영화이긴 한데, 늑대인간이 나오는 영화가 있었습니다... 파리의 늑대인간(한국제목) 이었던 것 같습니다...
늑대인간의 털을 표현하기 위해서 멘탈레이 커스텀쉐이더를 제작했다고 했습니다... 소프트이마쥐에서 제작했던 것으로 기억하는데, 3D씬에서는 털이 없습니다만... 멘탈레이로 렌더링될 때, 오브젝트에 털이 붙어서 표현되고, 다이나믹도 계산되어서요... 하도록 외부 커스텀 쉐이더를 제작해서 영화특수효과를 만들었죠...


물론 제 생각에는 이 털을 표현하기위한 커스텀쉐이더를 그냥 문서작업처럼 코딩했을 것 같진 않고요... 자체적인 인터페이스를 가진 인하우스툴을 제작하고 여기서 털의 표현을 만들고, 다이나믹도 주고 한 다음에 멘탈레이 커스텀 쉐이더로 저장하도록 했을 것 같습니다(마야에서 멘탈레이용 파일인 mi 파일로 저장하는 것 처럼...) 그러한 3D소프트웨어를 제작했겠죠...^^
다시 렌더맨으로 돌아와서, 비약적으로 말씀드리면, 재밌있게도 렌더맨이 이러한 개념이기 때문에, 마야 없이 워드패드로도 모델링,애니메이팅을 할 수 있습니다...
즉 워드패드에서 코딩을 해서 렌더맨, 또는 멘탈레이파일로 저장해서 렌더링할 수도 있다는 것이죠...
물론 이는 과장하고 비약해서 드리는 말씀입니다만... ^^
MEL 가지고 씬 제작하듯이 그러한 것이죠...
사실 이러한 개념은 많은 CG툴에 적용되고 있어서, 스크립트라는 기반이 그러한 것을 보여주는 부분이죠...
NUKE X 도 python 스크립트를 쓰더군요.. 마야 등도 그렇고요...
또 하나 중요한 것의 하나가, 영화용 등의 대용량,대규모의 씬에서는 렌더링시에 에러 등이 있기도 하다는 것입니다... 지금은 그나마, 시스템과 소프트웨어가 안정화 되었지만, 이전에는 훨씬 심했죠... 이런 경우에 rib(렌더맨 스크립트파일) , mi(멘탈레이 스크립트파일) 등을 열고서 코드를 분석해서 해결할 수도 있습니다...
더불어 재밌는 것이 지금은 렌더맨이 윈도우 시스템에서도 잘 돌아가고, 크랙도 나오고해서 없어졌는지도 모르겠습니다만...
마치 UNIX 시스템을 배워보고 싶은데, UNIX라는 고가의 장비를 구입할 수도 없고, 써볼수도 없어서 아예 자신이 Linux를 개발했다는 리누스토발즈의 경우와 마찬가지로, 블루문렌더러라는 것이 있었습니다...
rib 스크립트와 거의 같은 구문을 쓰고(코딩이 일치한다는 것이죠), 컴파일러(렌더러)를 윈도우 시스템 등에서 돌아가도록 만든 렌더러가 있었습니다...
SGI등의 고가 장비가 없어도 PC시스템에서 렌더맨을 배워보기에 충분했죠... 블루문 렌더러였나요...
정확히는 BMRT(BlueMoonRenderingTool)이군요...
위키피디아에서 찾아보니 아!!! 이것이 선구자가되서 NVIDIA의 Gelato가 나온 거네요... 오... 그렇군요.. 그냥 역사의 뒤안길로 사라진 것은 아니군요... ^^
이렇게 간단하게 캐릭터 제작 프로세스를 살펴봤는데요...
그 프로세스라는 것이 모델링, 애니메이팅은 최대한 가볍게 렌더링시에는 하이퀄리티를 지향하는 것이고 또한 유연해야 하는 것이 중요한 점이라서...
파일호환부터해서 UV의 편집이 용이하고 유연하다는 점으로 인해, 현재는 폴리곤-서브디비전서피스가 자리를 잡고 있다고 보입니다...
앞으로 만일 NURBs가 호환성이 높아지고 UV 정점이 마음대로 편집된다거나 유연하게 바뀌고 Zbrush같은 디테일툴에서 사용되고 호환된다면, 적은 CV정점으로 모델을 표현할 수 있다는 강력한 점으로 다시금 메이져로 자리잡을 수 있겠지만, 현재로 보기엔 쉽지 않아보이네요...
마야에서도 최근에 보면, 특정 게임용으로서 NURBs 약간의 정점 편집 기능 등을 제공하더군요... 하지만, 렌더러에서 지원이 안되고 특정게임에서만 쓸 수 있다는 아직은 호환성 유연성이 너무 부족하다고 보입니다...
그에 비해 컴퓨터 시스템은 점점 빨라지고, 용량도 커져서 지금의 폴리곤메쉬-서브디비전서피스로도 무리가 없을 것 같긴 합니다만...
NURBs 모델링은 기계부품 등 변형이 일어난다거나 텍스쳐가 복잡하게 제작되어야 하지 않는 경우 유리해서 아직도 많이 사용은 되고 있습니다만...
현재 많이 쓰이는 3D 캐릭터/애니 제작 프로세스는 이렇게 마무리를 짓겠습니다...
P.S. 위에 빠진 것이 있는데요...
Subdivision surface와 base-proxy 폴리곤모델에 있어 Subdivision surface는 마치 NURBs에 CV정점이나 hull 등에 weight를 주어서 주름같은 것이라거나 날카로운 각을 만들기 편한 점이 있다는 것이죠...
폴리곤에서 위와 같은 효과를 만들어내기 위해서는 edge를 많이 추가해야 하는 단점이 있습니다.    


댓글 없음:

댓글 쓰기