_fpeti_ 2011.12.08. 23:19

Level of detail avagy LOD

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.

Szólj hozzá!

A bejegyzés trackback címe:

https://sortagamedev.blog.hu/api/trackback/id/tr83449479

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.
süti beállítások módosítása