;; --------------------------------------------------------- ;; * ;; * Script-Fu H2O v1.1 ;; * ;; * pour GIMP 2.0.x ;; * ;; * ;; * abcdugimp.free.fr 03/08/2004 ;; * ;; --------------------------------------------------------- ;; Vous êtes libre d'utiliser ce script comme bon vous semble ;; feel free to use it for whatever you like. (define (script-fu-h2o-2 image drawable dilater opacite-ombre opacite-claire opacite-fonce bg-color motif-eau toggle-color color-eau conserver) (if (= conserver FALSE) (begin (set! NOM "Effet script H2O")) (begin (set! NOM "Ombre")) ) ;; init generale (let* ( ;; conserver les outils dans des variables (old-bg (car (gimp-palette-get-background))) (old-fg (car (gimp-palette-get-foreground))) (old-patt (car (gimp-patterns-get-pattern))) ;; variable déterminant si il y a une sélection (var-select (car (gimp-selection-is-empty image))) ;; connaitre les dimensions de l'image (image-width (car (gimp-image-width image))) (image-height (car (gimp-image-height image))) ;;nom pour le calque de l'image aplatie ;; creation des calques (ombre-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE NOM 100 NORMAL))) ;; Ombre (texture-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE "Texture" 100 NORMAL))) ;; Texture (eau-claire-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE "Eau partie claire" 100 NORMAL))) ;; eau partie claire (eau-fonce-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE "Eau partie fonce" 100 NORMAL))) ;; eau partie fonce (reflet-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE "Reflet" 100 NORMAL))) ;; reflet ) ;; debut d'historique d'annulation (gimp-image-undo-group-start image) ;; add layer (gimp-image-add-layer image ombre-layer -1) (gimp-image-add-layer image texture-layer -1) (gimp-image-add-layer image eau-claire-layer -1) (gimp-image-add-layer image eau-fonce-layer -1) (gimp-image-add-layer image reflet-layer -1) ;; selections (gimp-layer-add-alpha drawable) ;; ajoute un canal alpha au calque (if (= (car (gimp-selection-is-empty image)) TRUE) ;; test si il y a selection (begin ;; aucune selection n'a été faite (gimp-edit-copy drawable) ;; copie (set! h2o-canal (car (gimp-channel-new image image-width image-height "Mask de canal h2o" 50 '(0 0 0)) )) ;; cree un nouveau canal (gimp-edit-clear h2o-canal) ;; nettoyer le mask de canal (gimp-image-add-channel image h2o-canal 0) ;; add channel (gimp-floating-sel-anchor(car (gimp-edit-paste h2o-canal 0))) ;; colle et ancre la selection flottante ) (begin ;; une selection a ete faite ;; crée un mask de canal d'après la selection de l'utilisateur (set! canal (car (gimp-selection-save image))) ;; canal stockant la selection originelle de l'utilisateur (gimp-selection-invert image) ;; inverser la selection pour harmoniser avec l'autre possibilité sans selection (set! h2o-canal (car (gimp-selection-save image))) (gimp-selection-none image) ;; desactive la selection ) ) ;; initialisations (gimp-palette-set-background bg-color) (gimp-palette-set-foreground '(0 0 0)) (gimp-patterns-set-pattern motif-eau) (gimp-drawable-set-visible drawable FALSE) ;; calque source invisible (gimp-drawable-set-visible h2o-canal FALSE) ;; mask de canal invisible ;; init calques ;; vider les calques pour qu'il n'y est pas de trace indesirable (gimp-edit-clear ombre-layer) (gimp-edit-clear texture-layer) (gimp-edit-clear eau-claire-layer) (gimp-edit-clear eau-fonce-layer) (gimp-edit-clear reflet-layer) ;; option dilater (if (= TRUE dilater) (begin (plug-in-gauss-rle2 1 image h2o-canal 4 4) ;; flou RLE (gimp-levels h2o-canal 0 211 230 1.0 0 255) ;; niveaux (valeur) ) ) ;;-------------------------------------------------- ;; base ;;-------------------------------------------------- ;; travail sur le calque "Ombre" (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-selection-invert image) ;; inverser la selection (gimp-edit-bucket-fill ombre-layer 0 0 opacite-ombre 0 0 0 0) ;; remplissage (gimp-selection-none image) ;; deselectionner (plug-in-gauss-rle2 1 image ombre-layer 5 5) ;; flou RLE (gimp-layer-set-offsets ombre-layer 6 6) ;; decalage (gimp-layer-resize-to-image-size ombre-layer) ;; mettre au dim de l'image (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-selection-invert image) ;; inverser la selection (gimp-edit-clear ombre-layer) ;; effacer (gimp-selection-none image) ;; deselectionner ;; travail sur le calque "Eau partie claire" (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-selection-invert image) ;; inverser la selection (gimp-edit-bucket-fill eau-claire-layer 1 0 opacite-claire 0 0 0 0) ;; remplissage (gimp-selection-none image) ;; deselectionner (plug-in-gauss-rle2 1 image eau-claire-layer 8 8) ;; flou RLE (gimp-layer-set-offsets eau-claire-layer -5 -5) ;; decalage (gimp-layer-resize-to-image-size eau-claire-layer) ;; mettre au dim de l'image (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-edit-clear eau-claire-layer) ;; effacer (gimp-selection-none image) ;; deselectionner ;;-------------------------------------------------- ;; travail sur le calque "Texture" (if (= toggle-color FALSE) (begin (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-selection-invert image) ;; inverser la selection (gimp-edit-bucket-fill texture-layer 2 0 100 0 0 0 0) ;; remplissage ) (begin (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-selection-invert image) ;; inverser la selection (gimp-palette-set-foreground color-eau) (gimp-edit-fill texture-layer 0) ;; remplissage (gimp-palette-set-foreground '(0 0 0)) ) ) ;; travail sur le calque "Eau partie fonce" (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-edit-bucket-fill eau-fonce-layer 0 0 opacite-fonce 0 0 0 0) ;; remplissage (gimp-selection-none image) ;; deselectionner (plug-in-gauss-rle2 1 image eau-fonce-layer 7 7) ;; flou RLE (gimp-layer-set-offsets eau-fonce-layer 8 5) ;; decalage (gimp-layer-resize-to-image-size eau-fonce-layer) ;; mettre au dim de l'image (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-edit-clear eau-fonce-layer) ;; effacer (gimp-selection-none image) ;; deselectionner ;; travail sur le calque "reflet" (plug-in-gauss-rle2 1 image h2o-canal 4 4) ;; flou RLE (gimp-levels h2o-canal 0 17 19 1.0 0 255) ;; niveaux (valeur) (plug-in-gauss-rle2 1 image h2o-canal 3 3) ;; flou RLE ;; repoussage d'apres une carte (plug-in-bump-map 1 image h2o-canal h2o-canal 135.00 3.00 65 1 -3 0 255 FALSE TRUE 1) (gimp-levels h2o-canal 0 40 250 1.6 0 255) ;; niveaux (valeur) (gimp-selection-load h2o-canal) ;; mask de canal vers selection (gimp-edit-bucket-fill reflet-layer 1 0 80 0 0 0 0) ;; remplissage (gimp-selection-none image) ;; deselectionner (gimp-layer-set-offsets reflet-layer 1 -1) ;; decalage (gimp-layer-resize-to-image-size reflet-layer) ;; mettre au dim de l'image ;; conserver les calques (if (= conserver FALSE) (begin (gimp-image-merge-down image texture-layer 1) (gimp-image-merge-down image eau-claire-layer 1) (gimp-image-merge-down image eau-fonce-layer 1) (gimp-image-merge-down image reflet-layer 1) ) ) (if (= var-select TRUE) ;; test si il y AVAIT selection (begin ;; aucune selection n'avait été faite ) (begin ;; une selection avait été faite (remettre la selection de l'utilisateur) (gimp-selection-load canal) ;; mask de canal vers selection (gimp-image-remove-channel image canal) ;; supprimer le mask de canal ) ) ;; mise a jour (gimp-image-remove-channel image h2o-canal) ;; supprimer le mask de canal ;; fin d'historique d'annulation (gimp-image-undo-group-end image) (gimp-displays-flush) ;;remettre toutes les outils comme au debut (gimp-palette-set-background old-bg) (gimp-palette-set-foreground old-fg) (gimp-patterns-set-pattern old-patt) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fin du Script ;; registre (script-fu-register "script-fu-h2o-2" "/Script-Fu/Alchemy/h2o" "Effet 3D en transparence. abcdugimp.free.fr" "Expression" "Free" "07/09/2004" "RGB*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 SF-TOGGLE "Dilater ?" TRUE SF-ADJUSTMENT "Opacite de l'ombre" '(70 10 100 1 10 0 0) SF-ADJUSTMENT "Opacite de la partie claire" '(75 10 100 1 10 0 0) SF-ADJUSTMENT "Opacite de la partie fonce" '(70 10 100 1 10 0 0) SF-COLOR "Partie claire" '(255 255 255) SF-PATTERN "Motif interieur" "Rain" SF-TOGGLE "Remplacer le motif par de la couleur ?" FALSE SF-COLOR "Couleur interieur" '(170 170 185) SF-TOGGLE "Conserver les calques ?" FALSE )