Régi trükk: ha valami messze van, ne rajzoljuk ki a nagy felbontású modelt, hanem használjunk kevesebb háromszöget, messziről úgyse látszik. Nem bonyolult, nálam annyiban merült ki, hogy Blender-ből több modelt is lehet egy .m fájlba exportálni, az első model a hi-poly-mesh, animációkkal, textúrákkal. A második megy egy low-poly változat, ami csak vertex-colort használ. Vannak játékok, amik sok LOD szinttel dolgoznak, (nem vagyok biztos benne, de mintha a Serious Sam 30+ LOD-ot használt volna - az első játék, nem a legújabb). Manapság nagyon oda kell figyelni arra is, hogy hányszor rajzolunk egy frame-ben, ha minden modelnek lenne 30 verziója, az nagyon belassulna (dx9 alatt 300-500 drawcall kéne - pesze ez nem ökölszabály, de a dx9 virágzásakor ezt beszélték ;) )
Mivel a második LOD-os modelben nagyon kevés háromszög van, (<100) ezért semmiképpen nem érdemes külön-külön rajzolni őket. Én két módszert is választottam:
1. A nagyon kevés háromszögeket használó objektumokat szoftveresen forgatom térbe, és egy drawcall-al kimegy a cucc.
2. Ha nagyobb a poligonszám, akkor jöhet az a hardware-instancing, amivel csomó ugyanolyan objektumot lehet egyszerre képernyőre küldeni.
Végül, ha nagyon-nagyon távol van az az ojjekt, akkor kár fecsérelni modelrajzolásra az időt, és elég egy kis képként kirajzolni - ezt billboarding-nak is hívják.
Itt egy kép az első próbálkozásról, a három lod szint van: hipoli,lowpoli,billboard. Jól elkülönülnek, ami nem jó, de ennyire futotta a programmer art-ból mára.
_fpeti_ 2011.12.08. 23:19
Level of detail avagy LOD
Szólj hozzá!
A bejegyzés trackback címe:
https://sortagamedev.blog.hu/api/trackback/id/tr733449479
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.
Nincsenek hozzászólások.
