2021. április 6., kedd

láthatóság számolással

Most elég sok idő telt el a legutóbbi videó óta, azért mert amin most dolgoztam, az egy kicsit bonyolult dolog. Szerencsére az én kockákból álló világomban nem olyan nagyon bonyolult, de lehet, nem ártott volna elolvasni egy kicsit az irodalmat a témában. Szóval a láthatóságon dolgoztam. Ez nagyjából azt jelenti, hogy megpróbáljuk megjósolni, hogy egy pontból melyek azok az objektumok amelyek láthatóak és csak azokat rajzoljuk ki. Van egy fontos szabály a láthatóságban, hogy nem szabad alulbecsülni a láthatóságot, azaz látható dolgokról hibásan azt mondani, hogy nem láthatóak, mert akkor hibás képet kapunk és az a legrosszabb, ha elkezdenek előtűnni dolgok olyan helyeken, ahol már eddig is látnunk kellett volna őket. Ezért aztán egy kicsit inkább felül szokták becsülni a láthatóságot, azaz olyan dolgokról is azt mondjuk, hogy láthatóak, amelyek valójában nem azok, majd megoldja a többi rendszer, hogy szépen az őket eltakaró dolgok valójában is eltakarják őket.

Na most voxeles világokban, azaz az én kis kockáimnál, azért könnyebb egy kicsit ez a dolog, mert általában a kockák sarkainál kell eldönteni, hogy mi látszik onnan és elég könnyű reprezentálni az üres teret, amin átmegy a fény és minden vele szomszédos tárgy láthatóvá válik, meg a nem üres teret is, amin nem megy át a fény, tehát ami a hátánál van, az nem látszik. Egy pontból. De lehet, hogy egy másik pontból meg látszik. Szóval nem olyan nagyon könnyű ez a feladat így sem, de engem nagyon rég óta érdekel és most jó volt egy kicsit olyan dolgokon dolgozni, amelyekre nem tudtam a választ. Rajzolgattam rendesen papírra a vonalakat meg festegettem a négyzeteket.

Az algoritmus egyébként nem túl bonyolult, egy kicsit még lehet finomítgatni valószínűleg, de azt majd legközelebb. Szóval röviden az algoritmus annyi, hogy először megkeresi az üres teret, azokat a kis kockákból nagyobb téglatestekbe csoportosítjuk, majd ezeket is még nagyobbakba, amelyeket láthatósági nódusoknak nevezek, persze a nódusnak itt nincs értelme, mert nem igazán értelmezem fa struktúrában ezeket, inkább csak egy egyszerű gráfként. Szóval miután megvannak a láthatósági testek, utána meg kell állapítani, hogy melyek látszanak melyekből, ez egy kicsit lassú folyamat, de én találtam egy elég gyors megoldást, az üres tér kitöltésével, konvex alakzatban, féle-forma. Egy kicsit talán túl felülbecsüli a láthatóságot, de gyors és a mostani grafikus kártyák ezzel már megbirkóznak, főként ha egy kicsit segítek is nekik egy kis mélységi rendezéssel és mélység gyors meghatározásával, ami nekem a kockákkal egy könnyű feladat.

Szóval alapvetően ez most egy fontos lépés volt abba az irányba, hogy jó nagy világokat tudjak alkotni amelyek futási ideje csak a lokális bonyolultságtól függ.

Nincsenek megjegyzések:

Megjegyzés küldése

Working with AI in real life

People can encounter and use AI in their work in many different ways. Here are three common examples: You can work as a professional who has...