PDI/DreamWorks 의 라이팅 시스템 Light 에 대해 fxguide에서 쓴 글을 번역했습니다.
원문은 아래 링크의 중하단에서 보실 수 있습니다. (3가지 소주제 중에서 마지막 부분임)
Original source :
http://www.fxguide.com/featured/sci-tech-oscars-technical-coolness/
PDI/DreamWorks Animation 의 Light 시스템은 올 CG 장편 애니메이션 'Antz' 를 위해서 1996년에 개발되었습니다. 그 이후 이 툴은 크게 변화 없이 인터렉티브 라이팅과 최종 퀄리티의 인터렉티브 렌더 프리뷰 및 강력한 사용자설정 스프레드시트 인터페이스를 제공하며 수 많은 영화와 프로젝트에 사용되고 있습니다. Lawrence Kesteloot, Drew Olbrich 와 Daniel Wexler 씨가 SciTech Awards 에서 이 Light의 개발에 대해 기술적 성취상을 받게 됩니다. fxguide에서 Wexler씨와 얘기를 나눴습니다.
스프레드 시트
Light 의 이면에는 두 개의 핵심 요소가 있습니다 - 딥 렌더링 시스템(추후 설명)과 수 천개의 오브젝트를 가진 복잡한 설정을 조절하기 위해 사용되는 스프레드 시트입니다. Wexler씨는 "CG영화 제작에 있어서 매년 씬들이 더욱 기하급수적으로 복잡해 가고 있다는 걸 알고있습니다. 조명의 갯수나 캐릭터의 수, 그리고 소품들이 놀라울 정도로 늘어가죠"
A screen snapshot of Light as used on Shrek.
Wexler씨는 오브젝트들을 한 번에 다루는 CG라이팅의 일반적인 방법을 제안했는데 비현실적인 접근법일 수 있습니다. "감독이 얘기하죠. '이봐, 씬에 있는 모든 조명을 20퍼센트 정도 어둡게 할 수 있나?' 이런건 매우 흔한 요구사항입니다. 다른 툴에서는 씬에 있는 모든 조명들을 선택해서 밝기를 조절해야 합니다. 반면 스프레드시트에서는 단지 광원들을 선택 합니다 - 각 광원은 스프레드 시트에서 행(row)에 위치하며 열(column)은 밝기입니다. 그리고 한 번에 모두 선택하여서 한 번의 입력으로 20퍼센트를 어둡게 할 수 있습니다. 모든 사람들이 스프레드시트에는 어느정도 익숙하므로 아티스트들에게 더욱 쉬운 방법이죠."
스프레드시트는 아티스트들로 하여금 많은 셀들을 선택해서 대량으로 변경시킬 수 있도록 해 줍니다 (예를 들면 두 배의 값을 원한다면 *2 라고 입력하거나 인터렉티브 슬라이더를 사용합니다). Wexler씨가 말하는 또 다른 사례로는 "세트 위에 조명들이 설치된 조명리그가 있을 경우 세트 위의 한 위치로 이들 조명의 방향을 한 번에 지정할 수 있습니다. 그러면 모든 조명들에 대해 단일 위치를 가리키도록 계산을 하게 되죠."
딥 렌더링
Light 가 개발되었을 당시에는 영화 수준의 이미지들이 '인터렉티브'한 라이팅이 가능하도록 짧은 시간에 렌더링 할 수 있는 방법이 없었습니다. 그래서 팀은 지연(defered)렌더링 시스템으로 시선을 돌렸습니다 (아이러니하게도 Wexler씨가 제안한 것들이 현재 GPU를 사용하는 실시간 게임에서 사용되고 있습니다). 그 효과는 스프레드 시트의 개발과 마찬가지로 라이터의 시간을 절약했습니다.
"우린 조명들의 특징들을 결정하지도 않고 어떤 오브젝트가 보이게 될 지 알지도 못한 채로
한 프레임 동안 보이는 오브젝트들에 대해 연산을 합니다. 이 정보는 딥프레임버퍼에 저장이 되고, 그런 다음 두 번째 패스에서는 단지 씬 내에서 보이는 오브젝트들만 셰이딩 합니다. 이 지연된 렌더링 기법은 그 성능에 있어서는, 이미지 내의 픽셀들의 갯수에 대해 대략적인 일부분을 보여주는 장점을 가졌습니다. 씬 내의 모든 오브젝트에 대해 조명을 주고 렌더링을 하는 시스템과는 반대로, 씬 내의 오브젝트 갯수에 대해 더 부분적입니다."
이 딥 렌더링 시스템은 결국 빠른 인터렉티브 라이팅과 하이퀄리티 최종 렌더링 모두에 사용됩니다. 사실, 최종 배치 렌더는 캐싱된 중간단계의 레스터화된 데이터를 이용해서 딥 파일을 생성하는데 이는 픽셀들이 그냥 색상 뿐 아니라 더 많은 데이터를 갖고 있기 때문입니다. "각 픽셀들이 단지 씬내의 보이는 지오메트리들만 저장하기 때문에, JPEG파일 보다 더 정교하며, 각 픽셀에 단일 색상을 갖는 대신 해당 픽셀에 대해 보이는 지오메트리를 위한 트리구조를 갖는 이미지를 얻게 됩니다. 그래서 각 픽셀마다 그 픽셀에 대해 여러분이 볼 수 있는 가시(visible)성 지오메트리를 저장한 트리구조를 가지게 됩니다."
라이팅 시스템 내에서 다양한 래스터라이저가 씬 데이터베이스로부터 이들 딥 파일을 생성합니다. 빠른 래스터화를 위해서는 Z버퍼가, 고품질을 위해서는 A버퍼가, 반사 및 굴절을 위해서는 레이트레이서가 사용됩니다. 이들 딥 파일들은 인터렉티브 라이팅 툴에서 로드하거나 커맨드라인 셰이딩 시스템으로 넘겨집니다.
fxguide팀은 최근에 PDI 공동설립자인 Richard Chuang 씨와 Carl Rosendahl 씨와 이 획기적인 시각효과 및 애니메이션 스튜디오의 형성과 작업에 대해 얘기를 나눴습니다.
Wexler씨에 따르면 "일반적인 렌더러에서는, 라이트 셰이더와 재질 셰이더, 그리고 약간의 덜 중요한 것들을 가집니다. 일반적으로 렌더맨과 같은 렌더러에서는 텍스쳐 맵핑을 하려고 한다면, 재질 셰이더를 수정하고 일종의 기능적 검색 - 이미지를 읽어오거나 프로시저럴 방식으로 생성하는 - 을 수행합니다. 이들 기능들을 위한 입력은 일반적으로 표면의 위치이며 해당 표면의 지점에 단일 색상의 아웃풋을 만들어 내게 됩니다. - 여러분의 이미지에서 2차원 변수값을 탐색한 다음 그 지점에 대해 해당 이미지에서 색상을 찾아내거나 혹은 수학적 공식을 작성할 수 있습니다."
"우린 근본적으로 이 과정을 개별적인 셰이더 계층으로 분할했는데 우린 이걸 '텍스쳐 맵 셰이더'라고 부릅니다. 이 셰이더들은 좌표공간을 정의하는 입력값을 받아서 개별적 색상이나 비색상 값들을 산출해 냅니다. 이는 수학적 함수인데 - 부동 소수점 인수들의 세트를 가지고 부동 소수점 인수들의 벡터를 최종적으로 산출합니다. 그런 다음 이들을 복잡한 트리들로 엮을 수 있는데 - 예를 들자면 단순히 두 값을 서로 곱해서 결과를 산출하는 텍스쳐 맵 셰이더를 만들 수 있습니다. 이는 전체적으로 일반적인 렌더러에서 갖는 것 보다 더 적은 셰이더를 가능하게 하는 약간은 다른 모듈화된 breakdown을 제공합니다. 만약 다른 대부분의 시스템 처럼 재질 셰이더만 가지고 있다면, 다른 변수들의 개별 조합을 위해서 서로 다른 재질을 만들어야만 합니다. 반면 우리는 함수 블럭을 만든 다음 이들을 서로 다른 방법으로 다시 붙여주기만 하면 됩니다."
계속된 개선들
Shrek. Image copyright © 2001 DreamWorks Animation. All rights reserved.
시간이 지나면서 Light는 미니팜에서 패러럴로 리모트 인터렉티브 셰이딩을 하거나 슈렉을 제작하는 동안 개발된 섭-서페이스 스캐터링 시스템이나 글로벌 일루미네이션 애드온들과 같은 다른 시스템과도 상호작용 할 수 있도록 개조되었습니다. (하지만) 초기 PDI 에서 개발된 파일, 파이프 및 프로그램들의 리눅스 기반 시스템의 기초를 이루는 핵심은 여전히 유지되고 있습니다.
Wexler씨가 덧붙입니다. "지난 16년간 Light 의 발전을 되돌아보면 정말 놀랍습니다. 우린 드림웍스를 나온지 상당히 많은 시간이 지났지만 우리가 만든 라이팅 툴이 현재의 형태로 작동하고 있는 것을 보고 우리가 고안했을 때와 얼마나 닮았는지에 놀랐습니다. 몇 가지 세련된 기술들이 추가되었지만 툴 자체는 여전히 알아볼 수 있으니까요."