WebGLBasic parancsok

Transzformáció Geometria Felszín Környezet Matematika Vezérlés Animáció
hely
forgás
méret
jobbra
balra
fel
le
hátra
előre
csoport
másolat
térkép.elem
térkép.rács
térkép
limit
gömb
téglatest
henger
egyenes
háromszög
háromszög.vége
alakzat
pontfelhő
3dszöveg
szín
rgb
textúra
bump
részecske
lámpa
direkfény
árnyék
szöveg
info
kamera
beállítások
égbolt
égboltszín
print
debug0
debug1
debug2
image
canvas
változó
alapműveletek
függvények
FOR
kulcs
animáció
animáció.hely
animáció.forgás
animáció.méret
be
ki
invert

hely(x,y,z)




Ezzel az utasítással tudod megadni az utána következő 3D objektumok helyét.
x : vízszintes koordinára
y : függőleges koordináta
z : mélységi koordináta

Az x,y,z helyett változók is használhatók.

Pl.:

forgás(sx,sy,sz)




Ezzel az utasítással tudod megadni az utána következő 3D objektumok forgatási szögét.
A szög értéke jobbra növkszik.

sx : forgatás az x tengely körül sx szöggel (0..360)
sy : forgatás az y tengely körül sy szöggel (0..360)
sz : forgatás az z tengely körül sz szöggel (0..360)

Az sx,sy,sz helyett változók is használhatók.

Pl.:

méret(mx,my,mz)




Ezzel az utasítással tudod megadni az utána következő 3D objektumok relatív méretét.
Alapesetben a méret 1. Ennél nagyobb érték nyújtja, kisebb értéke zsugorítja a testet a megadott irányban.

mx : a test x irányú mérete mx szeresére nyúlik.
my : a test y irányú mérete my szeresére nyúlik.
mz : a test z irányú mérete mz szeresére nyúlik.

Az mx,my,mz helyett változók is használhatók.

Pl.:

jobbra(dx)




Az utolsó hely x koordinátáját növel a dx értékével.
A dx helyett változó is használható.

Pl.:

balra(dx)




Az utolsó hely x koordinátáját csökkenti a dx értékével.
A dx helyett változó is használható. Lásd a jobbra utasításnál!

fel(dy)




Az utolsó hely y koordinátáját növeli a dy értékével.
A dx helyett változó is használható. Lásd a jobbra utasításnál!

le(dy)




Az utolsó hely y koordinátáját csökkenti a dy értékével.
A dx helyett változó is használható. Lásd a jobbra utasításnál!

hátra(dz)




Az utolsó hely z koordinátáját növeli a dz értékével.
A dx helyett változó is használható. Lásd a jobbra utasításnál!

előre(dz)




Az utolsó hely z koordinátáját csökkenti a dz értékével.
A dx helyett változó is használható. Lásd a jobbra utasításnál!

csoport




A csoport utasítással új néven létre lehet hozni egy objektumot.
Utána a csoport.add utasítással kell a csoporthoz rendelni a meglévő geometriákat.
Végül a csoport.vége utasítással zárjuk le a csoportot.


Pl.:

másolat(NÉV)




Másolatot készít a megadott nevű objektumról. Az objektumot előzőleg létre kell hozni!
A másokat mérete, helye, forgási szöge előzőleg módosítható, de színe, textúrája nem!


Pl.:

térkép.elem(C,NÉV)




A C karakterhez kapcsolja a NÉV nevű 3D objektumot. A C karakter bármilyen ASCII karakter lehet, kivéve a szóköz.
Az így megadott karaktereket használhatjuk később a "térkép" utasításban a mintázat megadására.
A példában a hengert a H, a hömböt a G karakter helyettesíti majd a "térkép" utasításban.

Pl.:

térkép.rács(dX1, dY1, dZ1, dX2, dY2, dZ2,)




Az első 3 paraméter megadja, hogy a "térkép" utasításon belül a következő objektumot mennyivel kell eltolni az előhöz képest.
Az első elem koordinátáit a HELY utasítás adja meg. A példában (-5,0,-4). A következő elem a (-3,0,-4) helyre kerül, mert a dX1=2, a többi eltolás meg nulla.
A következő elem X koordinátája megint 2-vel lesz nagyobb, vagyis -1.
A második "térkép" utasítás eltolása az elsőhöz képest a dX2,dY2,dZ2 paraméterekkel adható meg.
A pédába dZ2 = 2, tehát minden újabb sornyi "térkép" utasítás 2 egységgel előre lesz eltolva.

Pl.:

térkép(HH GG)




A térkép utasítás lemásolja a megadott karakterekhez rendelt objektumokat (térkép.elem) a (térkép.rács) utasításban megsott eltolással.
Szóköz karakter esetén nem másol semmit az adott pozícióba.
Hibás lesz a fordítás, ha előzőleg nem rendeltünk objektumokat a felhasznált karakterekhez!

Pl.:

limit




pontosabban
limit.x(NEV,MIN,MAX,DELTA)
limit.y(NEV,MIN,MAX,DELTA)
limit.z(NEV,MIN,MAX,DELTA)

Limitálja, vagyis korlátozza a NEV nevű objektum valamelyik koordinátáját.
A példába egy animáció folyamatosan mozgatná a KOCKA nevű objektumot a x=-10 ponttól az x=10 pontig.
A "limit" utasítás viszont nem engedi az x koordinátát -5 alá, és 5 fölé.
Sőt a DELTA érték is megadva a mozgás már nem lesz folyamatos, hanem csak a megadott "rácsra" ugrik a KOCKA.


Pl.:

gömb(R,SZ)




R: a gömb sugara
SZ: szegmensek száma

Pl.:

téglatest(x,y,z)




Az utasítás helyett használható a rövidebb változatai is: tégla(x,y,z)
A három paraméter a téglatest x,y, és z kiterjedését adja meg. Kockát kapunk, ha mindhárom egyforma.
A hely koordinátái a téglatest középpontjára vonatkoznak.

Pl.:

henger(R1, R2, M, SZ)




Használható, henger, kúp, sokszög alapú haság, és sokszög alapú kúp rajzolásásra

R1: Felső lap sugara
R2: Alsó lap sugara
M: Magasság
SZ: Szegmensek száma (Nem kötelező megadni)

Kúp rajzolása esetén R1 legyen 0!
Sokszög alap esetén a szegmensek száma 3..10 között legyen.

Pl.:

egyenes(SZÍN,A,B)




Az egyenes rajzoló blokk több utasításból áll. Az elején van az "egyenes" utasítás, a végén az "egyenes.vége" utasítás.
Közte a "pont" utasítások, amelyek megadják az egyenes szakasok elejét, és végét.

SZÍN: Csak HTML színkód lehet.
A: folyamatos részek hossza
B: üres részek hossza

A második, és a harmadik paraméterekkel lehet szaggatott, vagy pontozott vonalat készíteni. Alapesetben fehét folyamatos egyenest rajzol.

Pl.:

háromszög()




Az háromszög rajzoló blokk több utasításból áll. Az elején van a "háromszög" utasítás, a végén az "háromszög.vége" utasítás.
Közte 3db "pont" utasítás.

Pl.:

háromszög.vége(IR,AX,AY,BX,BY,CX,CY)




A "háromszög.vége" utasítással lehet egyéni textúra mappot rendelni a sík laphoz.
Minden csúcshoz a textúra egyik pontja kapcsolódik. Alapesetben a következő MAP működik:

1. csúcs --> MAP 0,0 pontja
2. csúcs --> MAP 0,1 pontja
3. csúcs --> MAP 1,1 pontja

A csúcsokat úgy kell megani, hogy az óramutató járásával egyezően jobbra haladjanak. Ez módosítható az első paraméterrel.

Paraméterek:
IR: A körbejárás irányát adja meg. Lehet "bal", vagy "jobb".
AX: Az 1. csúcshoz rendelt textúra x koordinátája (0..1)
AY: Az 1. csúcshoz rendelt textúra y koordinátája (0..1)
BX: Az 2. csúcshoz rendelt textúra x koordinátája (0..1)
BY: Az 2. csúcshoz rendelt textúra y koordinátája (0..1)
CX: Az 3. csúcshoz rendelt textúra x koordinátája (0..1)
CY: Az 3. csúcshoz rendelt textúra y koordinátája (0..1)

Pl.:

alakzat()




Összetett utasítás, a végét az "alakzat.vége(M)" utasítással kell lezárni.
A "M" paraméter lesz az alakzat vastagsága.

Közben a "PONT" utasítással kell magadni az XY síkon az alakzat pontjait.

Pl.:

pontfelhő(COLOR,SIZE)




Összetett utasítás, a végét az "pontfelhő.vége()" utasítással kell lezárni.
Közben a "PONT" utasítással kell magadni a pontfelhő pontjait.

COLOR: a pontok színe
SIZE: a pontok relatív mérete


Pl.:

3dszöveg(TEXT,A,B,C,D,E,F)




3D testek készít a TEXT szövegből.

TEXT: A szöveg. Ékezet nem lehet, és vessző sem!
A: A szöveg magassága (y)
B: A szöveg kihúzás mértéke (z)
C: Szegmenesek száma. Minél nagyobb, annál jobb lesz a minősége

D: true/false a lekerekítés bekapcsolása
E: lekerekítés mértéke
F:


Pl.:

szín(COLOR,FENYES,SOTET,CSILLOGÁS,ÁTLÁTSZÓSÁG)




Az utána következő testek felszínének színét adja meg.
A színt HTML hormátumban kell megadni: #RRGGBB

RR: A piros összetevő hexadecimálisan 00..FF
GG: A zöld összetevő hexadecimálisan 00..FF
BB: A kék összetevő hexadecimálisan 00..FF

Változó nem használható!

Célszerű a Segédletek-RGB színkeverő segítségével beállítani a kívánt színt.

COLOR: A test alapszíne
FENYES: A csillogó rész színe
SOTET: Az árnyékos rész színe
CSILLOGÁS: 0-100
ÁTLÁTSZÓSÁG: 0-1


Pl.:

rgb(R,G,B)




Az utána következő testek felszínének színét adja meg.
A színt az RGB összetevőkkel kell megadni.

R: A piros összetevő decimálisan 0..255
G: A zöld összetevő decimálisan 0..255
B: A kék összetevő decimálisan 0..255

Változó használható mindhárom paraméterben.

Pl.:

textúra(URL,U,V)




Az url-ben megadott textúrát helyezi a test felszínére.

U : vízszintes irányban ennyiszer ismérli a textúrát
V : függőleges irányban ennyiszer ismérli a textúrát

Ha az U, és a V hiányzik, akkor automatikusan 1 lesz mindkettő.
Jelenleg csak a szerveen tárolt textúrák használhatók!

Pl.:

bump(url,M)




Az url-ben megadott textúrát használja bumpmapként.
A bumpmap a felszín egyenetlenségét a textúra színadataiból száámolja ki.

Az M paraméter az egyenetlenség mértékét adja meg. 0..1


Pl.:

részecske(URL)




Az url-ben megadott textúrát PNG textúrát használja az utána következő pontfelhő utasítás.
Célszerű a "particle" kategóriából választani a PNG képet.
A pontfelhő utasításban a "SIZE", méret paraméterrel lehet a PNG textúra méretét módoítani.

Pl.:

lámpa(A,B)




Pontszerű lámpát helyez az előzőleg beállított helyre. A láma színét előszőleg a szín utasítással kell beállítani.
A: a fény erőssége (alapesetben 1)
B: távolság, ahol már nulla a lámpa fénye (alapesetben 100 egység)

Pl.:

direkfény(x,y,z,F,A,MX,MY,MAP)




Az x,y,z hely felől párhuzamos fénysugarakkal világít a 0,0,0 hely felé.
A negyedik F paraméter a fényerő. Ha nincs megadva, akkor 1.
Az ötdik paraméter (A) az árnyékok intenzitása alapesetben 0.8.

MX,MY adja meg a fényforrás hatókörét. alapesetben 30 mindkettő. A fényforrás -30A MAP az árnyékok kiszámolásához szükséges puffer mérete. Alapesetben 4096 pixel.

FIGYELEM! Ez a fényforrás árnyékot vet a tárgyakra!
Gyengébb géppel lassú lehet a kép frissítése.

Pl.:

árnyék(AM,AR)




Ezzel az utasítással az utána következő testek árnyékolása szabályozható.

Paraméterek:

AM: Be, vagy kikapcsolható, hogy a test mögött legyen-e árnyék, vagy nem.
AR: Be, vagy kikapcsolható, hogy a testen legyen-e árnyék, vagy nem.

Mindkettő paraméter csak "be" vagy "ki" lehet.

Pl.:

szöveg(TEXT)




Ez az utasítás előre tárolja a következő INFO vagy KAMERA utasítás számára a szöveges információkat.
Ha egymás után több utasítást használsz, akkor több bekezdésbe kerülnek a szövegek.

Pl.:

info(COLOR1,COLOR2,W,H,OP)




Megjeleníti a képernyő felső részén az információs panelt.
Előtte meg kell adni a szöveg utasításban a szöveget.

COLOR1: a betű színe HTML színkóddal
COLOR2: a háttér színe HTML színkóddal
W: a panel szélessége pixelben
H: a panel magassága pixelben
OP: a panel átlátszósága 0..1

Pl.:

kamera(NÉV,SX,SY,SZ,DX,DY,DZ)




A kamerákkal lehet nézőpontokat létrehozni. Minden kamerának van neve, ami alul megjelenik egy-egy nyomógombon.
Ha a kamera előtt van szöveg utasítás, akkor a kamera gombjára kattintva a szöveg bekerül a felső INFO panelba.

Paraméterek:
NÉV: a kamera rövid neve
SX,SY,SZ : a nézőpont koordinátái
DX,DY,DZ : a cél koordinátái, ahova a kamera néz (nem kötelező megadni)

Pl.:

beállítások(PARAM,be/ki)




A PARAM-ban megadott környezeti tényezőt kapcsolja be, vagy ki.
Ezek a menüben is megadhatók, de a forrásban beírt parancs felülírja a menüt.
Alapesetben egy háttérfény, és két direktfény van a modellben. Ezek kikapcsolhatók, ha saját fényforrást használsz.

PARAM:
égbolt : kikapcsolva szürke lesz a háttér, vagy az égboltszín utasítást kell használni
koordináták : kikapcsolva eltűnik a 3D koordináta rács és a tengelyek
háttérfény : kikapcsolva az árnyékos részek teljesen feketék lesznek
direktfény : kikapcsolva nem lesz fényforrás

Pl.:

égbolt(TEXTÚRA,R)




Alapesetben egy 1000 egység sugarú gömbör készít, és arra helyezi a texúrát.
Érdemes a Sky360 mappából választani teljes panorámát. Az R paramétert nem kötelező megadni.

Pl.:

égboltszín(COLOR1,COLOR2)




Az égboltot szimuláló gömbre színátmenetet készít a COLOR1, és COLOR2 színek között.
COLOR1: az É, és D pólus színe
COLOR2: az egyenlítő színe

Pl.:

print(p1,p2,p3,p4,p5,p6,p7,p8,p9)




A p1-p9 paraméterekbe szöveget, számokat, és változókat lehet írni.
Ezeket az utasítás egy layerbe kiírja. Fejlesztéskor így tesztelhető a program
működése.

Pl.:

debug0()




Kirak a képernyőre egy DEBUG0 nevű gombot.
Amikor erre kattintasz, akkor egy felugró ablakban megkapod az aktuális nézőponthoz tartozó kamera utasítást.
Ezt csak be kell másolnod a forrásba, és átírni a kamera nevét.

Pl.:

debug1()




Kirak a képernyőre egy DEBUG1 nevű gombot.
Amikor erre kattintasz, akkor egy felugró ablakban megkapod a kamera aktuális helyzetének koordinátáit.

Pl.:

debug2()




Kirak a képernyőre egy DEBUG2 nevű gombot.
Amikor erre kattintasz, akkor egy felugró ablakban megkapod annak apontnak a koordinátáit, ahová a kamera néz.

Pl.:

image()




Kirak a képernyőre egy IMAGE nevű gombot.
Amikor erre kattintasz, az aktuális 3D vászon tartalmát átmásolja egy képfájlba.
A képfájlt már le tudod menteni.

Pl.:

canvas(x,y)




Beállíthatod a 3D vászon méretét. Ha nem használod, vagy üres paramétereket adsz meg, akkor a méret a képernyő maximális mérete lesz.

Pl.:

változó($NÉV,ÉRTÉK)




Léterhoz egy változót a megadott néven, majd beállítja az alapértékét.
Az alapétéket nem kötelező megadni.

A név $ jellel kezdődjön, és csak angol betűket tartalmazzon.
Néhány jó név: $x, $darab, $zz, $piros, $meret
Hibás nevek: $méret, darab, x$


Pl.:

alapműveletek




A négy alapműveletet (+,-,*,/) használhatod a szokásos módon.
Zárójelből viszont a szögleteset kell alkalmazni.

Pl.:

függvények




abs[-10] A szám abszolút értékével tér vissza.

szögfüggvények:
sin[3.14] a radiánban megadott szög szinuszát adja vissza
cos[3.14] a radiánban megadott szög koszinuszát adja vissza
tan[1.57] a radiánban megadott szög tangensét adja vissza

asin[1] a szám arkusz szinuszával tér vissza (radiánban).
acos[0.5] a szám arkusz koszinuszával tér vissza (radiánban).
atan[0.8] a szám arkusz tangensével tér vissza (radiánban).

ceil[3.5] a legkisebb egész számmal tér vissza, ami nagyobb vagy egyenlő a számmal.
floor[3.8] a számnál kisebb vagy vele egyenlő legnagyobb egésszel tér vissza.
round[7.16] egy szám értékét a kerekítési szabályoknak megfelelően kerekíti.

sqrt[100] négyzetgyököt számol
pow[2;10] az alapot a kitevőre emeli, és az eredménnyel visszatér
rand[10;20] egy egész véletlenszámot ad vissza a két érték között

log[4] egy szám természetes alapú logaritmusával tér vissza.
exp[8] az e szám a megfelelő hatványon


Pl.:

FOR($VAR,A,B,STEP) - NEXT($VAR)




A FOR utasítással adod meg a ciklus elejét.

$VAR - ciklusváltozó
A - a változó kezdőértéke
B - a változó utolsó értéke
STEP - lépésköz: ennyivel növeli a változó értékét minden ciklusban

FONTOS: Csak növekvő ciklus működik!

A ciklus végét jelzi a NEXT($VAR) utasítás. Több ciklus is egymásba ágyazható.

Pl.:

kulcs(%,A,B,C)




Az egyszerű animációk 0-100% időtartamra adják meg az animációk fázisait. A KULCS utasítással kell legalább 3 fázist leírni. A többit a program lineáris interpolációval számolja ki.

A KULCS utasítás 4 paraméterrel rendelkezik:
Az első a fázis százaléka 0..100% között. Célszerű 0%-al kezdeni, és 100%-al befejezni a kulcsok felsorolását.
A következő 3 paraméterben koordinátákat, forgási szögeket, vagy méret adatokat adunk meg, az animáció típusától függően.

Egymagában nem használható a KULCS utasítás!

KULCS( 0%, 0, 0, 0)
KULCS( 50%, 0, 5, 0)
KULCS(100%, 0, 0, 0)

animáció(NÉV,IDŐ,ENG,FAZIS)




Minden animáció egyedi névvel rendelkezik. Ez az első paraméter.
Utána lehet megadni a második paraéterben a teljes animáció idejét másodpercben.
A harmadik paraméter az engedélyezés. (be,ki) Ha nincs engedélyezbe az animáció, akkor nem indul automatikusan.
A negyedik paraméter a fázis. (0-1) Pl.: 0.5 esetén az animáció a teljes folyamat felénél kezdődik, és nem az elején.
Lassú gépeken a szofveres számolás miatt az idő a beállítottnál sokkal nagyobb is lehet a valóságban.

Egymagában nem használható a KULCS utasítás!


animáció(AN1)
animáció(mozgas,20)

animáció.hely(OBJ,AN,ENG,FAZIS)




A kulcsok után ezzel zárjuk le az animációt. Az első paraméter annak az objektumnak a neve, amit az animáció vezérel.
A második paraméter az animáció neve, amit az első sorban adtunk meg.
A harmadik paraméter (be/ki, illetve on/off) határozza meg, hogy alapesetben induljon az animáció, vagy nem.
Ha ez a paraméter hiányzik, akkor automatikusan indul.

A kulcsokban megadott x,y,z koordinátákra mozgatja az objektumot.

Hogy ne kelljen minden objektumra ugyanazokat a kulcsokat megadni, az animáció.hely utasítás megismételhető, de más objektum névvel.
A példában az OBJ_A és az OBJ_B testeket ugyanazzal a 3 kulccsal mozgatom.

Pl.:

animáció.forgás(OBJ,AN,ENG,FAZIS)




A kulcsok után ezzel zárjuk le az animációt. Az első paraméter annak az objektumnak a neve, amit az animáció vezérel.
A második paraméter az animáció neve, amit az első sorban adtunk meg.
A harmadik paraméter (be/ki, illetve on/off) határozza meg, hogy alapesetben induljon az animáció, vagy nem.
Ha ez a paraméter hiányzik, akkor automatikusan indul.

A kulcsokban megadott szögek alapján forgatja az objektumot.

Pl.:

animáció.méret(OBJ,AN,ENG,FAZIS)




A kulcsok után ezzel zárjuk le az animációt. Az első paraméter annak az objektumnak a neve, amit az animáció vezérel.
A második paraméter az animáció neve, amit az első sorban adtunk meg.
A harmadik paraméter (be/ki, illetve on/off) határozza meg, hogy alapesetben induljon az animáció, vagy nem.
Ha ez a paraméter hiányzik, akkor automatikusan indul.

A kulcsokban megadott relatív méretek alapján változik az objektum mérete.

Pl.:

be(TEXT,AN)




Kirak egy "TEXT" felíratú gombot, amire kattinva az "AN" nevű animáció elindul.


Pl.:

ki(TEXT,AN)




Kirak egy "TEXT" felíratú gombot, amire kattinva az "AN" nevű animáció leáll.


Pl.:

invert(TEXT,AN)




Kirak egy "TEXT" felíratú gombot, amire kattinva az "AN" nevű animáció állapota az ellenkezőjére vált.

Pl.: