2009/02/12

Ambient Occlusion with Python


前々からやってみたかった、syoyoさんのAO benchでのコードをPython用に移植させてみました。上の画像はその出力結果です。ちなみに、出力を楽にするためにPython Imaging Library(PIL)を利用しています。

なんで前々からやってみたかったかというと、3Dでのレンダリングアルゴリズムの学習がしたかったから。ray tracing法やらAmbient Occlusionなどの手法は頭の中では分かってましたが、実際にどうやって動かしているのかは全然分かんなかったですから…今回の移植を通して、レンダラの実際の動きが少しだけですが掴めたような気がします。

それで気になる速度はというと、

  • サブサンプリング数:2
  • AOのサンプル数:8
  • 画像の長さと高さ:256px

という標準的な設定でレンダリングしたところ、
$ python sample.py
time:463.692063 sec
という結果が出ました(AMD Athlon 64 x2 3800+)。

まぁPythonですから大体予想してた通りの結果となりましたが、それにしてもものっそい遅いです。C言語での2.6secという結果を比べてみると、環境が違いますからそのまま評価することはできないんですがだいたい180倍くらい時間かかってます。もう少しなんとかできなかったかなー…

0 件のコメント: