Alla selostus siitä, kuinka tein tämän videon: https://youtu.be/gzhp6vGv8-0
Trikkianimaatio näyttää muuten melko aidolta, mutta pirun paikoilleen jämähtäneitä katsojat ovat - ehkä he ovat elokuvan mahtavuudesta niin hämillään! Tosin yksi kehtaa tuijottaa vaan kännykkäänsä. Suotakoon se hänelle anteeksi, jos hän katsoo videoitani Youtubesta.
Aluksi tein 600 kuvaa. Niillä siis tehdään valkokankaalta näkyvä pienelokuva. Lasken jokaisen pixelin RGB-väriarvon siten, että siihen vaikuttaa kuvan skaalaustekijä, jota jokaisen kuvan luonnin jälkeen hieman kasvatetaan - näin jokaisesta kuvasta tulee hieman erilainen.
rebol[] plot: copy[] ;Grafiikkablockin alustus print "Odota" maxx: 500 maxy: 500 main: layout [ panel: box (as-pair maxx maxy) white effect reduce ['draw plot] ] kuva: copy/part skip to-image main 20x20 (as-pair maxx maxy) ;otetaan ;typerät 20 pixeliä harmaat reunat pois, mitkä REBOL-laittaa kuvaindeksiapu: 0.15 ;skaalaustekijä. Sitä kasvatetaan joka kierroksella, ;jolloin saadaan hieman erilaisia frameja for kuvaindeksi 1 600 1 [ ; tuotetaan 600 kuvaa for x 0 (maxx - 1) 1 [ for y 0 (maxy - 1) 1 [ xp: x * kuvaindeksiapu yp: y * kuvaindeksiapu r: x * cosine yp ;lasketaan värin RGB-arvot g: y * sine xp b: (xp * yp) * cosine (xp + yp) väri: to-tuple compose [(to-integer r) (to-integer g) (to-integer b)] poke kuva (as-pair x y) väri ] ] save/png to-file rejoin ["frame" kuvaindeksi ".png"] kuva kuvaindeksiapu: kuvaindeksiapu + 0.005 print kuvaindeksi ] halt
Jotta animaatio toistaisi itseään kopioin kuvat 600:sta 1:een kuviksi 601...1200 eli kuva 1200 on sama kuin kuva 1. Näin animaatio "pyörii" ts. toistaa itseään (no, näin ei nyt ihan käy luodussa .avi videossa, mutta tein alunperin samalla tekniikalla .gif animaation, jonka halusin luuppaavan).
rebol[] tdsto: 601 for i 600 1 (-1) [ kuva: load to-file rejoin ["frame" i ".png"] save/png to-file rejoin ["frame" tdsto ".png"] kuva tdsto: tdsto + 1 ] halt
Kun 2*600 erilaista kuvaa oli tehty asetin ne tähän kuvaan valkokankaan kohdalle:
https://petke.info/elokuvasali.jpg
rebol[] taustakuva: load %elokuvasali.jpg ;valokuva teatterisalista maxx: taustakuva/size/x maxy: taustakuva/size/y for i 1 1200 1 [ ; sijoitetaan animaatiokuvat valkokankaalle plot: copy[] kuva2: load to-file rejoin ["frame" i ".png"] append plot compose [ image (taustakuva) image 159x218 604x222 610x449 176x492 (kuva2) ] main: layout [ panel1: box (as-pair (maxx) (maxy)) white effect reduce ['draw plot] ] kuva3: copy/part skip to-image main 20x20 (as-pair maxx maxy) save/png to-file rejoin ["elokuva" i ".png"] kuva3 print i ] halt
Lopuksi tein videon MakeAvi ohjelmalla. MakeAvi ohjelman codecit ovat melko vanhoja. Parhaimmaksi olen niistä todennut listan ensimmäisen "Cinepak codec by Radius". Se tekee tosin frameista videon tosi hitaasti :(
Aihe on jo aika vanha, joten et voi enää vastata siihen.