Sammanfattning Block 4

Bakgrund

Med hjälp utav olika matematiska algoritmer har spelvärlden kunnat skapa spel som utspelar sig på en yta som är mycket större än man någonsin kan tänka sig.

Det klart nyaste exemplet som finns på spel med en spelvärld som genererats fram är Minecraft där olika algoritmer räknar fram världens form utseende och funktionalitet.

Det jag ville undersöka under detta block är ett par algoritmer som kan användas vid generering utav spelvärldar, Perlin Noise och Brownian Motion.

Den undersökande biten handlar om hur algoritmerna fungerar, hur det kan användas tillsammans och hur jag kan skapa en guide till dessa algoritmer för andra intresserade.

Jag har också planer på att använda det jag lär mig om dessa algoritmer i mitt kandidatarbete.

Frågeställning:

På vilket sätt kan man skapa en guide till Perlin noise och Brownian Motion?

Syfte:

Att på ett undersökande sätt utforska hur dessa algoritmer fungerar och producera en förklarande guide.

Metod:

Ta reda på hur Perlin Noise och Brownian Motion fungerar och återskapa dessa programmatiskt.

Sedan fokusera på att undersöka möjliga bra sätt att förklara dem på.

Och hitta exempel och metoder att förklara dem på.

Sedan att kompilera en guide baserat på mina efterforskningar.

Literär studie utav Perlin Noise och Brownian Motion.

Utforskning igenom att programmatiskt återskapa dessa algoritmer.

Kunskapsmål:

Utvecklat mitt sätt att förklara och förmedla information.

Kunna redogöra för hur Perlin Noise och Brownain Motion fungerar och vilka applikationer dessa kan ha.

Fördjupa och eller bredda mina professionskunskaper i digitala medier.

Algoritmerna:

Brownian Motion

Jag började med ett fokus på Brownian Motion eftersom min bakgrunds research menade att det var en mer lättförstådd algoritm iallafall i den form som jag behagade använda den alltså för generering utav 2D mönster.

Det gick ganska snabbt att få ihop en bra bild om hur den fungerar och bakgrunden till dess upptäckt.

Den upptäcktes utav Robert Brown som var botanist och studerade pollen. Han la pollenpartiklar i vatten för att försöka hålla kvar dem under sitt mikroskop då han noterade att de rörde sig på ett mycket speciellt sätt och hoppade fram och tillbaka han skrev ner sina observationer i en rapport publicerad 1828.

Sedan glömdes de i princip bort tills att Einstein konstaterade att partiklar rör sig enlight ett speciellt mönster som är mycket slumpmässigt då de blir påverkade utav andra partiklar som krockar med dem så att de studsar runt.

Applikationen detta har inom datorgrafik är att om man återskapar en partikel i from av en pixel och sedan studsar man runt den med hjälp utav en slumpgenerator och ritar ut ett spår vart än den partikelpixeln rör sig så får man fram bilder som ser ut såhär:

Weighteds

Så fort jag hade skrivit ett program som kunde generera dessa bilder så började jag att forska om Perlin Noise som uppfans utav Ken Perlin under mitten utav 80-talet.

Perlin Noise – Del 1

Det är en algortim tillsammans med sin efterträdare Simplex Noise är mycket kända för sin förmåga att generera mjuka brus bilder som kan användas vid bland annat terräng generering.

Jag fokuserade på hur Perlin Noise fungerade och lämnade den mer optimerade Simplex Noise bakom mig.

Det tog tid att få fram några vättiga renderingar efter all research jag gjort så hade mina försök att återskapa algiritmen misslykats med om män spännande resultat fortfarande relativt oanvändbara bilder.

Pedagogik

Jag passade på att göra lite research innom pedagoggik för att inte hamna efter men det känndes svårt att koncentrera sig på att hiatta bra literatur efter mitt ganska långvariga misslykande med Perlin Noise.

Jag läste delar ur lite rapporter för att försöka få lite bra tips på hur jag skulle kunna formulera min guide på ett lärorikt sätt.

Jens hjälpte mig också och föreslog att jag skulle kolla upp begrepp så som constructive alignment och jag hittade en del information och fann den intressant men svår att följa ordagrann för just guide skrivande eftersom constructive alignment är ett lite mer övergripande koncept som handlar om att studenten ska riktas in på att lösa verkliga problem med en form utav tydlig röd tråd.

Men jag tog till mig agendan att det är bra med verkliga exempel och att få lösa riktiga problem.

Under tiden jag researchade pedagogik så fann jag också en ny källa för information om Perlin Noise som var lite mer vinklad till verkliga applikationer då den källan jag misslyckats att skapa var mer inriktad åt det mer matematiska hållet.

Hemsidan jag hittade är skapad utav Elias. H. Och han använder sig utav något som kallas för Pseudo codevilket är ett sätt att destillera ner en algoritm till olika steg som måste utföras och representera de som ickefungerande men beskrivande programkod. Detta hjälpte mig något otråligt eftersom jag är programmerare så hade jag lätt att förstå hur saker och ting hängde ihop men på ett sätt som var anpassningsbart hur man än ville använda det.

Jag bestämde mig för att kolla upp pseudokod kod och se om det används på andra ställen och visst gör det det, på universitets nivå är det vanligt att man förklarar algoritmer med hjälp utav pseudokod kod så jag passade på att ta med det i min guide.

Perlin Noise – Del 2

Med min nyfunna information så kunde jag konstruera en ny perlin noise algoritm som inte bara fungerade men som hade en mycket mer lättförstådd med mindre delar i processen.

De bilder jag nu kunde generera fram var perfekta för att användas till Terräng generering.

Perlin1D_1024_6

Om man jämför med de bilder jag genererat innan så ser man en tydlig skillnad

PerlinNotWorking

Resultat:

Guiden jag producerade bygger på ett par relativt enkla riktlinjer.

Jag började med att kort beskriva vad som kommer att gås igenom för att lägga grunden för en bra struktur. Jag ger en kort bakgrund till ämnet och hur det uppkom men inte för specifikt för att hålla fokus på förståendet.

Jag lägger upp ett tanke exempel i form utav något som är mer vardagligt för att det ska vara lätt att visualisera. Och förklarar ett händelseförlopp som mynnar ut i resultatet utav händelseföljden.

Sedan förtydligar jag igenom att visa upp lite snällt kommenterad pseudokod kod som är mer konkret än vad mitt exempel är.

Jag tar sedan upp lite problematik och beskriver möjliga lösningar.

Allting fokuserat på att bygga upp förståelsen för hur det fungerar och hur det kan användas.

Efter att ha förklarat var och en utav algoritmerna för sig ger jag ett exempel på hur de kan användas tillsammans för att skapa en koppling mellan det jag precis pratade om och de resultat man kan förvänta sig när man har fullbordat sitt arbete med att tolka guiden och programmera verktygen.

Länkar med källkoden till mina egna verktyg jag skapat utifrån det jag lärt mig och länkar till informationen som jag använde.

Min guide går att hämta härifrån: https://practicalproblem.files.wordpress.com/2014/01/guide1.pdf (Ville gärna ha den i inlägget men den fick hamna som en länk)

Reflektion:

Tanken som ligger i topp nu i mitt huvud är nog om jag inte har haft ett lite felvridet fokus i min undersökning.

Det jag ville få ut ur mitt arbete var just förståelsen för dessa algoritmer jag arbetat med och inte alls lika mycket själva skrivandet utav guiden och den pedagogiska research som jag har behövt göra.

Med andra ord undrar jag om jag inte skulle ha valt en annan typ av frågeställning. Även om jag är nöjd med min guide till Perlin Noise och Brownian Motion så har jag ganska svårt att tillexempel bevisa att min guide är skriven på ett bra sätt förutom då att det jag beskriver i den bevisligen fungerar i och med att jag har byggt verktygen som renderar dessa matematiska konstverk.

Det jag känner mig nöjd med för den mesta delen är det jag har lyckats förstå hur Perlin Noise fungerar vilket kändes ganska långt borta när jag började. Jag har också haft en del svårigheter med att finna ordentliga referenser jag upplevde en känsla av att det inte var lönt att försöka låna böcker ifrån Karlskrona om pedagogik och så vidare eftersom det var så kort tid kvar och att pedagogik inte ligger inom varken mitt intresseområde eller mitt professions område.

Men det som jag har lärt mig om dessa algoritmer i deras procedurella form kommer absolut till stor hjälp vid framtida projekt och det är nog dom och den förståelse som jag har fått för dom som gör så att det känns värt det.

Tills nästa gång jag ska skriva ett arbete måste jag tänka igenom det och planera det bättre så att så mycket tid utav arbetet går ut på att skapa information och förståelse som är mer användbart inom mitt område eftersom jag är en väldigt praktisk människa har jag också en aning svårt för att göra mängder med litterär research när jag vet själv att jag lär mig bättre utav att skapa och att inspireras utav det andra skapar i kombination med mina egna erfarenheter.

Referenser:

Uppsala Universitet. (2008). Constructive alignment (samband mellan förväntade studieresultat, undervisningsformer och examination). Hämtad 2014-01-11, från URL http://www.pu.uu.se/wiki/Constructive_alignment_(samband_mellan_f%C3%B6rv%C3%A4ntade_studieresultat,_undervisningsformer_och_examination)

Hansson, T. (2012). Pedagogik, undervisining och lärande. Köpenhamn: Bookboon. Ventus Publishing ApS.

Quach, Q. (2008, 07, jan). 11 Essential Tips to Writing the Ultimate Tutorial [Blogginlägg]. Hämtad frånhttp://www.dailyblogtips.com/11-essential-tips-to-writing-the-ultimate-tutorial/

Zucker, M. (2001). The Perlin noise math FAQ [Webbsida]. Hämtad ifrån http://webstaff.itn.liu.se/~stegu/TNM022-2005/perlinnoiselinks/perlin-noise-math-faq.html

Elias, H (2003). Perlin Noise [Websida]. Hämtad ifrån http://freespace.virgin.net/hugo.elias/models/m_perlin.htm

Information ifrån skaparen utav Perlin Noise, Ken Perlin Själv, här finns bakgrunden och excempel.

Perlin, K. (1999). Making Noise[Blogginlägg]. 
Hämtad från http://www.noisemachine.com/talk1/ (13-12-20)

Imformation om hur Brownian Motion kan framställas och användas.

Vidal. S. (2012,  02,06) Café Math : Brownian Motion (Part 1) [Blogginlägg].

Hämtad från http://www.cafemath.fr/mathblog/article.php?page=BrownianMotion.php (13-12-20)

Pedagogik, undervisning och lärande (intressant bpk om pedagogik och lite pedagogik historia)

Hansson, T. (2012). Pedagogik, undervisining och lärande. Köpenhamn: Bookboon. Ventus Publishing ApS.

Simpla tips för att skapa en tydlig och lärorik tutorial.

Quach, Q. (2008, 07, jan). 11 Essential Tips to Writing the Ultimate Tutorial [Blogginlägg]. Hämtad frånhttp://www.dailyblogtips.com/11-essential-tips-to-writing-the-ultimate-tutorial/

Advertisements

One thought on “Sammanfattning Block 4

  1. Hej Jonathan,
    Har läst din workbook med stort intresse och tycker du har gjort en bra undersökning och har ett pedagogiskt tänk kring begreppen Brownian Motion och Perlin Noise. Som du också kan utveckla vidare. Bra grund av guiden som du kan utveckla vidare i framtiden, för att få med fler funktioner och pedagogisk tanke kring innehållet.
    Kul att du försökt få in Construcitive Alignment i din undersökning vilket syns ibland. Fortsätt utveckla detta.

    ” Även om jag är nöjd med min guide till Perlin Noise och Brownian Motion så har jag ganska svårt att tillexempel bevisa att min guide är skriven på ett bra sätt förutom då att det jag beskriver i den bevisligen fungerar i och med att jag har byggt verktygen som renderar dessa matematiska konstverk.” – Tillämpat mer Constructive Alignment i guiden hade kanske blivit tydligare för dig?

    Tycker du ska vara nöjd med undersökningen då du har fått ihop en guide och fördjupat dig inom begreppen.

    ”pseudo -kod är programmkod som inte är designad för att fungera men beskriver hur någonting går till. Som ett påhittat programspråk.” – Förslag i inlägget hade uppskattats.

    Bra jobbat och tack för block 4. Lycka till med kandidatarbetet. =)
    /Jens

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s