J'essaie d'implémenter (en C #) un algorithme de perturbation d'image présenté dans le livre "Texturation et modélisation - K. Perlin et al" (page 91 si quelqu'un l'a), qui déforme une image. Le code suivant est en langage Renderman: L'accès à la texture
Ct = texture("example.tx", s, t);
est remplacé par
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);
transformer l'image de gauche en celle de droite.
D'après ce que j'ai compris, au lieu d'accéder aux coordonnées nous accédons à des coordonnées légèrement perturbées et les affichons à l'endroit , créant ainsi une image qui semble légèrement perturbée .
est défini comme , mappant le bruit de à , et dans la documentation RenderMan où P est un point, renvoie une valeur basée sur un peu de bruit (très probablement perlin ou treillis). ( http://renderman.pixar.com/resources/current/RenderMan/noiseFunctions.html )
Ce que je ne comprends pas, c'est ce que fait la fonction de transformation, qui est censée mapper le point 3D P dans l'espace "shader", et comment peut-elle être implémentée. De plus, je ne sais pas si le bruit (x) renvoie un point 3D, un flottant (aurait plus de sens) et si je peux utiliser une simple implémentation 2D du bruit de Perlin pour atteindre le même effet souhaité.