CS248 - Introduction to Computer Graphics

Kursutvärdering 93/94

Gunnar Farnebäck


Kursansvarig:

Prof. Marc Levoy

Kurslitteratur:

Foley, van Dam, Feiner and Hughes, Computer Graphics: Principles and Practice, Second edition, Addison-Wesley En verklig tegelsten med 1100 sidor. Genomgående utmärkt med undantag för vissa måttligt intressanta kapitel.

Kursinnehåll:

Hardcopy and display technologies, human color vision, colorspaces for graphics, frame buffers, colormapping, dithering, paint programs, human spatiotemporal acuity, grayscales, gamma correction, user interface design, windowing systems, scan conversion of lines and polygons, 2D clipping, antialiasing techniques, digital image compositing, 2D transformations, modeling hierarchies, 3D transformations, planar projections, perspective viewing, 3D clipping, visible-surface determination, Z-buffer, ray tracing, local illumination models, polygon mesh shading, texture synthesis, transformation, resampling, global illumination, distribution ray tracing, radiosity.

Förkunskaper:

Linjär algebra (vektoralgebra), C-programmering. Kunskaper om C++-programmering kan göra livet enklare i projekten.

Föreläsningar:

Välförberedda och innehållsrika. Gick igenom teorin för kursen.

Övrig undervisning:

Office hours i vanlig ordning. Utlokaliserade till grafiklabbet vid annalkande projektinlämningar. Centraliserade till review sessions ett par gånger. På grund av det stora antalet deltagare hade professorn inte färre än 3 Teaching Assistants.

Inlämningsuppgifter:

Inga utöver programmeringsprojekten.

Programmeringsprojekt:

Fyra programmeringsprojekt som i varierande grad byggde vidare på varandra. Det var tillåtet att jobba ensam eller i grupp om två personer. För varje person utöver den första var man tvungen att implementera en extra "bell and whistle". Jag jobbade ensam med de här projekten.

1. Paint program

Implementation av ett "enkelt" målningsprogram. Huvudsyftet var att vi skulle bekanta oss med den plattform vi fått för interaktion mot det omgivande fönstersystemet (X). Uppgiften bjöd dock på en del trixande som att själv ordna markör i sina fönster och få rimligt snabb respons på musförflyttningar.

2. Polygon scan conversion

Interaktiv specifikation och modifikation av 2D-trianglar (och som bell allmänna polygoner och tjocka linjer) samt scan conversion av desamma med krav på "perfect meshing". Därutöver dessutom antialising av det uppritade.

3. Z-buffer renderer

Specifikation av vy, transformation och klippning av 3D-trianglar, Z-buffring och supersampling (huvudsakligen för antialiasing men som bell också för depth of field och motion blur). Byggde vidare på den scan conversion som skrivits i projekt 2.

4. Phong shader

Utvidgning av projekt 3 med Phongs normalinterpolation och belysningsmodell samt texture mapping.

Jag gick till våldsam överdrift och gjorde en massa bells and whistles som jag egentligen inte behövde på de två första projekten vilket resulterade i 133 poäng av nominellt 100 möjliga på båda (33 resp. 32(!) extra credits) dessa. Det ledde också till att kursansvariga ville lägga upp mina program som demoprogram för att inspirera övriga kursdeltagare. :) (Vilket för övrigt också verkade lyckas.)

På de två sista projekten gjorde jag också en hel del arbete utöver vad man behövde men utan att bry mig om vad som gav extra credit. I synnerhet utvecklade jag det språk som jag i föregående kurs använt för shading expressions till att nu också kunna definiera rörelse. Detta gjorde det möjligt att göra animationer vilket var en tillgång i tävlingen efter kursen.

Policy för samarbete och sen inlämning:

Samarbete enligt ovan, två fria late-days och därefter 10% avdrag per dag. Sendagarna behövdes dock aldrig.

Midterm:

2 timmar, closed book & notes. 5 flervalsuppgifter (varav en utan korrekt svar...), 5 korta uppgifter och 4 något längre uppgifter. Testade kunskaperna bra.

Final:

Nej.

Sammanfattning:

Mycket bra introduktion till datorgrafik. Omfångsrik men huvudsakligen av orienterande karaktär. Endast de delar som ingick i projekten blev studerade på djupet. Projekten var mycket givande men i minst samma utsträckning arbetskrävande. Bra datorer (14 SGI Indigo + möjlighet att med sämre prestanda använda andra arbetsstationer) om än väldigt överbelastade dagarna innan projekten skulle in.

En kul detalj i den här kursen var att Lisa Forssell som jag labbat tillsammans med i två tidigare datorgrafikkurser nu var Teaching Assistant (hon läste kursen förra året och till skillnad mot mig i rätt ordning relativt de andra). Därigenom hade vi tre svenskar som läste kursen faktiskt en TA som pratade svenska. Det kan man kalla service...

Ett stimulerande inslag var naturligtvis den extra moroten med en tävling, som gick av stapeln direkt efter demonstrationen av sista projektet, mellan de bilder man lyckats göra med sina program. Jag lyckades vinna tävlingen, inte minst genom min animation av en exploderande vas. Tyvärr hade jag inte tid att utnyttja priset, en resa till Siggraph '94 i Orlando i slutet av juli.