Naturlagar i cyberrymden VT 2006 Lektion 6 Modellering Martin Servin Institutionen för fysik Umeå universitet -You want a WHAT?! An Earth Simulator! I don t know You ll have to solve its equations of motion every single day, arrange for natural disasters and evolution. It s a lot of work and responsibility. Are you sure you re up to it? I don t want to see you loosing interest in it after a few billion years.
Dagens föreläsning Fysikalisk modellering Elastiska deformerbara material Modellering med tvång Fordon och maskiner Kort om 3D grafik
Fysikalisk modellering Dela upp objektet i delobjekt partiklar stela kroppar deformerbara element Modellera växelverkan mellan delobjekten Krafter Tvång Vad är kostnaden? (I beräkningstid) Vilken del av beräkningen är dyrast? Hur skalar den med antalet delobjekt? O(n)?
Elastiska deformerbara material Exempel med fjäderkrafter Partikelsystem F ji Fjäderkrafter { x1,..., xi,..., x j,..., xn}, { v1,..., vi,..., v j,..., vn} F ij dv i mi dt = j F ij r' r Fij = κs( r L) + κd r r = x x, r' = v v i j i j r r
Olika fjäderkonfigurationer olika materialegenskaper struktur fjädrar skjuvnings fjädrar böjnings fjädrar
Numerisk metod Datastruktur X V,...,,...,,..., = x1 xi xj xn,...,,...,,..., = v1 vi v j vn Leap frog integration (ok för mjuka fjädrar) n+ 1/2 n 1/2 1 n V = V + M F t n+ 1 n n+ 1/2 X = X + V t Implicit integration (nödvändig för styvare fjädrar) struct spring(i) from to length kappa_s kappa_d spring(i).length=0.1; spring(j).from=3; n 1 n+ 1 V = M F t n n n A V = u n n n X = V + V t n n A = A ( F/ V, F/ X, XV, ) Baraff & Witkin Large steps in cloth simulations SIGGRAPH 98
Tillämpningar: elastiska material Geléklump Friktionsmodell
Tillämpningar: tyg Svårigheter: - tygkollision (veckning och skrynkling utan att fastna i sig själv) - snabb och robust (stabil i alla situationer) och samtidigt inte för elastisk
Tillämpningar: päls och hår Svårigheter: - formulera initialvärden (dvs frisyren) - snabb kollisionsmetod
Modellering med tvång Styva fjädrar styva ekvationer Tvångskrafter är ett alternativ Metod med många teknikaliteter, men generell naturlig väg för att hantera ledade objekt, interaktivitet och friktion (ragdoll, fordon)
Att använda tvångskrafter - repetition Formulera positionstvång c( x, R ) = 0 Härled hastighets- och accelerationstvång Inför tvångskraft F=F ext +F tv och använd a=f/m Låt tvångskraft vara energibevarande Beräkna tvångskraft ur Stega med rörelselagen c ( vx,,...) = 0 c ( avx,,,...) = 0 F v=0 tv c = 0 F tv = λn dv m = dt F Vid behov, inkludera errorkorrektion (dämpad fjäder) λ λ κ c κ c s d c( x, R ) = 0
Allmän metod (2D) NP objekt, N tvång c n =0 samlade i vektor c Tvångskraft kan uttryckas (med Jacobianen J) Ftv = T J λ J c n ni = X i Accelerationstvången ger matrisekvation för lambda 1 T JM J λ = d τ - vridmoment Ekvationen löses varje tidssteg och ger aktuell tvångskraft F tv Vid behov, inkludera error-korrektion λ λ κ c κ c s d 1 d= JM Fext Jv M = diagmi (,) F = ( F,) τ v = (, vω)
Exempel: punkt-till-punkt tvång Tvinga punkten x på en kropp att befinna sig i punkten p x= x + x = x +Rx 0 cm p cm p x 0 = c x p 1 0 v 0 = c = v+ ω xp = * 0 p ω x J x z y x p x cm J 1 0 0 0 = *, J * 0 = p 0 ( ω p) x x
Tvång för fordon och maskiner Olika tvång (joint = led) för att koppla samman stela kroppar BallSocket (eller spherical eller point-to-point) Hinge (eller revolute) Linear Universal CarWheel (Hinge2) Prismatic Angular FixedPath Lock joint (eller fixed joint) Ett tvång definieras typiskt av en eller flera positioner och axlar Joint limits begränsning av rörelsefrihet inom tvånget Drivers driver rörelse inom tvånget Avvikelse kan tillåtas med viss återställande dämpande kraft
1 punkt anges BallSocket joint (eller spherical eller point-to-point) Återstående frihet: Rotation kring punkten
Hinge joint (eller revolute) 1 punkt 1 axel Återstående frihet: Rotation kring axeln
Universal joint 1 punkt 2 vinkelräta axlar Återstående frihet: Rörelse kring resp axel
CarWheel joint (eller Hinge2) 1 punkt 2 axlar Återstående frihet: Rörelse kring resp axel
Lock joint Återstående frihet: Gemensam translation och rotation
Visualisering i 3D Illusion av 3D djup på 2D skärm Position i 3D till 2D skärmkoordinater Föremål har olika storlek på olika avstånd Skuggeffekter
Att skala en apelsin Tag en apelsin På avståndet r=1 upplever vi radien R 1 Förflytta den till ett avstånd r Apelsinen upptar en mindre del av synfältet Den upplevda radien, R u, är mindre Generellt uttryck Ru 1 r =1 = R1 R1 R r 1 Ru r R 1 u = R u r R 1 x + y + z 2 2 2 R 1 R u = R ( x x ) + ( y y ) + ( z z ) 1 2 2 2 0 0 0 där (x 0,y 0,z 0 ) anger observatörens position och (x,y,z) apelsinen
Skärmkoordinater y = y s Skärm y ( x, z ) u x u ( xyz,, ) Omvandla 3D koordinater till 2D skärmkoordinater Praktiskt att introducera zoom-faktor Avlägsna föremål får automatiskt lägre upplevd hastighet Skalning sker automatiskt y y s xu x x x x ys y y y u = xu = s Generellt uttryck: x x xu = κ y y z u = κ z z y y (x 0,y 0,z 0 ) anger observatörens position, K zoom-faktor 0 0 0 0
Skuggeffekter Enkelt sätt att ge ökad känsla av 3D och realism Lampa (nära punktkälla) z y x θ s x z Sol (avlägsen källa, parallella strålar) r s = [ x+ xy,,0] x= ztanθ s Generellt uttryck: r s y = [ x+ xy, + y,0] x= ztanθ sin( n30 ) y = ztanθ cos( n30 ) s s 11 12 1 10 2 9 3 x 8 4 7 6 5 n anger solens riktning i xy-planet och θ s vinkeln över horisonten
Exempel: roterande kub Definiera kubens hörn Loop - beräkna skärmkoordinater - rita ut - rotera kuben nya hörnkoordinater y y = y s Skärm x Demo: Roterande kub
Roterande kub