2008/09/10

Real Time Ambient Occlusion via ICE

リアクション: 
うひゃー。とても疲れました。

でも、ワタクシでも出来ました。
リアルタイムアンビエントオクルーヂョン。



めちゃくちゃ苦労しました・・・。
しかも、出来たものは激重・・・。
このシーン2000ポリしか無いんですが、CPUメーターがすぐ70%とか行ってしまいます。
しかも、落ちやすいし・・・。
さらに、VertexColorにコネクト出来ず、WeightMap止まりです。

アルゴリズムの簡略化というものは、奥が深すぎます。
ICE、奥が深すぎます。

しかしながら、AOのアルゴリズムは、比較的簡単です。

あるポイントから、ランダムに複数のレイを飛ばし、その遮蔽率でそのポイントの明るさを決定するものです。

一行で終わるのか・・・orz

なんだけど、CGの世界では、ベクトルが、物に当たるということを表現するのに物凄い労力が必要なのです。
衝突判定の勉強をしていて良かったと思いました。
とはいえ、最適化までは、手が伸びず、挫折しましたけど・・・。

このICEノードで、苦労したところはー

ポイントに対して、どうやって、ランダムレイをジェネレイトするのか。
んー、まったく思いつきませんでした。
それを解決したのは、コレ。

Random Integer
http://community.softimage.com/downloads.php?do=file&id=138

Moduloで、ランダム値を発生させるとは・・・。アメイズィング!ジーニアス!
素晴らしすぎるので、5ツ星を付けてみました。
こういう単純なものって、宝物ですわね。
Halfdan Ingvarsson様に感謝です。

あとは、helge mathee様のTutorial - Arrays in ICE on Vimeoです。


Tutorial - Arrays in ICE from helge mathee on Vimeo.

ArrayのValueをリニアに作ることすら出来なかったワタクシには、とてつもなく参考になりました。
感謝です。ありがとうございます。

XSI7のtrialが、今日切れるので、しばらくお預けですな。
でも、出来てほっとしましたYO!

次は、何作ろうかなー。

0 件のコメント: