Post Lists

2018년 11월 29일 목요일

Chapter 5 Visual Appearance (RTR)

Chapter 5 Visual Appearance
"좋은 사진은 선한 행위(? deed)와 같다 - Vincent Van Gogh

너가 3차원 모델의 이미지를 렌더링할 때, 그 모델들은 적절한 기하 도형을 가져야할 뿐만 아니라, 그들은 또한 바람직한 시각적 외관을 가져야 한다. 많은 경우에 (그러나 항상은 아니다 - Chapter 11을 보아라) 그 목적은 photorealism 이다 - 이것은 실제 오브젝트들의 사진과 매우 가까운 외관이다. 이 목적에 도달하기 위해, 우리의 guide로서 현실을 사용하는 것은 가치가 있다. 이 챕터는 처음에 light와 materials가 실 세계에서 행동하는 방식을 이야기 한다. 간단한 lighting과 surface model은 그러한 모델들이 프로그램 가능한 쉐이더들을 사용하여 어떻게 구현될 수 있는지에 대한 예제로서 사용된다.

챕터의 나머지는 렌더링된 모델들에 현실적인 외관을 주기위해 사용될 수 있는 부가적인 기법들을 소개한다. 이러한 것은 transparency(투명도), antialiasing, 그리고 compositing을 포함한다.

5.1 Visual Phenomena
그림 5.1에서와 같은 scene의 현실적인 렌더링을 수행할 때, 관련된 물리 현상을 이해하는 것이 도움이 된다. 이러한 것들은:

  • 빛은 태양 또는 다른 자원들 (자연적이거나 인공적인 것)들에 의해 방출된다.
  • 빛은 scene에서 오브젝트들과 상호작용한다; 일부는 흡수되고, 일부는 흩뿌려지고, 새로운 방향으로 전파된다.
  • 마지막으로, 빛은 sensor (인간의 눈, 전자 센서, 또는 필름)에 의해 흡수된다.
그림 5.1에서, 우리는 모든 세계의 현상들의 증거를 볼 수 있다. Light는 lamp로부터 발현되고, 방에 있는 오브젝트들에게 전파된다. 그 오브젝트 surfaces들은 어떤 것을 흡수하고, 어떤 것을 새로운 방향으로 흩뿌린다. 흡수되지 않은 그 빛은 계속해서 환경을 통해 이동하고, 다른 오브젝트들을 만나게 된다. scene을 통해 이동하는 빛의 아주 작은 부분은 이미지를 캡쳐하기위해 사용되는 sensor에 들어간다. 이 경우에 디지털 카메라의 전자 센서이다.

다음 섹션들에서, 우리는 이러한 현상들을 이야기할 것이고, 그것들이 렌더링 파이프라인과 이전 챕터의 GPU 쉐이더들을 사용하여 어떻게 그려질 수 있는지를 이야기할 것이다.

5.2 Light Sources
빛은 다양하게 기하학적 rays, electromagnetic waves, or photons (몇 가지 wave properties가 있는 quantum particles)로 모델링된다. 그것이 어떻게 다뤄지는 것과 상관없이, light는 electromagnetic radiant energy이다 - 공간을 통해 이동하는 electromagnetic energy 이다. Light sources는 빛을 흩뿌리거나 흡수하기보다는 light를 방출(emit)한다.

광원들은 렌더링 목적을 위해 많은 다른 방식들로 표현될 수 있다. 여기에서 우리는 간단한 light model을 이야기할 것이다 - 좀더 복잡하고 표현력있는  모델들은 Section 7.4와 챕터 8에서 이야기 된다. 태양처럼 극히 먼 거리의 광원들은 재현하기에 가장 간단하다; 그것들의 빛은 scene 전체에 같은 단일 방향으로 이동한다. 이 이유 때문에, 그것들은 directional lights라고 불려진다. 렌더링 목적을 위해, 그러한 광원의 방향성은 light vector l로 묘사되고, world space에서 명시된다. 그 벡터 l은 항상 길이가 1이라고 가정되어야 한다, 이 책에서 만나질 때 마다. directional lights에 대해, l은 일반적으로 shading 동안 다시 표준화할 필요가 있는 것을 피하기 위해 프로그램에 의해 표준화되어진다 (1로 스케일되어진다). 그 light vector l은 보통 빛이 이동하는 방향과 반대 방향을 가리키도록 정의된다 (see Figure 5.2) 이것 뒤에 있는 이유는 곧 명확해 질 것이다.

그 빛의 방향 외에도, 그것이 방출하는 illumination의 양은 명시될 필요가 있다. light를 측정하는 과학, 즉 radiometry(복사량, 방사측정) 은 Section 7.1에서 이야기 될 것이다; 이 챕터는 오직 관련된 개념들만을 보여줄 것이다. directional light source의 emission은 l에 수직인 unit area surface를 통과하는 power를 측정하여 수량화될 수 있다 (see Figure 5.3). irradiance(방사조도, 복사조도)라고 불려지는 이 양은  1초에 표면을 통과하는 광자(photons)의 에너지들의 합과 같다. (만약 빛을 파장으로 다룬다면, irradiance는 (측정 평면에서) 제곱된 wave amplitude (파장 진폭)과 비례한다. ) Light는 색칠해질 수 있고, 그래서 우리는 irradiance를 세 개의 숫자를 포함하는 RGB 벡터로 나타낼 것이다: 빨간색, 초록색, 그리고 파란색의 각각에 대해 하나씩 (Section 7.3에서, 색에 대한 주제가 좀 더 엄격히 다뤄질 것이다). painting 프로그램에 있는 색과 다르게, RGB irradiance 값들은 1을 초과할 수 있고, 이론적으로 임의로 크게될 수 있다는 것에 주목해라.

비록 하나의 주요한 광원이 있을지라도, 그 오브젝트들과 방의 벽에 튕기는 light는 그 오브젝트를 또한 비출 것이다. surrounding or environmental light의 이러한 유형은 ambient light라고 불려진다.  Chapters 8과 9에서, 우리는 ambient light를 모델링하는 다양한 방법들을 볼 것이다. 그러나 간단하게 해서, 우리는 이 챕터에서 그것들 중 어떤 것도 이야기 하지 않을 것이다. 우리의 간단한 lighting model에서, 직접적으로 비춰지지 않는 표면들은 검정색이다.

비록 l과 수직인 한 평면에서 irradiance를 측정하는 것이 우리에게 그 빛이 일반적으로 얼마나 밝을지를 말해줄지라도, 한 표면에서 그것의 illumination을 연산하기 위해, 우리는 그 표면에 평행한 평면 (즉, surface normal n에 수직)에서 irradiance를 측정할 필요가 있다. 그 surface irradiance는 l과 수직으로 측정되는 irradiance와 동일하고, ln 사이의 θ_i 각의 코사인과 곱해진다. (그림 5.4의 왼쪽을 보아라).

그림 5.4에서 중앙과 오른쪽 그림은 이 코사인 factor의 기하학적 해석을 보여준다. 중앙에서, 그 광선등른 그 표면에 수직으로 부딪히는 것으로 보여진다. 그 irradiance는 광선의 밀도와 비례하고, 그것들 사이의 거리 d에 반비례한다. 이 경우에, 표면에서 irradiance와 l에 수직인 irradiance는 같다.  오른쪽에서, 광선은 다른 방향에서 들어오는 것으로 보여진다. 그것들은 평면의 normal과 각 θ_i를 만든다. 그것들이 표면에 부딪히는 곳에서 광선 사이의 거리는 d / cosθ_i 이다. 그 irradiance가 이 거리에 반비례하기 때문에, 그것이 cosθ_i에 비례해야만 하는 것을 의미한다. 이 코사인은 두 벡터의 내적을 취해서 쉐이더에서 쉽게 연산될 수 있다 (두 ln이 항상 길이가 1이라는 것이 가정되어야 한다). 여기에서 우리는 light vector l이 빛이 이동하는 방향과 반대로 정의해야 하는 것이 왜 편리한지를 알게 된다; 그렇지 않다면, 우리는 내적을 취하기전에 우리는 그것을 negate해야만 한다.

E는 irradiance를 위한 방정식에서 사용된다, 대개 n에 수직인 irradiance에 대해. 우리는 l에 수직인 irradiance에 대해 E_L을 사용할 것이다. 음의 코사인 값은 빛이 그 표면 아래에서 들어오는 상황과 일치한다는 것에 주목해라. 이 경우에 그 빛은 그 표면을 전혀 비추지 않는다. 그래서 우리는 음이 아닌 값으로 clamped된 코사인을 사용할 것이다 (bar(cos)로 표현된):


그림 5.3과 5.4















댓글 없음:

댓글 쓰기