3D noise bump – 2
昨日の続きです. 昨日書きかけたアイディアというのは,実はアイディアと呼べるような物でも何でも無いのですが,一応書いておきます. 件の要求は,UVやsurface derivertivesが存在しないオブジェクトに対して3D noiseを使ったbumpを適応したいという事でした. で,よくよく考えてみると,gradientを生成する関数は3D noiseな訳だから,三次元空間でのgradientをそのままnormalの変位にしてしまえば良いわけです. つまり疑似コードで書くと: v0 = noise(P); v1 = noise(P.x + step); v2 = noise(P.y + step); v3 = noise(P.z + step); Nd.x = v1 – v0; Nd.y = v2 – v0; Nd.z = v3 – v0; Nbump = N + Nd; P: shading point N: original shading normal となります.超簡単.テストしてみましたがサックリ動きました.まあ,当り前ですよね.当り前過ぎてその場で思い付かなかった自分が情けなくなる程です. ともあれ,一件落着.