Appearance
사전 계산 방사휘도(Radiance) 전달(PRT) (PRT) ~ PRT의 기본. 정적 PRT(3)
[칼럼 핵심 요약]
「구면조화함수(Spherical Harmonics)」는 말의 울림이 어렵기 때문에, 우선은 이미지로부터 파악하자. 상당히 극단적으로 간략화해 설명하면, 구 같은 물건으로부터 임의의 길이의 바늘이 튀어나온 「거친 성게」같은 물체의 형상을 수학적인 함수로 나타내기 위한 것……이라고 할 수 있다.🌐 원문 링크: 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(3) (Mynavi News)
📅 원문 발행일: 2009-06-19 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 구면 조화 함수(SH)의 현대적 활용: PRT의 핵심인 구면조화함수(Spherical Harmonics)는 현재도 프로브 기반 라이팅(Light Probes), 볼류메트릭 라이트맵, 스카이라이트 복사도 캐싱의 핵심 수학적 도구로 쓰입니다.
- 실시간 글로벌 일루미네이션(RTXGI / Lumen): 사전 계산(Precomputation)에 의존하던 한계를 벗어나, 메시 디스턴스 필드(SDF) 추적 및 하드웨어 레이트레이싱을 결합한 완전 동적 실시간 무한 반사 GI(Infinite Bounce GI)가 상용화되었습니다.
📖 본문 해설
[원문 리드문] > 「구면조화함수(Spherical Harmonics)」는 말의 울림이 어렵기 때문에, 우선은 이미지로부터 파악하자. 상당히 극단적으로 간략화해 설명하면, 구 같은 물건으로부터 임의의 길이의 바늘이 튀어나온 「거친 성게」같은 물체의 형상을 수학적인 함수로 나타내기 위한 것……이라고 할 수 있다.
구면조화함수(Spherical Harmonics)란 무엇입니까?
「구면조화함수(Spherical Harmonics)」는 말의 울림이 어렵기 때문에, 우선은 이미지로부터 파악하자.
구면조화함수(Spherical Harmonics)란, 상당히 극단적으로 간략화해 설명하면, 구 같은 모노로부터 임의의 길이의 바늘이 튀어나온 「거친 성게」같은 물체의 형상을 수학적인 함수로 나타내기 위한 것…
이것이 왜 큐브 맵 압축에 사용할 수 있는지 이미지가 솟아나기 어려울지도 모른다.
차례로 설명해 가자.
전방위의 정경을 나타낸 큐브 환경 맵을 구에 놓고, 그 큐브 환경 맵의 텍셀(픽셀)의 값을 "높이"로 한다. 그러면 '이비츠나 성게' 같은 입체가 완성된다. 그리고 이 코끼리 성게를 정확하게 기록하는 것은 포기하고, 「대략의 형상」을 기록하는 방침으로 변경한다. 그 수단으로서 구면조화함수(Spherical Harmonics)를 이용하는 것이다.
방금 전에, 32×32 텍셀의 6면체의 큐브 환경 맵의 예를 냈지만, 비압축에서는 1버텍스당 24kB의 데이터량이었다. 기록하는 구면조화함수(Spherical Harmonics)의 계수의 개수로 데이터량이 바뀌지만, 실용 레벨에서 16개 정도라도 충분하다고 한다. 예를 들면 만일 16개의 32비트 부동소수점(Floating-Point)으로 하면 불과 64바이트. 24kB의 1/400으로 작게 할 수 있게 된다. 방금 전의 4만 버텍스의 예로 가면, 2.4MB로 끝나게 되어, 938MB와 비교하면 꽤 현실적인 데이터량으로 압축할 수 있는 것을 알 수 있다.
구면조화함수(Spherical Harmonics)는 '이비츠나 성게'의 근사화 표현 기법으로 사용
구면조화함수(Spherical Harmonics)는 하나의 형상을 표현하기 위해 복수의 함수 그룹으로 구성된다. 그 함수의 수가 많을수록 형상 표현이 정확해진다. 상세한 수학적 정의는 여기에서 생략되지만, 아래 그림은 특정 매개 변수가 주어진 구형 조화 함수를 보여줍니다. 이 그림에 있어서 위에서 1단째까지의 구면조화함수(Spherical Harmonics)를 사용하면 1개, 2단째까지를 사용하면 합계 4개, 3단째까지를 사용하면 합계 9개, 4단째까지를 사용하면 합계 16개……라고 하는 상태에 함수는 증가한다.
그림
l=0,1,2,3… m=-l~+l에서의 구면조화함수(Spherical Harmonics)의 수식(상)과 3차원 가시화도(아래). 만약, 예를 들면 l=3의 4단째까지 사용하면 총 16개의 구면조화함수(Spherical Harmonics)를 사용하게 된다
그림을 다시 보고 싶다.
l의 값이 작을수록 형상이 단순하고, 반대로 l의 값이 커지면(아래로 갈수록) 토게토게 해 형상이 복잡해지고 있는 것을 알 수 있다. 방금 전의 「거친 성게」의 형상을 근사함에 있어서, 많은 구면조화함수(Spherical Harmonics)를 이용하면 고품위에 근사할 수 있다고 말했다. 이것은 즉, 이 그림 아래쪽의 복잡한 형상까지를 사용하면 사용할수록, 그 "거친 성게"를 정확하게 표현할 수 있다는 것이다.
표현하고 싶은 '거친 성게'는 큐브 환경 맵이며, 그 값은 큐브 환경 맵마다 고유하다. 라는 것은 각각 그 가시의 길이나 그 구 같은 모양의 크기가 다르다. 어떤 가시가 길면 그 가시가 길어지도록 구면조화함수(Spherical Harmonics)의 크기를 바꿔야합니다. 「거친 성게」형상의 근사에는, 복수의 구면조화함수(Spherical Harmonics)에 대해서 최적인 스케일링 계수(크기를 결정하는 곱셈값)를 줄 필요가 있다. 이 계수를 구하는 계산은 여기서는 생략하지만, 간단히 말하면 소정의 방정식을 풀어서 구한다.
예를 들면, l=3까지의 16개의 구면조화함수(Spherical Harmonics)를 이용하여 근사할 때에는 16개의 스케일링 계수를 구할 필요가 있다.
"거친 성게"형상을 근사하기 위해서는, 사용한 구면조화함수(Spherical Harmonics) 하나씩에 최적인 스케일링 계수를 도출하여 조합하여 할 필요가 있다
스케일링 계수를 도출해 버리면, 이것만으로 근사한 「거친 성게」형상의 복원을 행할 수 있다. 또한, 경험 칙적으로, 실시간 3D 그래픽스에 있어서의 PRT 용도의 경우, 대략 16개(l=3)~36개(l=5)의 구면조화함수(Spherical Harmonics)로 충분하다는 것을 알고 있다.
구면조화함수(Spherical Harmonics) 자체는 기존이며 산술적으로 계산할 수 있습니다. 그렇다면, 어떤 "거친 성게"형상을 기록&재현하려고 했을 때(근사되지는 않지만), 그 구한 계수만을 기록해 두면 복원 가능하다.
예를 들어 전출의 버텍스당 24kB의 데이터량이 필요했던 그 형상 데이터를, 16개의 구면조화함수(Spherical Harmonics)로 표현한다면, 불과 16개의 계수를 보존해 두면 복원을 할 수 있다. 구면조화함수(Spherical Harmonics)로 1/400으로 압축할 수 있기 때문에 구리는 여기에 있다.
보다 감각적인 비유를 하면, 구면조화함수(Spherical Harmonics)란, MPEG나 JPEG의 압축에 이용되는 이산 코사인 변환의 「구체 버전」이라고 할 수 있을지도 모른다. (계속)
(트라이Z 니시카와 젠지)