HTML

gondolataim elsősorban játékfejlesztésről

Elsősorban játékfejlesztés magyarul: az enginem fejlesztése során felmerülő problémák, ötletek, tévutak stb dokumentálása, amely számomra és talán mások számára is hasznos lehet később Másodsorban gondolatok szavakban...

Kapcsolat:
aalberik 'at' gmail 'dot' com

Haletető

Galéria

Címkék

Összes

Linkblog

Naptár

április 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Fizika és terhelés

2011.08.24. 22:50 :: syam

Az elmúlt napokban a fizikai engine (PhysX) terhelésével / terhelhetőségének növelésével foglalkoztam vagyis hogyan lehet több száz dinamikus fizikai objektumot szerepeltetni egy jelenetben.
A jelenetben statikus trimeshek - melyek egy összetett belső tér részei voltak - és dinamikus konvex testek szerepeltek ez utóbbiak száma 400-600 között mozgott. A cél a láthatóan nem mozgó objektumok kiszűrése és inaktiválása volt.

Első gondolatként az API beépített függvényeit nézi át az ember és meg is találja az IsSleeping (vagy hozzá hasonló) utasításokat. Ezek azonban a gyakorlatban legtöbbször nem válnak be több ok miatt is. Számos paraméter befolyásolja - amelyek jelentésével tisztában kell lennünk pl. küszöbértékektől, az altatás típusától, a szimuláció léptetése - és szinte mindig az tapasztalható, hogy hiába tűnik mozdulatlannak a tárgy azonban mégsem kerül altatásra.

Második próbálkozásként próbáljuk figyelni a sebességeket (lineáris és anguláris) ill. ezek csökkenését. Itt már jelentkezhet az a probléma, hogy bár az anguláris sebesség zérus a test még tovább akarna forogni, mert csak pillanatnyilag került egyensúlyi helyzetbe. Ezt a helyzetet elhanyagolva sem sikerül azonban a kívánt hatást elérni.

Harmadik lehetőség lehet az elmozdulás és anguláris sebesség vizsgálata. Az elmozdulás vizsgálata már közelebb visz minket a lehetséges megoldáshoz, de az anguláris sebesség még most összezavarja a képet.

Negyedik lehetőségként tehát adott, hogy az elmozdulást kell vizsgálnunk, de hogyan vizsgáljuk az orientációt. Lehet vizsgálni az orientációt kvaternió formájában azonban érdemesebb kihasználni, hogy az API-tól lekérdezhető ugyanez világ koordinátában lévő mátrixként is.
Ennek segítségével az elmozdulást és elforgatást egyetlen vizsgálatba lehet sűríteni és az eredmény magáért beszél: csak azon tárgyak lesznek aktívak, amelyek láthatóan mozognak. Ebből következik, hogy az engine sok, egymástól független tárggyal terhelhetővé válik hiszen feleslegesen tárgyakat nem vonunk be a szimulációba.

És még mielőtt arra gondolnánk, hogy ez a vizsgálat mennyire lehet költséges vegyük figyelembe, hogy jóval olcsóbb, mintha felesleges objektumok terhelnék a fizikai engine-t.

 

1 komment

Címkék: physx

A bejegyzés trackback címe:

https://sakura7.blog.hu/api/trackback/id/tr783178400

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

_fpeti_ 2011.10.04. 16:38:41

Physx-ben nincsen olyan 'figyelmeztető' (callback) rendszer, ami mondjuk elalváskor/ébredéskor jelezne az engineednek, hogy változás van egy rigidbody (actor?) állapotában?
Havokban én ezt per szimulációs sziget használom, ha a sziget felébred, minden benne lévő objektum dinamikussá válik.
süti beállítások módosítása