15.-16. Februar 2024
I dette opslag vil der blive henvist til programmer i forkortet form, det vil sige (dvs.) hvis du ser et ord, efterfulgt af (parentes), ved du jeg introducere en forkortelse. God fornøjelse.
Se eventuelt videoen inden du læser opslaget. Den færdige video titel blev Fruit was on a Table:
Opgaven
MovingArt er et læringskoncept som underviserteamet har introduceret, for at give de studerende en mulighed for at fordybe sig i softwares og produktionsteknik. De softwares som anbefales til projektet, (og dem jeg valgte at bruge), er Adobe PhotoShop (PS), og Adobe AfterEffects (AE). Idéen er at bringe maleriet til live.
Hæng i, der er sket mange ting, jeg har lært meget, så jeg håber jeg kan få det hele med!
Opgaven stillede at vi skulle finde et kunstværk af eget ønske, og bruge det som grundlag for vores fortælling. Jeg faldt over værk:

Thomas Badger

https://en.wikipedia.org/wiki/Thomas_Badger
Jeg vil gerne starte med at dele et link til Wikipedia, af den årsag at jeg ikke har kunne finde stærkere kilder på T. Badger.
Thomas Badger (1792–1868) var en anerkendt kunstner i Boston, Massachusetts, i det 19. århundrede, han malede mange naturalistiske værker som eksempelvis “Still Life with Fruit on a Table”, men var specialiseret i portrætmaleri. Han trænede under John Ritto Penniman og portrætterede prominente personligheder som Henry Wadsworth Longfellow og George B. Doane. Begge portrætter kan ses på hans wikiside. Badger efterlod sig et betydeligt kunstnerisk arv, og hans værker findes i samlinger som Boston Athenaeum, Maine Historical Society og Fine Arts Museums of San Francisco. Han døde i 1868 af lungebetændelse.
Under T. Badgers tid var der kraftige strømninger fra den naturalistisk billedkunst, hvilket man også tydeligt ser i næsten alle hans værker. Der er desværre ikke mange værker tilgængelige online, på trods af at hans samling er i CC0 – public domain. Mange af hans værker er dele af private samlinger.
Motiv & Motiv
Det jeg finder interessant ved værket, er den åbenlyse idyl, men rå repræsentation af frugterne. Det virker som om de slås om motivet. Der er et tydeligt vulva-symbol i appelsinen, og et fallos-symbol i bananen – en kamp om motiv. Modsætningsmotivet gav mig idéen: ideal vs. virkelighed.
Derfor er min historie:
Den idyllisk fredfyldte ro bliver afbrudt af at et af bordbenene pludselig bukker under og knækker, og al den lækre frugt ender på det støvede beskidte gulv. Moralen er: Selv de mest idylliske billeder, må en dag krakelere. Og en side morale: man behøver ikke altid at tage livet så alvorligt.
Processen
Første idégrundlag til et storyboard, udviklede vi så at sige i fællesskab ved vores bord. Vi brainstormede vores forskellige idéer i plenum, og fik alle sporet os ind på en grundhistorie til vores individuelle projekt. Vi havde det selvfølgelig også mægtig sjovt imens :-).

Min sidemand havde svært ved at forestille sig processen, så det var en gylden mulighed for at øve sin evne til at udarbejde sin proces (ses til højre på storyboarded).
Adobe Photoshop (PS)
En lille disclaimer: Det skal siges jeg aldrig har arbejdet i Adobes softwares før, så meget af min tid er gået med at forstå programmernes kompleksitet, og hvordan jeg kan bruge det. Derfor er der emner der misser målet og emner der bare fungere. Min erfaring er overført fra anden software.
For at få “statister” til animationen, skal billedet skæres ud i dele der kan animeres. Det efterlader naturligt nogle huller i min baggrund som kræver en lap. Før i tiden ville man bruge Stamptool og Healtool til at fikse sådan nogle fejl, men nu har vi content-aware fill (CAF), som kan begge ting, og introducere “nye” pixels til at maskere hullet. Det analysere billedets indhold (content) og bruger diffusionsbaseret AI til at genere de nye pixels. Man kan med fordel bruge den AI drevet Object Select til at vælge det grove omrids af dine ønskede motiver.

Jeg vil gerne tilføje at værktøjerne under Select and Mask tool kan varmt anbefales at mestre. Der kan man nemt tilpasse og finpudse sin cut-mask. Det gjorde Cut-processen meget hurtigere.
Nogle af frugterne overlapper hinanden på billederne, så de krævede at jeg selv reproducerede den manglende del. Forsøgte med content-aware fill, uden held, så derfor måtte de genskabes i hånden:

Meget at genskabelsen foregik ved hjælp af stamping-tool (overfør pixels fra et sted, til et andet), blur-tool (sløring af motiv) og noise-filter (genere støj i pixels). Noise-filteret var meget vigtigt, fordi de efterbehandlede objekter skulle gerne ligne de ubehandlede. Det kræver noise, at mimere virkeligheden. Virkeligheden er noisy…
Baggrunden skal også skilles fra forgrunden, og det kan man nu gøre ved hjælp af CAF. Det viste sig at være en hurtigere proces at indsætte det samme billede på ny, fjerne alle frugterne med CAF, med prompten “remove fruits”, for derefter igen at bruge CAF til at udvide mit lærred med promten “empty room”:

Ved hjælp af Adobe Libraries (AL), kan man nemt linke sine filer på tværs af projekter. Grunden til man gerne vil linke sine filer er i situationer hvor man har udarbejde noget i PS og finder detaljer i filen, i eksempelvis AE, som ikke er passende, kan man hurtigt hoppe tilbage i PS og rette fejlen, som automatisk retter den i AE. Hele mit projekt blev organiseret ved hjælp af Adobe Libraries. Det sparede en masse spildtid ved at gemme, flytte, indsætte og opdatere gang på gang. Adobe Libraries = hurtigere arbejde og bedre kvalitetssikring.
Adobe After Effects (AE)
Ifølge storyboardet skal frugterne falde på gulvet, når bordet knækker. Det introducere nogle nøgleudfordringer, hvor mange er hentet fra 12 principles of animation:
- Staging
- Hvor står de forskellige elementer i framingen
- Anticipation & Exaggeration
- Byg op til handlinger, for at tydeliggøre handlingen og støtte seeren
- Feedback & Appeal
- Lyd, lys, effekter, kamera til at understøtte til billedet
- Aktion vs. Reaktion – Timing
- “If this does this, that happens”
- Tyngdekraft
- Objekternes grundlæggende bevægelse
- Ease In, Ease Out
Det er her Adobe After Effects skal løse udfordringerne, og lave vores film.
Min scene er en 2.5D-scene. Det vil sige at jeg har placeret alle mine 2D-objekter i et 3D space. Det betyder jeg kan bruge kameraets perspektiv til min fordel:

Det giver mig blandt andet disse muligheder:
- Parallax effect
- Adskillelse af forgrund og baggrund ved hjælp af forskellige afstande til kameraet = forskellig bevægelse
- Fokusstyring
- Zoom
- Bokeh – Mulighed for at stille aperture (hvor meget bladene i linsen åbner) = hvordan man sløring opfører sig
- Generel kamerasimulering
Staging & Feedback
Alle objekterne vi forarbejdede i PS kan nu importeres til AE ved hjælp af AL (Jeg tjekker bare om du stadig er med, hihi). Fordi vi allerede har sat vores generelle setting op (2.5D), kan vi bruge tiden på at placere vores objekter korrekt. Dvs. afstand til kameraet, placering i framingen og lys-styring. Jeg har brugt én lyskilder til at illuminere min scene: Ambient Light.

Det betyder at det er et “blødt” lys som udsende lys i alle retninger. Årsagen til man gerne vil belyse sin scene, er at man selv kan bestemme lysets tone og udformning. Som støtteeffekt til lyset har jeg indlagt “god-rays”. Det er de lysstråler man kan se når man er ude og gå i skoven, og solen skyder sine karakteristiske stråler ned mellem blade og trækroner. Se eksempler her: God-Rays. God-rays kan også bruge til at understøtte kamerabevægelse og miljødynamik. God-rays kan laves hurtigt i AE, ved at ligge CC Light Rays oven på et Fractal Noise output:

Derefter bruges en firkantet shape til strålerne og styrer strålernes bevægelse med direction.

Lyddesign er meget vigtigt for animationer. Jeg har valgt at håndplukke lydeffekter fra https://openverse.org/, som alle er licenseret til fri brug, af enten kreditering eller simpel CC0 – public domain. Jeg har valgt at der ikke er noget som ikke har lyd, hvilket ikke altid er det rigtige, men fordi maleriet var naturalistisk, syntes jeg lyden også skulle være det. Hvis man lytter godt efter, kan man høre: støve falde på gulvet, frugternes interaktion med træ, usete ting, som bordbenet der knækker, etc. Det har alt sammen til formål at skabe feedback til billedet, som forstærker effekten af animationen til seeren.
For at give en effekt af kaos, er kameraet sat til at følge bordet. Det skulle give en “drunk” effekt, og gøre seeren lidt søsyg. Det giver også nogle skæve linjer i framingen til sidst, hvilket skal understøtte historiefortællingen.
En detalje værd at nævne er brugen af støv til sidst i videoen. Det er stockvideo af støv, som er optaget på en alpha-baggrund (alpha = gennemsigtig). Den gennemsigtige baggrund gør det muligt at bruge videoen med et blending mode som add, som beholder alpha-kanalen og farven fra originalvideoen. Den kan derefter ligges over videoen.

Anticipation & Aktion vs. Reaktion – Timing
For at få statisterne (frugterne) til at bevæge sig overbevisende, har jeg valgt at bruge et null-object som udgangspunkt for min emulering af // Aktion vs. Reaktion //. Null-objektet er altså min “puppet-master”. Alle bevægelser jeg ønsker mine frugter skal lave, kommer fra dette null-object. Jeg kalder det en emulering, fordi jeg bruger håndlavede keyframes til at bygge grundstenen for bevægelsen. Hvis det skulle være simulering, skulle input til transforms af objekterne komme fra eksempelvis et script eller et plug-in der simulere fysikken. Grunden til det er smart at gøre sådan, er at jeg kan opfylde flere aspekter af animationsprincipperne på samme tid:
- styre timingen for hele sættet i et objekt. Det får animationen til at virke overbevisende.
- randomize bevægelserne, så de alle virker mere naturlige
- opbygge anticipation ved hjælp af sound-to-keyframes
Objekterne skal alle sammen have varierede bevægelser, som er opnået ved at bruge expression-strings:


I eksemplet ovenfor henter objektet sit input til bevægelse på y-aksen i dette hierarki:
- forud-genereret input
- lag
- parameter
- funktion
- parameter
Først henviser jeg til laget som jeg gerne vil hente data fra. Derefter definere jeg hvilket parameter jeg leder efter, og til sidst en funktion som definere databehandlingen.
Således:
- seedRandom (index, timeless = true);
(thisComp.layer("Fald - Tyngde").transform.xPosition)valueAtTime(time-random(0.005,0.255))*1.1+(transform.xPosition-179.5)

Skrevet i prosa gør jeg således i listen ovenfor:
Først generere jeg et input til min tilfældighed. Computere kan ikke så godt håndtere sand tilfældighed, så for at efterligne tilfældighed bruger vi en tilfældighedsgenerator = seedRandom (*). Inde i parenteserne siger jeg at inputet til generatoren er index
. Det er det forløbende nummer lag får i listen i AE
Det vil sige at alle objekter der får denne expression-string på sig, vil have et forskelligt input = randomiseret, fordi ingen lag kan have samme lagnummer.
Jeg vil gerne have data fra laget “Fald Tyngde”. Det er det lag jeg bruge som “puppet master” (null-objektet). Derefter definere jeg at jeg gerne vil bruge de data den udsender på x-positionen. Resten af expression-stringen "valueAtTime(time-random(0.015,0.045))*1.1+(transform.xPosition+7)" henvender sig til hvad jeg gerne vil gøre med dataen på laget fersken. I funktionen definere jeg at jeg gerne vil trække fra med en tilfældig tidslænge på mellem 0.005 og 0.255 sekunder –
random(0.005,0.255) fra animationens start
valueAtTime(time-. Derefter vil jeg gerne fremskrive den beregnede tidsforskydning med 10%
*1.1. Til sidst tager jeg højde for de 2 objekters forskellig x positioner, ved trække (“Fald – Tyngde”) x position
fra objektets egen x position
(Fersken). Det sikrer at mit lag ligger hvor det startede, og ikke bare kopiere “Fald – Tyngdes” x position, og derved ligger sig oven i den.
Det lille “wiggle” kommer fra at kæde lyden fra knirket sammen med et wiggle-pluggin, så amplituden af lydbølgerne bliver til bevægelse hos frugter og bord.

Det generere et lag som indeholder keyframes, baseret på lyden, man kan bruge som input til andre parametre, på andre objekter.
Refleksioner og nye erfaringer
Der var flere ting som blev droppet pga. manglende erfaring og tid. Jeg ønskede at ligge dynamiske skygger på sættet, så alle objekter interagerede med lyset. Desværre ligger funktioner som disse bag en betalingsvæg til plugins, som eksempelvis Maxon 4D Cinema. Det kræver altså at man 3D-animere usynlige objekter bag de 2 dimensionale objekter, og bruger deres skygge. Efter at have brugt alt for meget tid på skygge arbejde, indså jeg heldigvis at jeg måtte droppe den del. Jeg ønskede også at bevægelserne kunne have været nærmere virkeligheden, men min erfaring med AE var cirka 1 time, da jeg var 1 time inde i projektet. Man kunne også bruge software som Newton4 til at simulere fysik, desværre så koster det bare 150 euro+.
Mit ambitionsniveau var rigtig fint ud fra det jeg ønskede at lære. Jeg føler jeg har lært utroligt meget. Ja – det fremgår vel også tydeligt af indlægget her.