A testek térbeli elhelyezésére a HELY utasítást használja a WebGlBasic, vagyis meg kell adni az x,y,z koordinátákat. A PIXELMAP utasítással viszont az x, és a z koordinátát egy PNG képből is kinyerhetjük.
1. Először rajzolni kell egy pixeles képet, ami maximum 400x400 pixel lehet. A képen minden pixel egy 3D test helyét jelölheti. Egy pixel 1 egység lehet a koordináta-rendszerben.
Legegyszerűbb esetben fehér háttéren fekete pixelek jelölhetik a testek helyét, de akármennyi színt lehet használni különböző testek elhelyezésére.
2. A pixeles képet PNG formátumban kell elmenteni, és utána a felhő tárhelyre fel kell tölteni. a példában a teszt nevű felhasználót használtam, és a map1 mappába töltöttem a map1.png képek.
3. A programban definiálni kell az 3D objektumokat. Ezek lehetnek egyszerű testek, vagy akár csoportok is. Ezekről készít majd másolatot a pixelmap utasítás, ezért a jelenetben benn kell lenniük. Ha nem akarjuk látni ezeket a mintákat, akkor az HELY utasításban valamelyik koordinátájukat nagyon nagyra kell állítani. Pl.: 10000000-ra. Így ott lesznek, de nem fognak látszódni. A példában TEST1, TEST2, és TEST3 a nevük.
4. Végül a definiált objektumokat hozzárendeljük a pixeles térkép adott színű pixeljeihez.
Ehhez először az RGB utasítással megadjuk pontosan a pixel színét, majd a PIXELMAP utasítással hozzá kapcsoljuk valamelyik testet, amit már előre definiáltunk.
Az utasítás 4 paraméteres:
1. A kép elérési útvonala, és a neve: /map1/map1.png
2. Valamelyik definiált test neve: TESZT1
3. Szorzótényező, ami az x,z koordinátákat módosítja: 1
4. A felhasználó tárhelyének neve: teszt
rgb(255,0,0) // piros pixelek
pixelmap(/map1/map1.png,TEST1,1,teszt)
A példában a TEST2 egy sárga henger, aminek a sugara 0.5, és a magassága 2 egység. A helye (-15,0,0) Ezt lehet módosítani pl. (-100000,0,0) értékre, ha nem szeretnénk látni.
A map1.png kép 20x20 pixeles, és a kék gyűrű RGB színkódja 0,0,255. Így a 26. sorban lévő utasítás a sárga hengerről készít annyi másolatot, ahány kék pixel van a map1.png képen.
A 20x20 pixel megfelel 20x20 egységnek a 3D térben, ezért kellett a 21. sorban az egész generált geometriát eltolni a (-10,0,-10) helyre. Persze lehetett volna akárhova eltolni, sőt forgatni is.
Ez a példa mindössze 12 sor kóddal generál egy mászkálós labirintus játékot.
A kód részei:
5. A mozgás átkapcsolása billentyűzetre, FPV módra.
6. A kezdőpont kamera pozíciójának beállítása. Induláskor rá kell kattintani, ha nem működiknek a kurzormozgató nyilak.
7. Alapértelmezett matt felületet állít be
10-12. A föld egy 100x100 egység méretű téglatest, amin 20x ismétlődik a textúra
16-18. 4 egység magas, 1x1 egység méretű téglatest lesz a definiált objektum. Ebből épül fel a labirintus.
21-23. Az RGB(0,0,0) fekete pixelek rajzolják ki a labirintus mintázatát. A map2.png 100x100 pixeles.
Ha a map2.png képre felrakunk egyetlen piros pixelt, akkor azzal meghatározhatjuk a piros gömb helyét is.
A map3.png véletlenszerű fekete pixeleket tartalmaz. Ez alapján készültek másolatok a kék színű részecskéről.