본문 바로가기
Terminology

[개념 정리] Graphics에서 Spherical Harmonics

by xoft 2023. 9. 20.

Spherical Harmonics(SH)는 전자기학, 양자역학 분야에서 나온 개념이지만, 본 글에서 Computer Graphics분야(와 Neural Radiance Field분야)에서 color값을 계산 할 때, SH를 어떻게 설계해서 쓰는지를 설명하고자 합니다.

 

 

Sphercial Harmonics란?

번역하면 구면 조화 함수라고 하며, 구의 표면에서 정의되는 함수를 말합니다. 다르게 표현하자면, 구면 좌표계에서 거리(r)을 제외하고 각도(θ : polar angle, φ : azimuthal angle) 를 입력을 받아, 구의 표면 위치(P)에서의 값을 출력하는 함수입니다. (그림 출처 : link)

구면 좌표계

전자기학과 양자역학에서 쓰이며, 구면 대칭인 계를 다룰 때 쓰인다고 합니다. 구면좌표계에서 라플라스 방정식을 풀면, 아래 수식을 얻을 수 있다고 합니다. (유도과정은 생략하겠습니다.)

m과 ℓ로 여러개의 함수Y가 존재하고, 각 Y함수는 각도(θ,φ)를 입력으로 받는 형태입니다. link 에 ℓ이 10인 경우까지 정리 되어 있습니다. 

ℓ이 같은 함수들을 묶어, band라고도 합니다. ℓ이 0이면 L0 band, ℓ이 1이면 L2 band라고 부릅니다(link). 위 수식을 그림으로 나타내면 아래와 같습니다. 

이를 θ : polar angle, φ : azimuthal angle를 x,y축인 map으로 표현하면 아래와 같습니다.채도(=saturation=선명도)는 SH함수의 magnitude(크기)으로, 색상(=Hue)을 phase(=?)으로 표현하면 아래와 같은 그림을 만들 수 있다고 합니다. (link) 구면의 색상값은 설계방법이 일정하지 않고 다 다르게 정의하는 것 같습니다.

SH에서의 m은 ℓ의 갯수에 의존적인 것을 볼 수 있으며, ℓ은 무한대로 쓰이지 않습니다. SH에서 max degree라는 용어를 볼 수 있는데, 이는 ℓ의 최대값을 의미합니다.

 

다시 정리하자면, Spherical Harmonics 함수는 m과 ℓ로 여러개의 함수 Y로 구성되고, 각 Y함수는 각도(θ,φ)를 입력으로 받아, 표면의 특정 좌표의 값을 출력하는 함수입니다.

 

 

 

Computer Graphics에서 Sphercial Harmonics

3D모델에서 여러 광원들로부터 들어오는 빛을 실시간으로 계산하고 표현하는데 사용되었으며 SIGGRAPH 2002에서 최초로 언급되었다고 합니다. (출처 : link )

 

Color값 C는 Y함수에 대한 가중치 k로 weighted sum하여 계산됩니다. 의미를 생각해보자면, 함수 Y라는 색상 팔레트가 존재하고 각 팔레트에는 가중치값이 매겨져 있습니다. 입력 각도에 따라, 함수 Y들은 서로 다른 색상값을 한가지씩 출력하게 되며, 가중치 값에 따라 색상이 조합되어 최종적으로 한가지 색상이 만들어지게 됩니다.

 

Max Degree(=ℓ의 최대값)는 고정이 되며, 색상 팔레트의 총 갯수가 결정이 됩니다. 수식상 가중치 k 값만이 조절 가능한 parameter입니다. k는 설명을 위해 가중치라고 불렀지만 일반적으로 coefficient로 부릅니다.

 

3D 모델링 시에는 light source마다 서로 다른 coefficient값을 가지게 되며, 각도에 따라 칼라값이 Σw*x 수식으로 계산이 되기 때문에, 실시간 랜더링이 가능하게 합니다. light source마다 coefficient은 3D 모델을 잘 표현 할 수 있는 coefficient값 최적화를 통해 계산 되어지게 됩니다.

댓글