Šis straipsnis – ankstesnio straipsnio „Fizika ir jos panaudojimas kompiuteriniuose žaidimuose” tęsinys. Šįkart, atsižvelgiant į praeito straipsnio komentarus, šiokį tokį dėmesį skirsime fizikos variklių taikymui moksliniams tikslams. Tada pradėsime nuosekliau nagrinėti fizikos variklių taikymo galimybes žaidimuose.
Norint geriau suprasti fizikos variklius, teks susipažinti su fizikoje taip plačiai naudojamomis skaliaro, vektoriaus, matricos ir tenzoriaus sąvokomis.
Skaliarą galėtume apibrėžti kaip dydį, apibūdinamą vienu skaičiumi. Fizikoje sutinkami tokie skaliariniai dydžiai, kaip masė, krūvis, laikas, varža, energija, galia ir kt.
Vektorius – tam tikras skaliarinių dydžių rinkinys. Norint atlikti algebrinius veiksmus su vektoriais, mes juos atliekame su atitinkamomis jų komponentėmis (komponenčių gali būti bet kiek). Fizikoje sutinkame tokius vektorinius dydžius, kaip atstumas, greitis, pagreitis, jėga ir kt.
Matrica – tai i eilučių ir j stulpelių turintis skaliarinių skaičių rinkinys. Matrica nuo vektoriaus skiriasi tuo, jog vektorius visada apibūdinamas viena eilute ir kiek norima daug stulpelių. Matrica apibūdinama viena papildoma dimensija, ir gali turėti be galo daug eilučių ir stulpelių. Kitaip tariant – matrica yra vektorių rinkinys.
Tenzorius – tai dar vieną papildomą dimensiją turintis darinys. Jeigu vektorių buvo galima įsivaizduoti kaip skaičių eilutę, matricą – kaip skaičių lentelę, tai tenzorių reikėtų įsivaizduoti kaip erdvinį skaičių stačiakampį. Tenzorius – tai matricų rinkinys. Moksle erdvinės figūros nelabai mėgstamos, tad tenzoriai čia vaizduojami ne kaip erdvinės figūros, o būtent kaip matricų rinkiniai.
Vis tik, modeliuojant nesudėtingus fizikinius vyksmus, dažniausiai apsiribojama skaliariniais dydžiais ir vos tris (kartais tik dvi) komponentes turinčiais vektoriais. Matricos ir tenzoriai kompiuteriniuose žaidimuose išvis nenaudojami, o moksliniuose tyrimuose naudojami payginti retai.
Pirmieji rimtesni fizikos varikliai buvo sukurti 1980 metais ir taikomi meteorologijoje. Siekiant sudaryti tikslesnes orų prognozes, buvo nagrinėjamos oro ir vandens srovės. Fizikos variklis naudojo vektorinę aproksimaciją ir bet kokią srovę suprato kaip tam tikros krypties vektorių. Modeliuojant šių vektorių tarpusavio sąveikas, buvo bandoma tiksliau numatyti srovių kitimą laike. Bandant paspartinti skaičiavimus neprarandant skaičiavimų tikslumo, buvo sukurti taip vadinami vektoriniai procesoriai. Šiaip ar taip orų prognozės tebėra netikslios. Sudarant orų prognozes kol kas nėra galimybių neatsižvelgti į nedideles oro temperatūros fliuktuacijas, kurios, prabėgus kelioms dienoms, gali duoti visiškai kitokius rezultatus, nei buvo tikimasi.
Panašia skysčių dinamika remiamasi ir kuriant naujas mašinas, lėktuvus ar laivus. Taigi daug esminių dalykų galima įvertinti dar iki transporto priemonės testavimo vėjo tunelyje.
Fizikos varikliai taip pat naudojami padangų protektorių gamykloje. Simuliuojant padangų elgesį esant lietui ar kaitrai, čia, atsižvelgiant į mašinos svorį, nustatoma, kokios medžiagos turėtų būti naudojamos padangoms gaminti.
Elektronikos specialistai, naudodami tą pačią skysčių dinamiką, modeliuoja, kaip turėtų judėti oro srovės kompiuterio viduje, kad kompiuterio vidus būtų vėsinamas optimaliai. Čia, žinoma, atsižvelgiama į didžiausio vėsinimo reikalaujančius prietaisus.
Baigiame trumpą fizikos variklių taikymo moksliniams tikslams apžvalgėlę ir peršokame prie „rimtesnių dalykų“ – fizikos variklių taikymo žaidimuose.
Pirmųjų žaidimų, naudojusių kokius nors fizikos variklius, kūrėjų galimybės buvo pakankamai ribotos, dėl labai ribotų kompiuterio galimybių. Siekiant, kad žaidimas žaidimo metu nestrigtų, žaidime sutinkami objektai buvo labai supaprastinti. Paprastai bet koks objektas būdavo apjuosiamas nematoma tik fizikos varikliui suprantama dar paprastesne figūra – kubu, sfera, cilindru ar kt. Nors skaičiavimai tapdavo paprastesni, tačiau pernelyg supaprastinus objektą, skaičiuojant įvarius kitų objektų susidūrimus su pastaruoju, judesiai būdavo atkuriami nelabai natūraliai. Galima įsivaizduoti, kaip judėtų paveikslėlyje pavaizduotas pingvinas po susidūrimo su kokiu nors daiktu, jeigu jį supaprastintume iki stačiakampio. Iš tiesų visi veiksmai, kuriuo žaidėjas atlieka su aplinkos objektais, yra veiksmai su įsivaizduojamomis paprastomis figūromis. Tais atvejais, kuomet per daug supaprastintas objektas pradeda elgtis nebenatūraliai, naudojama kelių paprastų kūnų aproksimacija. Sakykime, pingvino sparnus ir kojas galėtų atitikti keturi papildomi stačiakampiai.
Iki pat 2000 metų žaidimų realistiškumas, naudojant tuos pačius fizikos variklių principus, gerokai patobulėjo, tačiau kai kurie dalykai išliko visai nepakitę. Geras pavyzdys yra CounterStrike. Nušautas priešininkas paprastai nugriūdavo ant kelių, o tada nuvirsdavo ant pilvo. Jeigu šį užmušė netoliese vykęs sprogimas, šis nuvirsdavo kokia nors kita tradicine poza. Ir taip visada – jokios įvairovės. Žuvęs žmogus tapdavo visiškai neaktyvus, žuvusiojo būdavo neįmanoma kaip nors paveikti. Viena iš priežasčių, kodėl būdavo naudojamos standartinės žuvimo animacijos – per daug silpni procesoriai. Nuo 2000 metų pradėtos naudoti kietų kūnų sistemų fizika. Jos esmė ta, jog veikėją sudarantys paprasti objektai čia galėjo kaip nors sąveikauti vienas su kitu. Tarkim, žuvęs ir nugriuvęs žmogaus kūnas galėjo prisitaikyti prie aplinkos formų. Taip pat buvo galima realistiškiau atvaizduoti vieno veikėjo ar aplinkos poveikį kitam veikėjui.
Tuo metu dar nebuvo galima išspręsti daugelio realistiškumo pojūtį naikinančių problemų, kaip pirštų žaidime atvaizdavimas, sąnarių sukiojimasis. Taip pat veikėjai atrodė lyg iš molio nulipdyti – buvo visai nepanašu, jog jie galėjo turėti kokius nors skeletus. Nemažai vėliau sukurti žaidimai šių trūkumo neturėjo. Kietų kūnų sistemų fizika, leisdama įvairias veikėjų pozas, tame tarpe leido atsitiktinai kūnui susilankstyti ir į juokingas pozas. Kai kada tokie dalykai visai nepageidautini (sakykime, bandant sukurti labai siaubingą žaidimą). Atrodo, jog su šia pseudo-problema dar niekas rimtai nekovojo.
Havok Physics Engine – ko gero plačiausiai naudojamas fizikos variklis. Juo paremta daugiau kaip 150 žaidimų fizika; pradedant žaidimu Unreal Tournament: 2004 ir Half-Life 2, baigiant Company of Heroes. Tam tikra šio fizikos variklio versija buvo taip pat naudojama kuriant visas trilogijos Matrix dalis.
Lieka pristatyti šiuolaikinių fizikos variklių galimybes. Šią įdomią temą paliksime kitam kartui.
41 Komentarai
almiuxxx8
RESPECT Lanadau. Ir aš laukiu kito straipsnio 😀