Támogatás

Az oldal oktatási célra készült, és folyamatosan fejlesztem, amikor időm engedi. A tárhelyet önerőből tartom fent, ezért bármilyen támogatással segítheted a további működést.

Paypal címem: 
niethammer.zoli@gmail.com

AR marker

A marker egy olyan kép, amelyet a kiterjesztett valóság modellkhez használunk. Nyomtasd ki kb. 10-15 cm méretben, vagy nagyítsd ki egy monitoron!

A webglbasic egyik erőssége a geometria számítása matematikai képletekkel. A példában egy üvegből készült terráriumot fogok modellezni úgy, hogy minden adatot változókban, paraméterekben tárolok.

Célszerű először papíron vagy egy 2D rajzoló programmal lerajzolni a modellt. Ezután ráírtam a paraméterket. Ebben az esetben 5 db ilyen méret lesz lényeges:

a: szélesség
b: hosszúság
c: előlap magassága
d: magasság
e: tetőlap hosszúsága

 Minden csúcs kap tetszőleges sorrendben egy sorszámot 1-től kezdődően. Ezek lesznek a felületek vertex pontjai.

Következő lépés a sík lapok háromszögekre bontása. Téglalapokat 2 db háromszögre lehet bontani, de az oldallapokat már 3 darabból kell összerakni.

A felületeket a vertex pontok felsorolásával lehet megadni. Célszerű azonos irányban haladva (pl. jobbra) haladva felsorolni a pontokat!

Például az alsó négyszög háromszögei:
1 2 3, és 3 4 1 

 

A baloldali lap háromszögei:

1 9 7, 1 5 9, és 1 4 5

A webglbasic kód elején megadjuk a paramétereket:

 

Ezután egy OBJ utasításban felsoroljuk a vertex pontokat. Az első pont sorszáma lesz 1. A pirossal jelölt sor a 3. pont koordinátái. A pont x,y,z koordinátái helyén számokat, és változókat is megadhatunk. Az adatokat csak 1 db szóköz válassza el egymástól!

Ezután jöhetnek a felületek háromszögei:

A megfelelő nézőpont beállítása után beszúrhatunk a forrásba néhány kamera utasítást.

   

Végül lehet különböző paraméterekkel generálni a 3D modellt.


A teljes kód:

color(#00bfff,#00bfff,#0,1,0.8)


a = 20
b = 10
c = 2
d = 10
e = 6


obj.start(2)

v 0 0 0
v a 0 0
v a 0 b
v 0 0 b
v 0 c b
v a c b
v 0 d 0
v a d 0
v 0 d e
v a d e

//---------------------
// alsó lap
f 1 2 3
f 1 3 4

//---------------
// bal oldala
f 1 9 7
f 1 5 9
f 1 4 5


//---------------
// jobb oldala
f 2 10 8
f 2 6 10
f 2 3 6

//---------------
// eleje
f 3 4 5
f 3 5 6

//---------------
// teteje
f 7 8 9
f 8 10 9


//---------------
// hátlap
f 1 7 2
f 7 8 2

obj.end

 

camera(KAM1, 25.66, 23.25, 41.04, 3.13, -0.74, -1.25)
camera(KAM2, -6.39, 30.53, 41.56, 8.37, -0.32, 0.31)