vers l'index général de l'aide - vers l'index des motifs

warp - généralités et turbulence

warp permet d'appliquer aux motifs des modifications spatiales, suivant des algorithmes particuliers, essentiellement destinés à briser leur régularité.

Il se place parmi les autres modificateurs de motifs, plus particulièrement avec scale, rotate, et translate, avec lesquels il interagit au niveau de l'ordre des transformations.

turbulence

Imaginez que les motifs soient en fait un liquide composé de plusieurs liquides colorés entremêlés. Si vous soufflez doucement sur ce liquide, vous allez provoquer de petits tourbillons, vaguelettes, et les couleurs seront un peu secouées. C'est plus ou moins ce que fait turbulence.

syntaxe

warp {
 turbulence TurbVec // vecteur
 omega Omega     // nombre décimal
 lambda Lambda   // nombre décimal
 octaves Octaves // nombre entier
}

turbulence est suivi d'un vecteur, qui indique en quelque sorte dans quelle direction et avec quelle force on souffle sur le motif.

pigment {... warp {turbulence <1,.1,0>}}

...veut dire qu'on "souffle" un bon coup dans la direction x, un tout petit peu dans la direction y, et pas du tout vers z.

En fait, pour appliquer de la turbulence, POV-Ray effectue quelques déplacements (pseudo-)aléatoires sur les points qui constituent le motif. On peut contrôler la façon dont ce déplacement s'effectue à l'aide de trois mots clés :

octaves : suivi d'un entier, spécifie le nombre de ces déplacements successifs (de 1 à 10). La valeur par défaut est 6, ce qui est déjà beaucoup.

lambda : spécifie à quel point chaque nouveau déplacement peut (statistiquement) être différent du précédent. La valeur par défaut est de 2, ce qui est beaucoup. Des valeurs plus faibles rendent la turbulence plus "sage".

omega : spécifie quelle est le rapport de distance entre deux déplacement successifs. La valeur par défaut de 0.5 fait en sorte que chaque déplacement est deux fois plus court que le précédent (et, ici, les musiciens comprendront pourquoi on parle d'"octaves").

Exemple :

pigment {... warp {
                    turbulence <1,.1,0>
                     octaves 5  // 5 déplacements
                     lambda 1.5 // variation de direction un peu moins forte que d'hab'
                     omega 1/3  // chaque déplacement aura 1/3 de la longueur du précédent
																			}
                    }
  

Note : plus la valeur d'octaves est grande, plus il y a de déplacements à calculer, et donc plus le rendu de ce motif sera long à éxécuter. Veillez donc à utiliser une valeur d'octaves qui vous convient, plutôt que d'utiliser la valeur pas défaut qui est assez élevée.

octaves 1octaves 2octaves 4octaves 10
lambda 1lambda 2lambda 4lambda 8
omega .2omega .4omega .6omega .8

fonction de turbulence pour les vecteurs

La fonction vturbulence() renvoie les valeurs de turbulence utilisées par POV-Ray. Cela permet, entre autres, de disposer de vecteurs (pseudo-)aléatoires qui sont relativement cohérents dans l'espace, c'est-à-dire, que le vecteur généré pour un point donné de l'espace sera similaire en longueur et en direction à celui généré pour un autre point proche du premier.

vturbulence(Lbd, Omg, Oct, Pt) renvoie un vecteur dépendant des 4 paramètres qu'on lui passe, les 3 premiers ayant la même signification que pour turbulence. Ce vecteur correspond donc au déplacement généré par turbulence 1 octaves Oct lambda Lbd omega Omg appliqué au point Pt.

remarque

POV-Ray 3.5 dipose toujours, en héritage des anciennes versions, d'un mot clé turbulence, directement applicable à un motif, en dehors d'une structure warp. Toutefois, cette fonctionnalité a l'inconvénient de réaliser la turbulence AVANT toute autre transformation, empêchant donc un réglage fin de l'effet. En conséquence, nous vous conseillons d'utiliser exclusivement warp {turbulence ...}, qui convient à toutes les situations.

auteurs : Fabien Mosen / Christophe Bouffartigue