Fysik motor
En fysikmotor är en datorprogramvara som tillhandahåller en ungefärlig simulering av vissa fysiska system , såsom stel kroppsdynamik (inklusive kollisionsdetektering ), mjuk kroppsdynamik och vätskedynamik , för användning inom områdena datorgrafik , videospel och film ( CGI ) ). Deras huvudsakliga användning är i videospel (vanligtvis som mellanprogram ), i vilket fall simuleringarna är i realtid . Termen används ibland mer allmänt för att beskriva vilket mjukvarusystem som helst för att simulera fysiska fenomen, såsom högpresterande vetenskaplig simulering .
Beskrivning
Det finns i allmänhet två klasser av fysikmotorer : realtid och hög precision. Högprecisionsfysikmotorer kräver mer processorkraft för att beräkna mycket exakt fysik och används vanligtvis av forskare och datoranimerade filmer. Realtidsfysikmotorer – som de används i videospel och andra former av interaktiv datoranvändning – använder förenklade beräkningar och minskad noggrannhet för att beräkna i tid för att spelet ska svara i en lämplig takt för spel.
Vetenskapliga motorer
En av de första allmänna datorerna, ENIAC , användes som en mycket enkel typ av fysikmotor. Den användes för att designa ballistiska tabeller för att hjälpa USA:s militära bedömningar var artillerigranater av olika massa skulle landa när de avfyrades i olika vinklar och krutladdningar, vilket också stod för avdrift orsakad av vind. Resultaten beräknades endast en gång och tabellerades i tryckta tabeller som delades ut till artillericheferna.
Fysikmotorer har ofta använts på superdatorer sedan 1980-talet för att utföra beräkningsmodellering av vätskedynamik, där partiklar tilldelas kraftvektorer som kombineras för att visa cirkulation. På grund av kraven på hastighet och hög precision utvecklades speciella datorprocessorer som kallas vektorprocessorer för att påskynda beräkningarna. Teknikerna kan användas för att modellera vädermönster i väderprognoser , vindtunneldata för design av flyg- och vattenfarkoster eller motorfordon inklusive racerbilar och termisk kylning av datorprocessorer för att förbättra kylflänsar . Som med många beräkningsladdade processer inom datorer, är noggrannheten i simuleringen relaterad till upplösningen av simuleringen och precisionen i beräkningarna; små fluktuationer som inte modelleras i simuleringen kan drastiskt förändra de förutspådda resultaten.
Däcktillverkare använder fysiksimuleringar för att undersöka hur nya däckmönstertyper kommer att prestera under våta och torra förhållanden, med hjälp av nya däckmaterial med varierande flexibilitet och under olika nivåer av viktbelastning.
Spelmotorer
I de flesta datorspel är processorernas hastighet och spelandet viktigare än simuleringens noggrannhet. Detta leder till konstruktioner för fysikmotorer som ger resultat i realtid men som replikerar den verkliga fysiken endast för enkla fall och vanligtvis med en viss uppskattning. Oftare än inte är simuleringen inriktad på att ge en "perceptuellt korrekt" approximation snarare än en riktig simulering. Men vissa spelmotorer, som Source , använder fysik i pussel eller i stridssituationer. Detta kräver mer exakt fysik så att till exempel ett föremåls rörelsemängd kan välta ett hinder eller lyfta ett sjunkande föremål.
Fysiskt baserad karaktärsanimering använde tidigare bara stel kroppsdynamik eftersom de är snabbare och lättare att beräkna, men moderna spel och filmer börjar använda mjuk kroppsfysik . Mjuk kroppsfysik används också för partikeleffekter, vätskor och tyg. Någon form av begränsad vätskedynamiksimulering tillhandahålls ibland för att simulera vatten och andra vätskor samt flödet av eld och explosioner genom luften.
Kollisionsdetektering
Objekt i spel interagerar med spelaren, miljön och varandra. Vanligtvis representeras de flesta 3D-objekt i spel av två separata maskor eller former. En av dessa maskor är den mycket komplexa och detaljerade formen som är synlig för spelaren i spelet, till exempel en vas med eleganta böjda och ögla handtag. För hastighetsändamål används ett andra, förenklat osynligt nät för att representera objektet för fysikmotorn så att fysikmotorn behandlar exemplet vas som en enkel cylinder. Det skulle alltså vara omöjligt att föra in en stav eller avfyra en projektil genom handtagshålen på vasen, eftersom fysikmotormodellen är baserad på cylindern och är omedveten om handtagen. Det förenklade nätet som används för fysikbearbetning kallas ofta för kollisionsgeometrin. Detta kan vara en begränsningslåda , en sfär eller ett konvext skrov . Motorer som använder bounding boxes eller bounding sfärer som den slutliga formen för kollisionsdetektering anses vara extremt enkla. I allmänhet används en begränsningsruta för kollisionsdetektering med bred fas för att minska antalet möjliga kollisioner innan kostsamma mesh on mesh-kollisionsdetektering görs i den smala fasen av kollisionsdetektering.
En annan aspekt av precision i diskret kollisionsdetektering involverar framerate , eller antalet ögonblick i tiden per sekund när fysiken beräknas. Varje ram behandlas som separat från alla andra ramar, och utrymmet mellan ramarna beräknas inte. En låg bildhastighet och ett litet snabbt rörligt objekt orsakar en situation där objektet inte rör sig smidigt genom rymden utan istället verkar teleportera från en punkt i rymden till nästa när varje bildruta beräknas. Projektiler som rör sig i tillräckligt höga hastigheter kommer att missa mål, om målet är tillräckligt litet för att passa i gapet mellan de beräknade ramarna för den snabbrörliga projektilen. Olika tekniker används för att övervinna denna brist, till exempel Second Lifes representation av projektiler som pilar med osynliga bakre svansar längre än gapet i ramar för att kollidera med något föremål som kan passa mellan de beräknade ramarna. Däremot lider inte kontinuerlig kollisionsdetektion som i Bullet eller Havok detta problem.
Mjuk kroppsdynamik
Ett alternativ till att använda bounding box-baserade system för stel kroppsfysik är att använda ett finita element -baserat system. I ett sådant system skapas en 3-dimensionell, volymetrisk tessellation av 3D-objektet. Tessellationen resulterar i ett antal finita element som representerar aspekter av objektets fysiska egenskaper såsom seghet, plasticitet och volymbevarande. När de väl är konstruerade används de finita elementen av en lösare för att modellera spänningen i 3D-objektet. Stressen kan användas för att driva fraktur, deformation och andra fysiska effekter med hög grad av realism och unikhet. När antalet modellerade element ökar ökar motorns förmåga att modellera fysiskt beteende. Den visuella representationen av 3D-objektet ändras av det finita elementsystemet genom att använda en deformationsshader som körs på CPU eller GPU. Finita Element-baserade system hade varit opraktiska för användning i spel på grund av prestandaoverhead och bristen på verktyg för att skapa finita element-representationer av 3D-konstobjekt. Med processorer och verktyg med högre prestanda för att snabbt skapa de volymetriska tessellationerna började system med ändliga element i realtid användas i spel, med början i Star Wars: The Force Unleashed som använde Digital Molecular Matter för deformations- och destruktionseffekterna av trä, stål, kött och växter med hjälp av en algoritm utvecklad av Dr. James O'Brien som en del av hans doktorsavhandling.
Brownsk rörelse
I den verkliga världen är fysiken alltid aktiv. Det finns ett konstant Brownskt rörelsejitter för alla partiklar i vårt universum när krafterna trycker fram och tillbaka mot varandra. För en spelfysikmotor slösar sådan konstant aktiv precision i onödan på den begränsade CPU-kraften, vilket kan orsaka problem som minskad bildhastighet . Således kan spel försätta objekt att "sova" genom att inaktivera beräkningen av fysik på objekt som inte har flyttat sig ett visst avstånd inom en viss tid. Till exempel, i den virtuella 3D-världen Second Life , om ett objekt vilar på golvet och objektet inte rör sig längre än ett minimalt avstånd på cirka två sekunder, inaktiveras fysikberäkningarna för objektet och det fryser på plats. Objektet förblir fruset tills fysikbearbetning återaktiveras för objektet efter kollision med något annat aktivt fysiskt objekt.
Paradigm
Fysikmotorer för videospel har vanligtvis två kärnkomponenter, ett kollisionsdetektering / kollisionssvarssystem och den dynamiksimuleringskomponent som ansvarar för att lösa krafterna som påverkar de simulerade objekten. Moderna fysikmotorer kan också innehålla vätskesimuleringar , animationskontrollsystem och verktyg för tillgångsintegration . Det finns tre huvudparadigm för fysisk simulering av fasta ämnen:
- Straffmetoder, där interaktioner vanligtvis modelleras som massfjädersystem . Denna typ av motor är populär för deformerbar eller mjuk kroppsfysik .
- Restriktionsbaserade metoder, där begränsningsekvationer löses som uppskattar fysikaliska lagar.
- Impulsbaserade metoder, där impulser appliceras på objektinteraktioner.
Slutligen är hybridmetoder möjliga som kombinerar aspekter av ovanstående paradigm.
Begränsningar
En primär gräns för fysikmotorrealism är det ungefärliga resultatet av begränsningsupplösningarna och kollisionsresultatet på grund av den långsamma konvergensen av algoritmer. Kollisionsdetektering beräknad vid en för låg frekvens kan resultera i att föremål passerar genom varandra och sedan stöts bort med en onormal korrigeringskraft. Å andra sidan beror ungefärliga resultat av reaktionskraften på den långsamma konvergensen av typiska projekterade Gauss Seidel-lösare, vilket resulterar i onormal studsning. Alla typer av fritt rörliga sammansatta fysikobjekt kan visa detta problem, men det är särskilt benäget att påverka kedjelänkar under hög spänning och hjulförsedda föremål med aktivt fysiska bärytor. Högre precision minskar positions-/kraftfelen, men till priset av större CPU-kraft som behövs för beräkningarna.
Physics Processing Unit (PPU)
En fysikbearbetningsenhet (PPU) är en dedikerad mikroprocessor designad för att hantera fysikberäkningar, särskilt i fysikmotorn för videospel . Exempel på beräkningar som involverar en PPU kan inkludera stel kroppsdynamik , mjuk kroppsdynamik , kollisionsdetektering , vätskedynamik , hår- och klädsimulering, finita elementanalys och frakturering av föremål. Tanken är att specialiserade processorer laddar bort tidskrävande uppgifter från en dators CPU, ungefär som hur en GPU utför grafikoperationer i huvudprocessorns ställe. Termen myntades av Ageias marknadsföring för att beskriva deras PhysX-chip för konsumenter. Flera andra teknologier i CPU-GPU-spektrumet har vissa funktioner gemensamma med det, även om Ageias lösning var den enda kompletta som designades, marknadsfördes, stöddes och placerades i ett system uteslutande som en PPU.
Allmän beräkning på grafikprocessorenhet (GPGPU)
Hårdvaruacceleration för fysikbearbetning tillhandahålls numera vanligtvis av grafikprocessorenheter som stöder mer generell beräkning, ett koncept som kallas generell beräkning av grafikprocessorer ( GPGPU). AMD och NVIDIA ger stöd för stela kroppsdynamikberäkningar på sina senaste grafikkort.
NVIDIAs GeForce 8-serie stöder en GPU-baserad newtonsk fysikaccelerationsteknik som heter Quantum Effects Technology . NVIDIA tillhandahåller en SDK Toolkit för CUDA- teknik ( Compute Unified Device Architecture ) som erbjuder både låg- och högnivå-API till GPU:n. För sina GPU:er AMD en liknande SDK, kallad Close to Metal (CTM), som ger ett tunt hårdvarugränssnitt.
PhysX är ett exempel på en fysikmotor som kan använda GPGPU-baserad hårdvaruacceleration när den är tillgänglig.
Motorer
Realtidsfysikmotorer
|
|
Fysikmotorer med hög precision
- VisSim - Visuell simuleringsmotor för linjär och olinjär dynamik
Se även
- Spelets fysik
- Ragdoll fysik
- Proceduranimering
- Styv kroppsdynamik
- Mjuk kroppsdynamik
- Fysisk bearbetningsenhet
- Cell mikroprocessor
- Linjär komplementaritetsproblem Impuls-/begränsningsfysikmotorer kräver en lösare för sådana problem för att hantera flerpunktskollisioner.
- Finita elementanalys
Vidare läsning
- Bourg, David M. (2002) Fysik för spelutvecklare . O'Reilly & Associates.
externa länkar
- "Lista över fysikmotorer" . Databas . Digital Rune. 30 mars 2015 [2010]. Arkiverad från originalet den 9 mars 2016.