Spelutveckling 3d-grafik och modellering Grunder för 3d-grafik Blender Animering
Grunderna för 3d-grafik Positionering, transformationer Projektion, kameran Objekt i en 3d-värld Ljusmodeller för 3d-grafik Ljuskällor, lampor/lights Ljussättning lighting och shading
Positionering Koordinatsystem med 3 dimensioner x,y,z Allt positioneras med transformationer Objekt, lampor, kameran, osv Vanligen implementerade med matriser Matriser är effektiva att multiplicera ihop Byggs ofta upp i hiearkier En transformation är relativ till dess förälder Ordningen är viktig! Tre vanliga, oftast kombinerade Translation förflyttning /position Rotation Skalning
Projektion kameran En kamera är en vanlig liknelse Har en position och en orientering På samma sätt som 3d-objekt och lampor Var allt befinner sig relativt till kameran bestämmer vad som ritas ut på skärmen... plus en projektionsvolym FOV Field of View Near- och Far-clipping Perspektiv/ortografisk... och en viewport Det område på skärmen som grafiken ritas till
Objekt i 3d Solida objekt Övriga exempel: partiklar, dimma Består av en geometri/mesh och ett material Eller kombinationer av flera av dessa Positionerad i 3d med transformation(er) Geometri/mesh, består av Vertices, punkter i 3d-rymden (en vertex) Positioner relativt till objektets transformation Edges, kanter som förbinder punkterna Faces, polygoner Definieras utifrån de vertices som utgör hörnen
Material Vanligen ett material per objekt/mesh Definierar hur ljus reflekteras av en yta Färger och variabler för olika typer av ljus Vanligen multipliceras materialets färg för en typ av ljus med färgen på inkommande ljus Mer under Ljusmodeller snart Bestämmer ytans utseende tillsammans med eventuella texturer
Material Texturer En bild mappas till en eller flera polygoner Texturkoordinater (UV-koordinater) Finns vanligen ett antal standard- mappingar att använda i modelleringsprogram Varje vertex motsvarar en postition i bilden Kan genereras procedurellt Både bild och texturkoordinater Kan vara dynamisk Även andra effekter än direkt färg Tex bump-mapping för att ge ytan extra 3d-känsla
Ljusmodeller för 3d-grafik Ljuset brukar delas upp i tre klasser Ambient, diffust och spekulärt ljus Färgen på en pixel på skärmen bestäms av hur ljus reflekteras från den yta man ser Via materialet på ytan/objektet Allt ljus har fäger som beskrivs med RGB En kombination av rött, grönt och blått Ljuskällor förenklas till punkter Verkliga ljuskällor har en yta/volym
Ambient ljus En approximation av ljus från omgivningen Ljus som reflekteras från andra objekt runt Lyser upp ytor som inte belyses direkt av någon ljuskälla Dessa hade annars varit helt svarta Oberoende av position och riktning Ambienta ljuskällor påverkar allt lika Interagerar med material Kan ha en ambient färg eller reflektions-faktor
Diffust ljus (diffuse) Reflekteras diffust/jämnt i alla riktningar Intensiteten beror på vinkeln mellan ytans normal och det inkommande ljuset Större vinkel innebär mer utspritt ljus Interagerar med material Den diffusa färgen är grunden för ett material N θ N θ N Inkommande ljus
Spekulärt ljus (specular) Används för att simulera blanka ytor Reflekteras mer i den speglade riktningen Ger upphov till en highlight Interagerar med material Material har en spekulär färg Beskriver (tillsammans med ljuset) vilken färg en highlight får Samt faktorer för hur blank ytan är Tex shininess, hårdhet eller styrka Blankare yta ger mer mindre highlight
Ljuskällor Olika typer Directional, konstant styrka i en riktning Positional, effekt utifrån relativ position Spot-light, ljus fokuserat i en kon Vanligt för begränsade skuggor En eller flera färger Vanligen diffuse, specular och ambient Dvs en färg per typ av ljus enligt tidigare Motsvarar samma färger hos material Attenuation Hur snabbt dör ljuset med avståndet?
Ljussättning Räknar ut en total färg baserad på Materialet De lampor som belyser ytan Vypunkten, kamerans relativa position Vinklarna mellan ljuset, ytan och kameran Lägger ihop de olika typerna av ljus Ambient Diffuse Specular Ambient Diffuse Specular
Shading Hur applicerar man ljussättningen på en mesh? Dyrt att räkna ut för varje pixel Möjligt idag, med shaders Alternativ är att räkna ut färgen per polygon eller per vertex Normalen är viktig! Bestämmer hur diffust och spekulärt ljus reflekteras Finns eg bara en normal per polygon
Shading Man kan sätta/räkna ut normaler per vertex Tex genom att ta medlet på normaler för angränsande polygoner Ger möjlighet att använda Gouraud-shading, finns alltid Räkna ut färgen för varje vertex och jämna ut färgen över ytan Phong-shading, via shaders Jämna ut normalen över ytan och räkna ut ljuset för varje pixel
Blender Navigera miljön Skapa objekt Positionera objekt Editera mesh Material Texturer Textur-mappning Lampor Kameran
Animering Baseras på key frames och interpolering En animering består av ett antal frames IPO-kurvor i Blender (InterPOlering) Position och rotation vanligast Character animation Modellering i lager Vertex blending / skinning Direkt/invers kinematik
Modellering i lager Skelettlager Hierarki av ben och leder Rotationer och transformationer relativa förälder Skinnlager Geometrier och material Muskellager Knyter skinnlagret till skelettlagret
Skelettlager Trädstruktur Varje nod innehåller Namn Referens till förälder Translation relativ förälder Rotation relativ förälder Referenser till alla barn Rotnod Känd i globala koordinatsystemet Ev information om maximala rotationer Constraints, ges vanligtvis i Euler angles
Positionering av skelett Direkt kinematik (Forward kinematics) Explicit ange rotationen för varje nod Trädet traverseras från rotnod till lövnoder En kombination av alla transformationer och rotationer på vägen ger lövets transformation Pose Vector Alla noders rotationer vid en viss tidpunkt Definierar den fullständiga ställningen för en karaktär
Skelettanimering En animering behöver inte påverka alla ben Kombinera animeringar som påverkar olika ben T ex springrörelse på nedre delen av kroppen och kaströrelse på överkroppen Blanda flera animeringar på samma ben Motion blending Tex peka i en given riktning Genom att kombinera två pekrörelser med kända riktningar, och blanda dem med rätt vikter Övergångsanimeringar mellan två animeringar En blandning av de två som övergår från slutet av animering 1 till början av animering 2 Tex resa sig från sittande innan man börjar gå
Skelettanimering En animering består av key frames Key frames för skelettanimering Bara benens rotation behöver finnas med Benens längd/storlek finns lagrad i skelettet Motsvarar en (del av en) pose vector Delas upp i tracks eller motsvarande Ett för varje ben som berörs av animeringen
Skelettanimering Svårt producera realistiska rörelser Särskilt för människor Vi är extremt bekanta med människans rörelser Motion Capture Spela in verkliga rörelser Från tex en person Matcha inspelade punkter mot punkter på en modell Kan användas för att styra ett skelett som i sin tur att styra valfri modell
Skinn- och Muskellager Skinnlager Den geometri/mesh som utgör figurens yta Med tillhörande material Måste knytas till skelletet för att följa rörelser Muskellager Knyt varje vertex till ett ben Ange position och normal relativt till benet Varje vertex kommer att följa benet direkt Innebär defekter nära lederna Vi vill ha något bättre
Skinn- och Muskellager Knyt varje vertex till flera ben Samma vertex kan påverkas av flera ben Övergången mellan benen blir mjukare Geometrierna ser mer naturliga ut Kallas vanligen för skinning eller vertex blending
Muskellager Vertex Blending Varje vertex knyts till ett eller flera ben i ett modelleringsprogram Varje association har en vikt Alla vikter summerar till 1 Varje vertex har en position och normal relativt varje ben Beräkna position och normal genom att summera över alla ben v' v' n w v i i M i n i i 0 ( w M v resulterande hörnposition antalet ben i i i skalärvikt för ben i ) hörnetsposition relativt ben i transformationsmatri s för ben i
Muskellager Vertex Blending Kan komma till korta vid leder som kan vridas mycket Tex armbågen Använd viktutjämning Se till att hörn nära varandra bara har små skillnader i viktning Inte anpassat för grafikkortens standardhårdvara Tar en matris för varje vertex Vertex shaders kan användas Kan simulera en palett med matriser som varje vertex kan influeras av med en viss vikt Kan kombineras med pixeleffekter, såsom bump mapping Problem med kollisionsdetektion och skuggor eftersom bara grafikkortet har tillgång till den slutgiltiga geometrin
Invers Kinematik Invers kinematik ( Inverse kinematics, IK ) Motsatsen till direkt kinematik Position/rotation av lövnod ( end effector ) känd, lös rotationerna för noder mellan rotnod och lövnod När lämpar sig invers kinematik vid figuranimering? Interaktion Om en figur ska ta upp ett föremål, trycka på en knapp, etc Dvs, vi vet slutposition för handen, men inte hur vi ska sträcka armen för att ta oss dit Motion capture Låt säga att vi bara har tillgång till två sensorer, en för varje hand, men vill veta hur armbågen är böjd för att kunna rendera både armar och händer Modelleringsprogram Förenklar oerhört mycket för animeraren
Invers Kinematik Ett invers kinematikproblem kan ha noll, en eller flera lösningar Overconstrained Inga lösningar Underconstrained Flera lösningar Reachable workspace Den volym som end effector kan nå
Blender Animering Frames Keys Interpolering IPO-kurvor Character animation Armatures Bones Vertex groups Actions
Slut?