Një motor i ri për simullimin e proceseve fizike Box3D është prezantuar

Erin Catto, autori i projektit Box2D, shpalli krijimin e një motori të ri të simulimit të proceseve fizike Box3D, i cili është një fork i Box2D, me një arkitekturë identike, por i ripunuar dhe i zgjeruar për t'u përdorur në lojërat tridimensionale. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën MIT. Ndihmohet ndërtimi për Linux, Windows dhe macOS.

Motori Box3D është krijuar gjatë zhvillimit të studios Kintsugiyama për lojën 3D The Legend of California, në të cilën merr pjesë Erin. Në lojë përdoret motori i lojës Unreal Engine, por zhvilluesit nuk ishin të kënaqur me motorin fizik Chaos të ofruar nga ai. Problemet ndodhen për shkak të mungesës së marrjes parasysh të momentit gjiroskopik (objektet e hollë rotulloheshin natyrshëm gjatë) dhe zbulimit të vazhdueshëm të përplasjeve (siklet i padrejtë i pemëve që bien) dhe performancës së ulët gjatë përpunimit të qindra mijëra objekteve.

Fillimisht problemi do të zgjidheshin duke krijuar një fork të motorit fizik Jolt, por më pas, sipas këshillës së krijuesit të motorit Rubikon, i angazhuar në lojën Half-Life, u mor si bazë një version i thjeshtuar i Rubikon-Lite, i zhvilluar si një hobi, i cili u riparua duke përdorur kodin dhe optimizimet nga Box2D për të kombinuar mundësitë 3D me përpjekjet nga motorin Box2D. Si rezultat, pothuajse të gjithë API-të, strukturat e të dhënave dhe algorizmat në Rubikon-Lite u zëvendësuan me kod nga Box2D, ndërsa nga Rubikon-Lite mbetën vetëm algorizmat e ndërtimit të mbështjelljes konvekse dhe përpunimi i përplasjeve 3D. Motorin e rezultuar, me dijeninë e autorit të Rubikon-Lite dhe kompanisë Kintsugiyama, u vendos të publikohej si një projekt i veçantë i hapur Box3D.

Aktualisht, është publikuar versioni i parë i Box3D 0.1, i cili është i markuar si version alfa. Funksionaliteti kryesor i planifikuar është realizuar, por kërkohet përmirësimi i dokumentacionit dhe testimit. Përveç lojës The Legend of California, motorin e ri e ka përdorur tashmë platforma e lojërave s&box, motorin e hapur të lojërave Esoterica, dhe lojën shumë-lojtarësh Space Game, e cila është e dizajnuar për 1000 lojtarë.

Për lojërat 3D në motorin e ri janë shtuar funksione si llogaritja e përplasjeve me rrjete poligonale (mesh) dhe hartat e lartësisë që përdoren gjatë gjenerimit të peisazheve, që kanë lejuar realizimin në lojën The Legend of California të efekteve realiste të rënies së pemëve në sipërfaqet voxel. Është shtuar mbështetje për përplasje të komponuara (baked), të ndara nga forma të thjeshta, duke reduktuar ndjeshëm konsumimin e burimeve gjatë simulimit të një numri të madh objektesh të vogla standarde.

Mes funksioneve të transferuara në Box3D, të cilat ishin më parë në Box2D:

  • Përcaktimi i vazhdueshëm i përplasjeve (trajtim i lëvizjes së objektit si një trajektore të vazhdueshme), filtrimi i përplasjeve dhe gjenerimi i ngjarjeve në kontaktin ndërmjet objekteve. Mbështetje për forma sferike, kapsulare dhe shell për përcaktimin e përplasjeve. Optimize me ndihmën e instrukcioneve SIMD për trajtimin e kontaktit të objekteve.
  • Sub-stepping Solver për të rritur saktësinë e simulimit duke ndarë deri në disa hapa më të vegjël të simulimit.
  • Përdorimi i metodës për ngjyrosjen e grafëve për të trajtuar grupe të mëdha të objekteve të lidhura.
  • Kontrolluesi i personazhit, i cili merret me përpunimin e lëvizjes, përplasjeve dhe ndërveprimit të personazhit me objektet përreth.
  • Mbështetje për ndriçimin me rrezet, ndriçimin e formave dhe kontrollin e ndërprerjeve gjatë skanimit të hapësirës përreth. Një sistem sensorësh për zbulimin e objekteve në hapësirë.
  • Soft Step Solver për llogaritjen e fizikës së trupave të fortë gjatë ndërveprimeve komplekse.
  • Mbështetje për ngrirjen e gjendjes së grupeve të objekteve inaktive ose statike për kursimin e burimeve.
  • Mbështetje për lloje të ndryshme lidhjesh dhe llojesh marrëdhëniesh midis objekteve, duke përfshirë ingranazhet, spiralet, motorët, saldimin dhe rrotat, me mundësinë e personalizimit fleksibël të çdo lidhjeje. Llogaritja e forcave të shtrirjes dhe ngjeshjes, me të cilat objektet ndikojnë në njëri-tjetrin.
  • Mundësia për të gjeneruar ngjarje kur fillon lëvizja, ndalon ose stabilizohet objekti.
  • Hukut për përpunimin me shumë fibra me një planifikues të brendshëm opsional.
  • Përdorimi i koordinatave të tipit double, duke lejuar krijimin e botëve të mëdha.
  • Determinizmi ndërplatformar që siguron rezultat të njëjtë në platforma të ndryshme harduerike.
  • Mbështetje për regjistrimin dhe riprodhimin e simulimeve.
  • API C dhe kodi në gjuhën C që përmbahet standardit C17.

Në planet për të ardhmen përmenden zgjerimi i mundësive të lidhura me lëvizjet e personazheve, përmirësimi i mekanizmave të parandalimit të përplasjeve 'fantazmë' (ghost collision), implementimi i optimizimeve dhe përmirësimi i trajtimit të lidhjeve (joint solver). Në repozitorin e tij, pritet të ofrohet mundësia për dërgimin e kërkesave pull me ndryshime nga përfaqësuesit e komunitetit pas nënshkrimit të një marrëveshjeje për transferimin e të drejtave pronësore mbi kodin (CLA).

Luaj videon


Burimi: opennet.ru
Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster