2015년 10월 1일

템플릿의 라이팅 업데이트!

저자: Wyeth Johnson

현재 4.9버전이 출시되었으므로, 여러분께서 템플릿 컨텐츠에서 느끼실 수 있는 몇 가지 업데이트에 관해서 말씀드리고자 합니다. 주된 변경 사항은 템플릿 속 태양의 밝기 값이 전반적으로 낮아졌고, 각 템플릿에 스카이라이트를 추가하여 하늘로부터 오는 산란광을 더 사실적으로 표현하고자 하였습니다. 이런 변경 사항들은 임의로 결정된 것이 아니라, “이게 어떤 색이죠?”와 같이 더 복잡한 질문들에 근거하고 있습니다. 그 해답은, 저희가 배웠듯, 여러분이 생각하시는 것 만큼 단순하지 않습니다.

랜더링에 관해 이야기를 할 때, 많은 용어들은 사진 분야에서 유래 되었습니다. 실존하는 오브젝트의 색을 재현하고 싶다면, 또는 찍은 사진을 피사체와 매치시키고 싶다면, 여기에 연관된 요소들이 수 없이 많이 있습니다. 오브젝트가 실제로 얼마나 밝고 어두운지와 오브젝트로 조사되는 빛의 세기 또한 중요하게 작용합니다. 그러므로 이러한 사항을 적용할 수 있어야 합니다. 저희는 또한 사진의 관점에서 어떤 노출 값을 다루고 있는지 이해해야 했습니다. 즉 얼마나 긴 시간동안 카메라 셔터가 열려 있는지, 얼마나 필름이 캡쳐된 이미지에 민감하게 반응하는지 기타 등등을 말합니다.

이 모든 변수들은 주어진 오브젝트의 실제 밝기를 알고 있는 것은 그냥 실제로 사진을 찍고 컬러를 샘플링하는 것 만큼 단순하지 않다는 것을 의미합니다. 주어진 어느 값이든 다른 값에 영향을 미치고, “사물의 색”을 위한 트루 베이스라인 마커는 만병치료약이 아닙니다. 실제 예제를 보도록 하죠. 농구공을 사진 찍었다고 하면,

제일 왼쪽 그림은 최적 노출 값을 갖도록 한 카메라가 찍은 것입니다. 중간에 있는 이미지는 같은 농구공이지만, 최적 노출 값이 -2 되었습니다. 그리고 제일 오른쪽에 있는 사진은 최적 노출 값에 +2 한 것입니다. 어느 색이 옳은 색일까요? 음, 진실은 각자 사진이 다 옳은 색을 표현하고 있다는 것이고, 동시에 어느 누구도 올바른 색을 표현하고 있는 것이 아닙니다. 만약 이미지를 만들어 낸 설정을 알 수 있다면(셔터 스피드와 필름의 민감도, 카메라 렌즈 구경) 이미지를 리버스 엔지니어링 해서 실제 어떤 색이었는지 알아낼 수는 있습니다. 문제는 기본값이 없다는 것이죠. 예를 들어, 평소보다 두 배는 밝은 조명 아래에서 보통 공보다 두 배는 어둡게 착색된 공을 찍었다고 하면 오브젝트의 실제 색을 찾았보았을 때 보통의 경우와 별로 차이가 나지 않을 것입니다. 즉, 모든 것은 상대적입니다. 우리에게 필요한 것은 다른 물체의 실제 색과 밝기(반사율로 알려짐)을 찾을 수 있도록 해 주는 보편적인 베이스라인입니다.

Ansel Adams가 (Fred Archer와 공동으로) 실제 오브젝트의 표준적 범위의 반사율을 체계화하고 이들을 열 한개의 칸에 넣어서 사진작가들이 이미지 편집할 때 계산을 할 수 있도록 하는 “Zone System”을 개발하였습니다.

zone system은 이번 포스팅의 주제에서 벗어나는 심도깊은 주제이지만, 그 연구에서의 근본적인 발견은 저희에게 있어 의미가 깊었습니다. 인공적인 오브젝트를 떠나, 자연의 거의 대부분은 두 개의 거칠고 정확한 값 사이에 있습니다. 숯검댕과 눈의 밝기이죠. 숯검댕은 입사광의 3퍼센트 정도를 관찰자에게 반사시켜 줍니다. 방금 내린 신선한 눈은 입사광의 95퍼센트를 반사합니다. 만약 이 값이 다양한 표면에서의 양극이라고 생각했다면, 저희는 이 값들의 “기하학적 평균값”을 얻어서 평균적으로 금속에서 반사하는 값을 얻을 수 있습니다. 그 수치는 18퍼센트이고, 회색으로 알려져 있습니다. 이 값이 우리가 사용하는 베이스라인입니다.

18퍼센트는 사진과 CG에서 표준이 되었고, 이미지 생성에 있어 베이스라인이 되었습니다. 기본적 아이디어는 완전히 18퍼센트 회색인 사진을 찍는다면, 오브젝트의 디퓨즈 값(구나 판자라고 하죠)와 노출값 계산과 화이트 밸런스를 계산해서 같은 씬 내의 다른 오브젝트들의 밝기를 알려진 양에 비교해 알 수 있게 됩니다.

이 모든 이론은 잘 정립되어 있고 좋지만, 이 베이스라인과 샘플 맵의 해 밝기를 줄이는 것이 무슨 상관이 있을까요? 설명을 위해 엔진으로 돌아가죠

먼저, 저희는 가상의 18퍼센트 회색인 구를 만들어야 했습니다. 사용 목적에 맞게 충분히“거칠고” 페인트 칠해진 실제 구와 흡사해야 합니다. 언리얼 엔진에서 얻은 것입니다.

다음 목표는 이 구에서 가장 밝은 부분의 색을 애셋의 실제 색을 반영하도록 설정하는 것입니다. 18퍼센트로 알려져 있죠(또는 0.18) 이렇게 설정하기 위해서, 저희는 빛이 있는 씬에서 디렉셔널 라이트를 구로 향하게 해서 태양을 시뮬레이션 하였습니다. 그리고 나서 애셋을 빛이 조사되는 방향에서 관찰하고 아까 그 구의 밝은 위치값이 0.18로 나올 때 까지 세기를 조절하였습니다. 저희는 이 설정 작업을 엔진 내장 기능이며 감마 코렉션 이전에 실제 오브젝트의 색을 보여 주고 “진짜” 컬러값을 찾아서 보여주기만 하는 것이 아닌, “Visualize HDR(눈 순응)”로 해결했습니다.

현재, 저희는 랜더링 팀과 이야기 하여 “진짜” 오브젝트 컬러(자연적 노출 컨디션에서) 기대한 라이트 밝기가 라이팅 알고리즘에서 생기는 부작용이면서 오프라인 랜더러나 언리얼같이 많은 고성능 랜더러에서 주로 갖는 값으로, 파이(pi) 값인 3.1415... 에 근접하다는 것을 알게 되었습니다. 이 결과는 그러나, 한 개의 광원에서 받는 것에서 얻은 결과일 뿐으로, 드문 상황이죠. 여러분은 공간에서 해당 물체가 볼 수 있는 모든 방향에서 빛이 들어온다고 봐야 합니다. 빛은 하늘에서 산란되고, 지상에서 반사되고, 떠 다니는 작은 입자들 사이에서 굴절됩니다. 이걸 시뮬레이팅 하기 위해, 저희는 그 후에 태양빛 세기를 반사광이 파이 값이 나오면서도 위에 설명한 것에 끼치는 값이 없어지도록 어느 정도 줄여야 했습니다.

저희의 목표가 완벽한 값을 찾는 것은 아니라는 것을 알려드릴 때가 되었군요. 완벽한 값 보다는 사용 가능한 직관적인 값(실제 조사로 찾은 노출의 정지 값, 예를 들어 ¼ 또는 ½)의 집합이 저희에게 더 흥미로운 이유가 몇 가지 있습니다. 그 이유 중 하나는 기억하기 쉬운 값으로 만드려는 것으로, 우리의 경우, 해의 밝기를 2.75로 하고 하늘의 밝기를 1로 하는 것을 말합니다. 여러분은 이걸 합치면 3.14가 나오지는 않는다는 것을 알 것입니다. 적절한 베이스라인 값에 대한 해석이 많이 있지만, 예를 들어 어떤 카메라 제조사는 그들의 노출 값을 내부적으로 0.18 베이스라인 반사광을 잡고, 어떤 회사는 0.16으로 캘리브레이션 하고 어떤 회사는 0.12로 잡습니다. 저희의 설정은 이런 모든 값 들의 평균치를 대표합니다. 또한 태양의 세기는 날씨와 시간대에 따라 달라질 수 있습니다.

정리하면, 모든 것은 상대적입니다. 저희는 새로운 값은 서로 다른 선택들 간에서 여러 다양한 축을 통틀어 실제로 구한 값에 가깝도록 하고 사람들이 실사같은 컨텐츠를 그들의 애셋으로부터 베이스라인을 이용하여 더 좋은 결과값으로 계산해 낼 수 있도록 하는 평균적인 좋은 값을 대변한다고 생각합니다.