HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

Utolsó helyzetjelentés a készülő prodról

2023.09.08. 10:05 Travis.CG

Elkészültem a demó 99%-val, ezért jöjjön egy gyors helyzetjelentés. Habár a Function-ös produkció textúrái elég rondák, azt kell mondanom, hogy kód szempontjából eddig ebben van a legkevesebb kompromisszum. Igaz, már több, mint fél éve készül, ezért volt idő mindent alaposan megcsinálni. Közben még bugokat is tudtam javítani.

Lássuk, mit is tanultam a fejlesztés során.

Textúrázás

A modellezni elfogadhatóan tudok, de a textúrázással eléggé bajban vagyok. Sajnos nem kaptam segítséget, de a demó készítése során elsajátítottam néhány fogást Blenderben. Már tudok ecseteket készíteni, modellre festeni, UV koordinátákat szerkeszteni. Mivel grafikailag analfabéta vagyok, ezért nyilván az eredmény sem jó, de talán az új csapattagok megszánnak a jövőben. A Substance Painter árát viszont sikerült megspórolni.

Mátrixok

Rá kellett jönnöm, hogy a transzformációs mátrixokról elég hiányosak voltak az ismereteim. Azt hittem értem őket, mégis többször előfordult, hogy a 3D modellek nem úgy mozogtak, ahogy szerettem volna. Persze, mert mindig elfelejtettem, hogy a mátrix szorzásnál a tagok sorrendje nem felcserélhető. A fejlesztés vége felé sokkal kevesebb ilyen jellegű hibát ejtettem, kezdett a fejemben helyrezökkenni a tudás.

Depth of field

Elhatároztam, hogy készítek egy ilyen effektet. Ez elég nyögve nyelősen indult. A neten általában olyan kódokat találtam, amiben előre legeneráltak egy éles képet, valamint egy olyan képet, ami nincs fókuszban, majd a kettőt összemosták. Ez nekem nem tetszett. Én olyat akartam, ahol az elmosás mennyiségét a távolság határozza meg. Itt is először rossz nyomon indultam el. Mindenáron a kernel méretét akartam változtatni, ami nagyon nem volt optimális, ráadásul előre le kellett foglalnom egy nagyobb tömböt a kernelnek, de abból csak egy töredéket használtam legtöbbször. Végül egy elejtett kommentben megláttam, hogy nem a kernel méretét kell változtatni, hanem a Gauss-függvény szórását. A kód is szebb lett, az eredmény is jobb lett.

Itt még van hely az optimalizációra, mert a profik az elmosást két lépésben csinálják meg. Az én grafikus motoromban maximum két render ciklus lehet, ezért egy lépésben mosom el a hátteret. Ez NVidian semmi gondot nem okoz, viszont az Intel integrált chipje már nyöszörög.

Ragyogás

Akartam egy gloom effektet is, mert szerintem nagyon jól néz ki. Miután az előző effektből megtanultam hogyan kell Gauss-függvényhez együtthatókat számolni, már ez sem volt nehéz. Az eredmény sokkal látványosabb lett.

Modell hierarchiák

A demó egyik központi látványeleme egy robot. Ennek a robotnak mozogni kellett, mert azt találtam ki. Sőt, egy jelenetben az alkatrészek önálló életet kezdenek. Erre azért ráment pár hónap, mire minden úgy nézett ki, ahogy akartam. A robotot felépítő elemeket egy hierarchikus rendszerbe helyeztem. Ezt elkészítettem Blenderben, majd egy saját Python szkripttel kiexportáltam. Úgyhogy kezdem egyre jobban érteni a Blender Python API-ját is. Az exportálás is megérne egy bejegyzést, mert ott sem sikerült mindig a megfelelő elemet elmenteni. Néha azután jöttem rá, hogy rossz az exportálás, miután a saját kódom nem tudta pontosan úgy megjeleníteni az elemeket, ahogy a Blender tette. Sokáig például ahelyett, hogy a végtag elfordult volna, a végtagot alkotó elemek a saját tengelyük körül forogtak. Ugye itt is a mátrixokkal volt a gondom, mert nem értettem teljesen a működésüket.

Bézier-görbék

Már egy korábbi demómban használtam bézier-görbéket a kamera mozgatására, az akkori kód csak négy kontrollpont kezelésével tudott csak megbírkózni. Ráadásul olyan kódot akartam írni, hogy később más közelítési eljárásokat is felvehessek a metódusok közé. A megoldás elég jó lett. Itt is Blenderben készítettem a görbéket, majd Python-al exportáltam.

Változó sebességű scroller

Ez tényleg csak egy apróság, de ezzel is mennyit pepecseltem! Azt akartam, hogy egy felirat változó sebességgel fusson. Tényleg nem gondoltam, hogy olyan bonyolult ez, csak kell egy színusz függvény, meg az idő, és kész. Az eredményt pedig felhasználom a felirat X koordinátájába. Ehelyett a szöveg folyamatosan visszafelé akart menni. Még akkor is, amikor a színusz függvény abszolút értékét adtam át. Végül egy blogposzt mentett meg a szégyentől.

Szóval még mindig van egy nap, a demó szinte kész és úgy néz ki, ahogy terveztem. Nem úgy, ahogy szeretném, de mindent nem lehet. Ráadásul Matthew sem fogja azt hinni, hogy csak felültettem, amikor a zenéjét elküldte. Most elégedett vagyok a teljesítményemmel. Majd amikor utolsó lesz, akkor majd jön az önsajnálat, de addig még van pár nap :-)

Szólj hozzá!

Címkék: demoscene

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr7018209641

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