Maya
-
sirpalee #31439 Amire te gondolsz azt már megcsinálták, méghozzá a disney a ptex-el. Pont a leírt okok miatt, elkerülni az uv-zást. Előtte minden facehez külön textúrát használtak, de az túl sok I/O volt, és inkább kitaláltak egy speciális formátumot. Ezzel anno az volt a probléma, hogy nem volt hozzá festőprogram (már nyilván van), és így erre is írtak egy sajátot...
Az elv maga szép és jó, viszont van vele egyetlen probléma a textúrafilterezés. Mikor egy surface point shadingjét számolod, és lekérsz egy textúrát nem csak egyszerűen egy értéket kiolvasol a textúrából (lehet, de az ronda), hanem filterezed a textúrát. Különböző értékektől függően (dPdx, dPdy - a felületi pont deriváltja a screen koordináták szerint), különböző méretű és formájú területen kérdezel le elszórva x pontot (1-32 stb...), és az ott található textúra értékeket átlagolod. Ezzel kombinálva van az, hogy messze lévő tárgyaknál, vagy az olyanoknál, amik majd merőlegesek a kamerára más mip szintekről is kérdezel le (nyersen hangzik, és nem pontosan ez történik, de ez jó áttekintés). A különböző mip szintek pedig nem mások mint a textúrának a kisebb méretű verziói a memóriában (ennek előnye a kevesebb zizi, illetve nem biztos, hogy a maximális felbontású verziót is be kell tölteni, ez iszonyú sokat tud I/O-ban számítani).
Ezeknek a technikáknak a PTEX-el is együtt kell működnie, viszont amikor a filterezés sugara túllóg egy adott háromszögen (vagy négyszögen - elsőnek csak négyszögeket támogatott a ptex), akkor a szomszédos primitívről is kell textúra adatokat kérdezni, különben tele lesz artifactokkal az egész rendered (vagy nagyon zizis lesz). Ez feltételezi azt, hogy van relációs adat a különböző primitívek között (ki-kivel oszt meg egy edge-t), ezt ki kell menteni, le kell kezelni, kevés memóriával eltárolni és gyorsan kezelni. Ha meg subdiveled a mesh-t render time (ami kbra teljesen alap dolog manapság), akkor pedig valahogy úgy okosan letárolni ezt a relációs adatbázist, hogy még mindig gyorsan elérd, de működjön rendesen (a menet közben létrejött háromszögeket v négyszögeket megfelelelteni az eredeti mesh-en lévőknek és az alapján kezelni a textúra filterezést).
Röviden ilyen problémákkal nézel szembe ha per face akarsz textúrázni. PTEX-ben ezek többnyire meg vannak oldva, és jól működnek. (nyílt forráskódú, bele lehet nézni)