2025. május 17., szombat

Egy nyílt forrású, ingyenes 3D-grafikus projektről

Egyszerű módon zajlik a 3D grafikák rajzolása és programozása. A forráskódok modifikálásával különféle alkalmazások formálhatóak meg. A Subdivision Surfaces, avagy az el- s alosztódású felületek témaköre iránt sokak érdeklődnek, hiszen ezzel a legegyszerűbb részletes objektumokat alkotni mind 3D nyomtatások, animáció-, játék-készítések, grafikus munkák, iparművészeti alkotások, stb. részére. A számítógépes grafikuskártya-tervezőket is foglalkoztatja a témakör, hiszen amint sikerrel chiptervekké formálták a forráskódok matematikai modelljét és legyártották a chipjüket, úgy ennek igénybevételével sokkal gyorsabban lehet 3D objektumokat művelni, mert a párhuzamosított funkciókat már nem csak néhány processzormagon hanem sok ezer grafikusrész igénybevételével műveli a számítógép (pl. elosztófelületek DirectX 12-vel működtetve). A célból, hogy sokkal gyorsabban lehessen kifejleszteni egy elosztódási felületmechanizmust, grafikus motort, játékot vagy 3D tervező alkalmazást is, célszerű, hogy többen kódolják azt, mivel egyedül csak lassan halad a munka.

A SupportingCPW projektben egy C++ forráskódokkal adott, kizárólag tulajdonfejlesztésű projektum található, amelyet feltételek nélkül mindenki magáévá tehet, változtathatja, sajátjaként publikálhatja, vállalkozást szervezhet köré, dolgozatok és diplomamunkák témáját is képezheti. A projektum továbbfejlesztve alkalmas lehet korszerű 3D animációkészítési, játékkészítési, objektumdefiniálási, 3D betűs tördelési és játék-alkalmazások kifejlesztésére is, már jelenleg is képes bármely felbontású képek készítésére, rövid szöveges instrukciók (script) sorok olvasásával terebélyes objektumokat is alkothat. A program középiskolás szintű előtudást feltételez, könnyű megérteni csatolt forrásait. A script-olvasó részéből is példát lehet meríteni, azaz hogyan lehet olyan scriptelő motort írni, hogy az képes legyen olyan instrukciók futtatására is, hogy egy-egy (a scriptekben ez az IN) sorkezdéssel egy eltérő szöveges állományra váltson, onnantól azt futtassa és csak végeztével folytassa az előzőekben megkezdett script futtatását. A projektumban jelen levő 32 és 64 bites programok a script.k állományt futatják le alapértelmezetten (eltérőért pl. "32.exe eltero.k"-val lehet indítani).

Az install alkalmazás létrehozza a 16×16-os, 32×32-es, 64×64-es, 128×128-as és 256×256-os elosztó adatbázisokat amelyek szorzókat tartalmaznak amelyekkel a két további alkalmazás műveli minden objektum minden nívójának minden felületét. A szorzók segítik a magasfelbontású képek létrejöttét is a 64.exe alkalmazásnál. A 32.exe alkalmazás azonban OpenGL alapon térbeli rálátással szerkesztheti is a script.k-ban fellelhető egyedüli objektumot, abban az esetben ha ez csupán első nívójával, felületbehelyettesítések nélkül definiált. (Szerkesztésért engedélyezzük az rkk sort, és ne legyenek elosztódás definiáló sorai az objektumnak, részletes képekért viszont tegyünk kommentjelet, dupla mínusz jelet az rkk sor elé és lehetnek elosztódást definiáló sorai az objektumnak, s akár több objektum is lehet a térben.)

Az install alkalmazással létrejött elosztódást definiáló szorzókat tartalmazó állományokhoz hasonlókat terveznek grafikus chipekbe manapság, amelyekkel az egész felületosztódási mechanizmus, sokkal gyorsabban művelhető a legújabb DirectX, Vulkan és OpenGL csatolófelületekkel. Az ezekkel működtető jobb grafikus motorok és a gyorsított elosztó számításokat végző kártyák nem ingyenesek. A SupportingCPW.sf.net forrásai viszont igén, ám szoftveres jellegükként csak lassabban működnek, mint a hardveres megoldások. A 32.exe-t változtatások után legcélszerűbb az Nvidia OpenGL SDK-ban jelen levő Simple Glow projekt helyett újból elkészíteni pl. Visual Studio 2010-zel (akár ennek próba változatával), míg a 64 bites legegyszerűbb üres projektumként a 64.cpp-ből készül el, akár már VS2015 alatt is.

A térben definiált zárt objektumok (a legegyszerűbb ilyen egy kocka) egy-egy négyszögoldalú felületét apróbbakra (legalább 2×2-es osztódással) eloszthatják a 32.exe és 64.exe alkalmazások. Az elosztódás végeztével egy nívó (level) keletkezik az objektumon, amely részletesebben, az eredő nivó felületeinek apróbbakra elosztódásával, a legegyszerűbb példaként egy 6 felületes kockából 6×2×2-es négyszögű labdát formálhat. Ám az igénybe vett 2×2-es elosztóállományon a pontok mélyebben és kitoldva (elmozdítva) is lehetnek, tehát, nem egy deformált labda is keletkezhet a kockából.

Egy objektumdefiníció a scriptbeli OB sorkezdéssel veszi kezdetét. A P{ sorral pedig egy koordináta rendszer definiálása kezdődik az objektumon. A koordináta rendszert egy P}// sorral lehet zárni. Fontos hogy minden script.k-beli sor legalább három begépelt betűt tartalmazzon, ha nem tartalmaz hármat, csak kettőt, elért. Ezért habár P} is elegendő lenne a koordináta rendszer zárásaként, P}//-t kell írni. A //-val és dupla gondolatjellel kezdődő script sorok, valamint minden nem értelmezett csak komment, nem számít. A script.k kettős kezdőbetűk formájában adja tudtára a programnak a lefuttatandó feladatot. Ezek a kettős kezdőbetűs sorok a program funkciói. Az objektumon belül pontokat PO kezdőbetűs sorokkal, felületeket pedig SU kezdőbetűsekkel lehet megidézni. Egy objektumot úgy kell kialakítani a PO-s és SU-s sorokkal, hogy zárt alakzat keletkezzék, és ennek minden pontján legalább három és legtöbb hat felület csüngjön. Ha az objektumdefiníció minden PO-s és SU-s sora már jelen van a scriptben az objektum nívóját az RSK sorral definiáltatni lehet a program részére. Az RSK instrukció után az objektum felületeit az SX kezdőbetűs sor eloszthatja egy már a script elején betöltött elosztóállománnyal, ezek a script.k elején a beolvasott elosztóállományok, az IN-nel betöltöttek, a létrehozottak pedig az SC egyoldalasak és SB kétoldalúak. Lehetőség van rajzolt kép alapú elosztóállományok beolvasására is, az SH sorral. A 64 bites alkalmazás több memóriát kezelhet, így a script.k állomány minden objektumát nívókkal célszerű bővíteni részletesebb képek létrejöttéért, e célból még az AM sor harmadik tagját növelni kell, amely meghatározza a maximálisan igénybe vehető pontok és felületek számát. A 32.exe-vel ezzel a számmal fél millió felülettől nem jelez ki többet valós időben.

Számítógépes mesehősök térbeli alakzatainak megalkotása céljából nem PO hanem P1 és P3 sorokkal lehet pontokat megnevezni, ám ezek igénylik a B0 sor és B1 valamint B2-es kezdőbetűs, ún. kockaobjektumok korábbi megnevezését, és ekkor a SU felületdefiníciók is máshogyan alakulnak. Hogy egyszerűbben lehessen P1, B0, B1 és B2 sorokkal rajzolni, a 32.exe térbeli szerkesztő ilyen sorokat írva egy állományba szerkeszti az adott objektumot. Az alkalmazás több funkciót támogat: Angolra állított billentyűzeten w, s, a d, q és e billentyűkkel mozgathatja; z, x, c, f, v és b billentyűkkel forgathatja a rálátási szöget, a kamerát, majd az L billentyű elmenti a kamera pozícióját. A pozíció alapján a 64.exe képet készít. Y, h, u, i, j és k billentyűkkel mozgathatja a hős kiválasztott kockarendszerének (belső botjának, a csontnak) az elfordulásait, ugyan ezekkel mozgatja a kiválasztott pontot. Shift+E elmenti az objektum aktuális helyzetét. A kiválasztott belső boton lehetséges pontot alkotni a pont billentyű megnyomásával, amit rögtön mozgatni is lehet, tekintve, ki van választva. Egy kiválasztott pont törléséért angol billentyűzeten a Shift+pont, egy kiválasztott felület törléséért pedig a Shift+vessző billentyűket szükséges megnyomni. Az óramutató irányában haladva négy pont egymás utáni kiválasztásával mindig vessző gombot nyomva, a negyedik vesszőt lenyomva létrejön a négy megnevezett ponton fekvő felület. N és m billentyűkkel meg lehet változtatni az objektum szemlélt nívóját (https://sourceforge.net/projects/SupportingCPW/).

Magyar ember Magyar Szót érdemel