Saya mencoba menerapkan (dalam C #) algoritma perturbasi gambar yang disajikan dalam buku "Texturing and modelling - K. Perlin et al" (halaman 91 jika ada yang memilikinya), yang mengubah gambar. Kode berikut dalam bahasa Renderman: Akses tekstur
Ct = texture("example.tx", s, t);
diganti oleh
point Psh;
float ss, tt;
Psh = transform("shader", P);
ss = s + 0.2 * snoise(Psh);
tt = t + 0.2 * snoise(Psh+(l.5,6.7,3.4));
Ct = texture("example.tx", ss, tt);
mengubah gambar di sebelah kiri menjadi di sebelah kanan.
Dari apa yang saya undestood, alih-alih mengakses koordinat kita mengakses sedikit koordinat yang terganggu dan menampilkannya di tempat , sehingga menciptakan gambar yang terlihat sedikit terganggu .
didefinisikan sebagai , memetakan noise dari ke , dan dalam dokumentasi RenderMan mana P adalah sebuah titik, mengembalikan nilai berdasarkan pada beberapa noise (kemungkinan besar perlin atau kisi). ( http://renderman.pixar.com/resources/current/RenderMan/noiseFunctions.html )
Apa yang saya tidak mengerti adalah apa fungsi transformasi tidak, yang seharusnya memetakan titik 3d P ke dalam ruang "shader", dan bagaimana hal itu bisa dilaksanakan. Juga, saya tidak yakin apakah noise (x) mengembalikan titik 3d, float (akan lebih masuk akal) dan jika saya dapat menggunakan implementasi 2d sederhana dari noise Perlin untuk mencapai efek yang diinginkan yang sama.