Tytuł: [ROZ] potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: psorek on 22.07.2010, 18:04:39
wejście: warstwa1
działanie: skopiować warstwę1 do warstwy2 sprowadzić na warstwie2 kolor czarny do alfy skopiować warstwę2 do warstwy3 zastosować na warstwie2 rozmycie gussa (wys, szer 10) rozmyć promieniście (130 długości) warstwę3 skopiować warstwę3 do 3 takich warstw spłaszczyć obraz
wyjście: efekt działania skryptu zapisany na wejściowej warstwie
Muszę te operacje wykonać na kolejnych 50 warstwach, więc ręcznie jest ciężko. Z moich informacji wynika że skryptem plus narzędzie "filter all layers" będzie prościej. Uda się coś takiego wykonać?
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: Rodez on 23.07.2010, 19:36:51
Spokojnie, trochę wytrwałości... jest kilka osób, które umieją pisać skrypty, ale nawet one potrzebują na to trochę czasu jeśli już...
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: Ziomioslaw on 23.07.2010, 23:27:45
spłaszczyć obraz
Dla 50 warstw to i tak będzie jeden przebieg:)
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: psorek on 01.08.2010, 19:46:13
ech, chodziło mi o połączenie dwóch warstw.
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: Ziomioslaw on 02.08.2010, 22:16:07
Albo sam zaczniesz to pisać, albo poczekasz do weekendu.
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: psorek on 03.08.2010, 07:21:48
Mogę czekać, nie spieszy mi się.
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: Ziomioslaw on 03.08.2010, 19:34:14
skopiować warstwę3 do 3 takich warstw spłaszczyć obraz
A po co właściwie to 3 kopiować?
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: psorek on 04.08.2010, 10:34:25
żeby wzmocnić efekt jaki ma dać ta warstwa.
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: Ziomioslaw on 05.08.2010, 18:57:48
Dodałem Ci też funkcję, która wywołuje tą metodę dla wszystkich warstw obrazka. Mam nadziej, że dobrze zrozumiałem co chciałeś uzyskać. (define (script-fu-raw-fun-with-layer image drawable) (let* ( (layer-top (car (gimp-image-get-layer-position image drawable))) (layer2 0) (layer3 0) ) (gimp-image-undo-group-start image) ; skopiować warstwę1 do warstwy2 (set! layer2 (car (gimp-layer-copy drawable TRUE))) (gimp-image-add-layer image layer2 layer-top) ; skopiować warstwę2 do warstwy3 (set! layer3 (car (gimp-layer-copy layer2 TRUE))) (gimp-image-add-layer image layer3 layer-top) ; sprowadzić na warstwie2 kolor czarny do alfy (plug-in-colortoalpha RUN-NONINTERACTIVE image layer2 '(0 0 0)) ; zastosować na warstwie2 rozmycie gussa (wys, szer 10) (plug-in-gauss RUN-NONINTERACTIVE image layer2 10 10 0) ; rozmyć promieniście (130 długości) warstwę3 (plug-in-mblur RUN-NONINTERACTIVE image layer3 0 130 10 0 0)
(gimp-image-merge-down image layer2 0) ; skopiować warstwę3 do 3 takich warstw i spłaszczyć obraz (set! layer2 (car (gimp-layer-copy layer3 TRUE))) (gimp-image-add-layer image layer2 (+ layer-top 1)) (gimp-image-merge-down image layer2 0) (set! layer2 (car (gimp-layer-copy layer3 TRUE))) (gimp-image-add-layer image layer2 (+ layer-top 1)) (gimp-image-merge-down image layer2 0) (gimp-image-merge-down image layer3 0) (gimp-image-undo-group-end image) ) )
(define (script-fu-fun-with-all-layers image drawable) (let* ( (layers (cadr (gimp-image-get-layers image))) (layers-count (car (gimp-image-get-layers image))) (i 0) ) (while (< i layers-count) (script-fu-raw-fun-with-layer image (aref layers i)) (set! i (+ i 1)) ) ; BŁĄD: w funkcji raw nie warstwy są w złych miejscach wyświetlane. ) )
(define (script-fu-fun-with-layer image drawable) (script-fu-raw-fun-with-layer image drawable) (gimp-displays-flush) )
(script-fu-register "script-fu-fun-with-layer" _"<Image>/Script-Fu/Zabawa na jednej warstwie" _"Wykonuje szereg operacji na wybranej warstwie: kopiuje warstwę do warstwy2, sprowadza na warstwie2 kolor czarny do alfy, kopiuje warstwę2 do warstwy3, stosuje na warstwie2 rozmycie gussa (wys, szer 10), rozmywa warstwę3 promieniście (130 długości), kopiuje warstwę3 do 3 takich warstw, sprowadza wszystko do jednej warstwy." "Ziomioslaw (ziomioslaw@wp.pl)" "Ziomioslaw" "2010-08-04" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 )
(script-fu-register "script-fu-fun-with-all-layers" _"<Image>/Script-Fu/Zabawa na wszystkich warstwach" _"Wykonuje 'Zabawę na jednej warstwie' na wszystkich warstwach obrazka." "Ziomioslaw (ziomioslaw@wp.pl)" "Ziomioslaw" "2010-08-05" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 )
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: psorek on 06.08.2010, 09:29:48
Hehe wielkie dzięki. Jest tylko jeden problem: zastosowałeś rozmycie w ruchu a nie promieniste, ale jestem jednak programistą i się dokopię co zmienić. Przy okazji może kiedyś... Może nauczę się pisać skrypty w tym języku. edit: (define (script-fu-raw-fun-with-layer image drawable) (let* ( (layer-top (car (gimp-image-get-layer-position image drawable))) (layer2 0) (layer3 0) ) (gimp-image-undo-group-start image) ; skopiować warstwę1 do warstwy2 (set! layer2 (car (gimp-layer-copy drawable TRUE))) (gimp-image-add-layer image layer2 layer-top) ; sprowadzić na warstwie2 kolor czarny do alfy (plug-in-colortoalpha RUN-NONINTERACTIVE image layer2 '(0 0 0)) ; skopiować warstwę2 do warstwy3 (set! layer3 (car (gimp-layer-copy layer2 TRUE))) (gimp-image-add-layer image layer3 layer-top) ; zastosować na warstwie2 rozmycie gussa (wys, szer 10) (plug-in-gauss RUN-NONINTERACTIVE image layer2 10 10 0) ; rozmyć promieniście (130 długości) warstwę3 (plug-in-mblur RUN-NONINTERACTIVE image layer3 2 130 10 200 200)
(gimp-image-merge-down image layer2 0) ; skopiować warstwę3 do 3 takich warstw i spłaszczyć obraz (set! layer2 (car (gimp-layer-copy layer3 TRUE))) (gimp-image-add-layer image layer2 (+ layer-top 1)) (set! layer2 (car (gimp-layer-copy layer3 TRUE))) (gimp-image-add-layer image layer2 (+ layer-top 1)) (gimp-image-undo-group-end image) ) )
(define (script-fu-fun-with-all-layers image drawable) (let* ( (layers (cadr (gimp-image-get-layers image))) (layers-count (car (gimp-image-get-layers image))) (i 0) ) (while (< i layers-count) (script-fu-raw-fun-with-layer image (aref layers i)) (set! i (+ i 1)) ) ; BŁĄD: w funkcji raw nie warstwy są w złych miejscach wyświetlane. ) )
(define (script-fu-fun-with-layer image drawable) (script-fu-raw-fun-with-layer image drawable) (gimp-displays-flush) )
(script-fu-register "script-fu-fun-with-layer" _"<Image>/Script-Fu/Zabawa na jednej warstwie" _"Wykonuje szereg operacji na wybranej warstwie: kopiuje warstwę do warstwy2, sprowadza na warstwie2 kolor czarny do alfy, kopiuje warstwę2 do warstwy3, stosuje na warstwie2 rozmycie gussa (wys, szer 10), rozmywa warstwę3 promieniście (130 długości), kopiuje warstwę3 do 3 takich warstw, sprowadza wszystko do jednej warstwy." "Ziomioslaw (ziomioslaw@wp.pl)" "Ziomioslaw" "2010-08-04" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 )
(script-fu-register "script-fu-fun-with-all-layers" _"<Image>/Script-Fu/Zabawa na wszystkich warstwach" _"Wykonuje 'Zabawę na jednej warstwie' na wszystkich warstwach obrazka." "Ziomioslaw (ziomioslaw@wp.pl)" "Ziomioslaw" "2010-08-05" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 ) Trochę przerobiłem. Mógłbyś tylko napisać, jak scalić potem te warstwy w jedną? Jest to niezbędne dla mnie.
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: Ziomioslaw on 06.08.2010, 19:20:24
Scalają się w jedną, potem możesz nawet ręcznie użyć opcji "scal widoczne".
Tytuł: Odp: potrzebny skrypt do wykonania prostych działań na 50 klatkach.
Wiadomość wysłana przez: psorek on 07.08.2010, 09:10:14
warstwa1 scala się z warstwą2, ale 3 kopie warstwy3 pozostają luźne. Co do opcji "scal widoczne", to u mnie nie da się jej zastosować. (widoczne są fragmenty niższych warstw, a to ma być potem animacja gif.)
EDIT: już działa. Kiedy modyfikowałem wcześniej skrypt, usunąłem przypadkiem jedną linijkę. Jest dobrze.
|