球面調和関数とはなにか? 「球面調和関数」は言葉の響きが難しいので、まずはイメージから捉えよう。 球面調和関数とは、かなり極端に簡略化して説明すると、球っぽいモノから任意の長さの針が突き出た「いびつなウニ」みたいな物体の形状を数学的な関数で表すためのもの……といえる(ウニの針が逆に凹んでいる場合もある)。 これがどうしてキューブマップの圧縮に使えるのかイメージが湧きにくいかもしれない。 順番に説明していこう。 全方位の情景を表したキューブ環境マップを球に見立て、そのキューブ環境マップのテクセル(画素)の値を"高さ"に見立てる。すると「いびつなウニ」みたいな立体ができあがる。そして、このいびつなウニを正確に記録するのは諦めて、「大体の形状」を記録する方針に変更する。その手段として球面調和関数を用いるのだ。 先ほど、32×32テクセルの6面体のキューブ環境マップの例を出したが、非圧縮では1頂点