Esitatud uus füüsikaprotsesside simuleerimise mootor Box3D

Erin Catto, Box2D projekti looja, teatas uue füüsikamudeli mootori Box3D väljatöötamisest, mis on Box2D forkk, millel on identne arhitektuur, kuid mis on üle töötatud ja laiendatud kolmemõõtmeliste mängude kasutamiseks. Projekti kood on kirjutatud C keeles ja jagatakse MIT litsentsi alusel. Toetatakse kogumist Linuxile, Windowsile ja macOS-ile.

Box3D mootori loomine toimus Kintsugiyama stuudio arendustöös uue 3D-laskmise mängu The Legend of California nimel, kus Erin osaleb. Mängus kasutatakse Unreal Engine mängumootorit, kuid arendajad polnud rahul seal pakutud standartse füüsikamootoriga Chaos. Probleemideks olid gyroskoopiliste pöördemomente arvestamise puudumine (peened objektid pöördusid ebanormaalselt kaua), pidev kokkupõrgete tuvastamine (ebarealistlikud kukkuvate puude käitumine) ja madal jõudlus sadu tuhandeid objekte töötlemisel.

Alguses plaaniti probleemid lahendada Jolt füüsikamootori fork'iga, kuid seejärel, Rubikoni mootori looja soovitusel, kellel on kogemus mängus Half-Life, põhines arendatud hobi korras lihtsustatud versioonil Rubikon-Lite, mis oli ümber töödeldud, kasutades Box2D-st pärinevat koodi ja optimeerimisi, et sobitada olemasolevaid 3D-võimalusi Box2D mootori arengutega. Lõpptulemusena asendati peaaegu kõik Rubikon-Lite'i API-d, andmestruktuurid ja algoritmid Box2D koodiga, samas kui Rubikon-Lite'ist jäid alles vaid kumerate ümbrike koostamise ja 3D-kokkupõrgete töötlemise algoritmid. Saadud mootorit, Rubikon-Lite autori ja Kintsugiyama ettevõtte teadmisel, otsustati avaldada kui eraldi avatud projekt Box3D.

Praegu on välja antud Box3D 0.1 esimene väljaanne, mida märgitakse kui alfa-versiooni kvaliteediga. Peamine planeeritud funktsionaalsus on teostatud, kuid dokumentatsiooni ja testimise täiendav töö on vajalik. Peale mängu The Legend of California on uus mootor juba kasutusel mänguplatvormil s&box, avatud mängumootoril Esoterica ja mitmikmängu kosmose mängus Space Game, mis on mõeldud 1000 mängijale.

3D mängude uues mootoris on lisatud võimalused, nagu kolmnurksete võrgustike (mesh) ja kõrguskaartide abil tekitatud kokkupõrgete arvutamine, mida kasutatakse maastiku genereerimisel. See võimaldas mängus The Legend of California ellu viia usutavaid puude langemise efekte voxel pinnale. Lisatud on toetus eelnevalt arvutatud (baked) koostöökokkupõrgetele, mis on kokku pandud mitmest lihtsast vormist, oluliselt vähendades ressursside kasutamist tohutu hulga tüüpiliste väikeste objektide kokkupõrgete simuleerimisel.

Box3D-sse üle kantud funktsioonide seas, mis olid varem Box2D-s saadaval:

  • Jätkuv kokkupõrgete määramine (objekti liikumise töötlemine kui pidev trajektoor), kokkupõrgete filtreerimine ja sündmuste genereerimine objektide kokkupuutes. Toetatakse sfäärilisi, kapsel- ja kestakujundeid kokkupõrgete määramiseks. Optimeeritud SIMD-käskude abil objekti kokkupuute töötleja.
  • Sub-stepping lahendaja simuleerimise täpsuse tõstmiseks, jagades simuleerimise etapid mitmeks väiksemaks sammuks.
  • Graafide värvimise meetodi kasutamine suure ühendatud objektide gruppide töötlemiseks.
  • Isiku kontroller, mis vastutab liikumise, kokkupõrgete ja isiku suhtlemise töötlemisega ümbritsevate objektidega.
  • Kiirte jälgimise, kuju jälgimise ja kokkupuutepunktide kontrollimise tugi ümbritseva ruumi skaneerimisel. Andurite süsteem objektide avastamiseks ruumis.
  • Soft Step Solver tahkete kehade füüsika arvutamiseks keeruliste interaktsioonide korral.
  • Tugi mitteaktiivsete või staatiliste objektide rühmade olekute külmutamiseks ressursside säästmiseks.
  • Tugi erinevatele ühendustele ja objektide vahelistele sidemetele, sealhulgas hingedele, vedrudele, mootoritele, keevitusele ja ratastele, pakkudes igasuguste ühenduste paindlikku seadistamist. Kokkusurumise ja venimise jõudude arvutamine, millega objektid üksteisele mõjuvad.
  • Võime genereerida sündmusi objekti liikumise, peatamise või stabiliseerimise alguses.
  • Hookid mitme lõime töötlemiseks valikulise sisemise ajakava korral.
  • Kasutamine topelt tüüpi koordinaatide jaoks, mis võimaldab luua tohutuid maailmu.
  • Platvormideülesed determinism, mis tagab identsete tulemuste saamise erinevates riistvaraplatvormides.
  • Toetab simuleerimise salvestamist ja taasesitamist.
  • C API ja C kood, mis vastab C17 standardile.

Tulevikus on plaanis laiendada karakterite liikumisega seotud võimalusi, täiustada „varjude” kokkupõrgete (ghost collision) vältimise mehhanisme, teha optimeerimisi ja parandada ühenduste töötlemist (joint solver). Repositooriumis kavatsetakse pakkuda võimalust saata pull-päringuid muudatustega kogukonna esindajatelt pärast autoriliste õiguste üleandmise lepingu (CLA) allkirjastamist.

Vaata videot


Allikas: opennet.ru
Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster