しんさんのブログ

科学や技術のこと読書のことなど

球面調和関数と大域照明について(webリンク集)

大域照明について、球面調和関数を使用する方法と球面調和関数そのものについての解説記事にリンク集を自分メモように作ります。
多くのサイトで球面調和を計算したり可視化するコードが公開されていますが、ほぼ同じようなコードとなっているようです。

1) 以下のサイトでは球面調和関数をつかったリアルタイム大域照明について解説してあります。

数式もあり、DirectX9のコードもあります。
実装コードが何を意味しているのかも解説があります。球面調和関数そのものについての説明はありません。
t-pot『リアルタイム大域照明』

2) そもそも大域照明(グローバルイルミネーション)ってなに?ということに関して、ゲームでの事例の解説記事です。

セガ、新作「ソニック ワールドアドベンチャー」におけるライティング技法を公開

3) この記事も大域照明に関する解説記事、(2)よりも詳しい。球面調和だけでなくPRT(Precomputed Radiance Transfer)全般についてまとめてある。

筆者は西川善司さん.
itmemolog.blogspot.jp
上の記事は古くて、最新の記事は以下の記事一部になっているのかも。
news.mynavi.jp

4) 球面調和関数で大域照明をするときの実装に関するものすごく簡単な解説。

実装されたコードへのリンクがある。
blogs.yahoo.co.jp

5) (4)のブログで実装先としてリンクされいるサイト。球面調和関数で大域照明を実装するときに多くのサイトから参照されている大元になるぺージ。

このサイトのコードが元になっているサイトが多い。
An Efficient Representation for Irradiance Environment Maps

6) Asuraさんの記事。球面調和を視覚化するサンプルコード。具体的に式もかいてある。CGで使う場合は実部のみを利用するがようの式もきちんと記述してある

☆PROJECT ASURA☆ [OpenGL] 『球面調和関数(1)』
球面調和関数を使ってキューブマップを近似(圧縮)するコードと解説。
☆PROJECT ASURA☆ [OpenGL] 『球面調和関数(2)』

7) 藤田さんの球面調和関数の多項式表現のpdfドキュメント。

CGで利用する実数球面調和関数について正しく記述してある(ネットにはこの記述間違いの記事もある)
また、デカルト座標系での球面調和関数についての記述もある。
http://lucille.sourceforge.net/blog/images/shpoly.pdf

8) 球面調和関数計算の高速化についての記述。Web上で球面調和展開した画像を取得するアプリも公開されている。

Spherical Harmonic Expansion

9) GLUTを使って球面調和関数の値を描画するテストプログラムのソース

http://harumune.s56.xrea.com/assari/index.php?%B5%E5%CC%CC%C4%B4%CF%C2%B4%D8%BF%F4

10) pythonを用いた球面調和関数の視覚化

takuyaokada.hatenablog.com

11) msdnによるPRTの解説とサンプル.サイトの一番下にあるリンクからさらにPRTレンダリングに関する解説に飛べます.

PRTDemo サンプル