openBVE objektumpéldák
Leírás az objektumkészítéshez használható parancsokról

A leírás a BVE / openBVE-hez készíthető B3D kiterjesztésű objektumok készítéséhez néhány példát ír le.

Utolsó frissítés 2009.07.29.

Tartalomjegyzék

Általános tudnivalók, fogalmak.. 2

origó.. 2

szelvényezés, szelvényszám... 2

sínkoronaszint. 2

vágánytengely.. 2

Ajánlott leírások.. 2

Példák.. 3

Alappélda egy szemből készített textúra felhasználására. 3

Példa egy szemből készített textúra több felületben történő felhasználására. 5

 

Általános tudnivalók, fogalmak

origó

A koordinátatengelyek metszéspontját origónak nevezzük. Az openBVE-ben az objektumokat gyakorlatilag egy koordináta-rendszer szerint kell elhelyezni. A BVE-ben az origó a 0. vágány vágánytengelyének (X tengely), a sín koronaszintjének (Y tengely), és az aktuális szelvényszámnak (Z tengely) a metszéspontja. Az objektumok elhelyezését ennek megfelelően kell meghatározni.

szelvényezés, szelvényszám

A vasúti pálya helyének meghatározása a kezdőponttól mért távolságokkal történik, ez a szelvényezés.

Az openBVE-ben alapértelmezésben méterben kell megadni a szelvényszámokat.

sínkoronaszint

A sín felső érintősíkjának abszolút magassága (íves pályán a belső sínszálon mérve).

vágánytengely

A nyomtávolság felezőpontjainak vonala. (Ívben nyombővítés esetén a külső sínszáltól mért fél nyomtávolságra fekszik.)

Ajánlott leírások

A leírás bővebb megértéséhez javasolt a következő leírások tanulmányozása:

Leírás

Írta

Link

BVE objektumkészítés

Krisz

http://www.bveklub.hu/informaciok/bve-objektumkeszites.pdf

Primitívek textúrázása

Alex

http://www.bveklub.hu/informaciok/primitivek-texturazasa.pdf

Példák

Alappélda egy szemből készített textúra felhasználására

Az objektumok készítése során sokszor fordul elő, hogy egy szemből készített fényképet szeretnénk felhasználni.

Példa egy felület elkészítésre, amely egy szemből készített fényképből készíthető:

Képzeletben álljunk szembe a felülettel (mint amikor fényképeztük).

A felület 4 sarkának koordinátáit határozzuk meg, és a bal alsó saroktól kiindulva az óramutató járásával megegyező irányban haladva sorrendben írjuk le azokat.

A példában szereplő kép, szélessége 0,5 méter, magassága 0,55 méter, hosszúsága nincs.

[MeshBuilder]

Vertex 0.0,0.0,0 ; 0. vertex = bal alsó sarok

Vertex 0.0,0.55,0 ; 1. vertex = bal felső sarok

Vertex 0.5,0.55,0 ; 2. vertex = jobb felső sarok

Vertex 0.5,0.0,0 ; 3. vertex = jobb alsó sarok

A Face 0,1,2,3 használatával a pontokat az óramutató járásával megegyező irányban összekötjük:

Face 0,1,2,3

Beírjuk a fájlba a kívánt textúrát

[Texture]

Load fekezes.bmp

Ezután beírjuk a következő parancsokat, pontosan ugyanígy:

Coordinates 0,0,1

Coordinates 1,0,0

Coordinates 2,1,0

Coordinates 3,1,1

Ekkor a következő található a fájlban:

[MeshBuilder]

Vertex 0.0,0.0,0 ; bal alsó sarok

Vertex 0.0,0.5,0 ; bal felső sarok

Vertex 0.5,0.5,0 ;jobb felső sarok

Vertex 0.5,0.0,0 ;jobb alsó sarok

Face 0,1,2,3

[Texture]

Load fekezes.bmp

Coordinates 0,0,1

Coordinates 1,0,0

Coordinates 2,1,0

Coordinates 3,1,1

Ez a fájl a képet szemből jeleníti meg.

Amennyiben hosszanti irányú objektumot akarunk készíteni (például a vágánnyal párhuzamosan futó falat), akkor a koordinátákat értelemszerűen úgy határozzuk meg, hogy képzeletben forduljunk a felülettel szembe.

A Coordinates parancsok változtatása a fenti példára:

A változtatások az eredeti példára vonatkoznak. Az 1. oszlopban lévő számok nem változnak!

Változtatás

Hatás

A 2. oszlopban az 1 értékek helyett írjunk 2-t:

Coordinates 0,0,1

Coordinates 1,0,0

Coordinates 2,2,0

Coordinates 3,2,1

A kép vízszintesen többszöröződik a megadott arányban (jelen esetben 2, azaz 2x jelenik meg), a megadott méreten belül, azaz a kép  összezsugorodva jelenik meg:

A 2. oszlopban az 1 értékek helyett írjunk 0.5-t:

Coordinates 0,0,1

Coordinates 1,0,0

Coordinates 2,0.5,0

Coordinates 3,0.5,1

A kép textúrája vízszintesen csak a megadott arányban jelenik meg. A kép a vízszintesen megadott aránytól kezdődően (jelen esetben 0, azaz a pontosan a bal szélétől) jelenik meg a kép jobb oldalán megadott arányig (jelen esetben 0.5, azaz a feléig) a megadott méreten belül, azaz a kép vízszintesen nyújtott lesz.

A 2. oszlopban a 0 értékeket módosítsuk 0.5-re:

Coordinates 0,0.5,1

Coordinates 1,0.5,0

Coordinates 2,1,0

Coordinates 3,1,1

A kép textúrája vízszintesen csak a megadott arányban jelenik meg. A kép a vízszintesen megadott aránytól kezdődően (jelen esetben 0.5, azaz a felétől) jelenik meg a kép jobb oldalán megadott arányig (jelen esetben 1, azaz pontosan a kép jobb széléig) a megadott méreten belül, azaz a kép vízszintesen nyújtott lesz.

A 3. oszlopban az 1 értékek helyett írjunk 2-t:

Coordinates 0,0,2

Coordinates 1,0,0

Coordinates 2,1,0

Coordinates 3,1,2

A kép függőlegesen többszöröződik a megadott arányban (jelen esetben 2, azaz 2x jelenik meg), a megadott méreten belül, azaz a kép  összezsugorodva jelenik meg:

A 3. oszlopban az 1 értékek helyett írjunk 0.5-t:

Coordinates 0,0,0.5

Coordinates 1,0,0

Coordinates 2,1,0

Coordinates 3,1,0.5

A kép textúrája függőlegesen csak a megadott arányban jelenik meg. A kép a függőlegesen megadott aránytól kezdődően (jelen esetben 0, azaz a pontosan a tetejétől) jelenik meg a kép alján megadott arányig (jelen esetben 0.5, azaz a feléig) a megadott méreten belül, azaz a kép függőlegesen nyújtott lesz.

A 3. oszlopban az 0 értékek helyett írjunk 0.5-t:

Coordinates 0,0,1

Coordinates 1,0,0.5

Coordinates 2,1,0.5

Coordinates 3,1,1

A kép textúrája függőlegesen csak a megadott arányban jelenik meg. A kép a függőlegesen megadott aránytól kezdődően (jelen esetben 0.5, azaz a felétől) jelenik meg a kép alján megadott arányig (jelen esetben 1, azaz pontosan az aljáig) a megadott méreten belül, azaz a kép függőlegesen nyújtott lesz.

A 2. oszlopban a 0 és 1 értékeket cseréljük fel:

Coordinates 0,1,1

Coordinates 1,1,0

Coordinates 2,0,0

Coordinates 3,0,1

A kép vízszintesen tükröződik:

A 3. oszlopban a 0 és 1 értékeket cseréljük fel:

Coordinates 0,0,0

Coordinates 1,0,1

Coordinates 2,1,1

Coordinates 3,1,0

A kép függőlegesen tükröződik:

 

A készítés alapja, hogy az készítendő felület velünk szemben van. Ha egy hosszirányban létező falat szemben akarunk látni, akkor felé kell fordulni képzeletben, de az origó marad azon a helyen, ahol elfordultunk. Ehhez az origóhoz képest kell a koordináta-pontokat meghatározni.

Példa egy szemből készített textúra több felületben történő felhasználására

Ez a példa egy olyan felület készítését írja le, amikor egyetlen textúrát több felületben szeretnénk létrehozni, például egy nem egyenes fal készítéséhez.

A textúrát el kell osztani annyi felé, ahány felületből szeretnénk az objektumot elkészíteni. A  példában 4 darabra kerül felosztásra a textúra.

Az eredeti példát követve így 4 felületünk lesz (piros számokkal jelzettek).

Ehhez az eredeti példa szerint a koordináták meghatározása után írjuk meg a felületeket, és a felületekhez a bal alsó sarkokból kiindulva számozzuk be a pontokat. Az objektum magasságilag (Y-tengelyen) 0.0-4.0 méterek között legyen a példa szerint:

 

;1 felület

[MeshBuilder]

Vertex 0.0,3.0,0 ; 1.felület bal alsó sarok

Vertex 0.0,4.0,0 ; 1.felület bal felső sarok

Vertex 0.5,4.0,0 ; 1.felület jobb felső sarok

Vertex 0.5,3.0,0 ; 1.felület jobb alsó sarok

;2 felület

[MeshBuilder]

Vertex 0.0,2.0,0 ; 2.felület bal alsó sarok

Vertex 0.0,3.0,0 ; 2.felület bal felső sarok

Vertex 0.5,3.0,0 ; 2.felület jobb felső sarok

Vertex 0.5,2.0,0 ; 2.felület jobb alsó sarok

;3 felület

[MeshBuilder]

Vertex 0.0,1.0,0 ; 3.felület bal alsó sarok

Vertex 0.0,2.0,0 ; 3.felület bal felső sarok

Vertex 0.5,2.0,0 ; 3.felület jobb felső sarok

Vertex 0.5,1.0,0 ; 3.felület jobb alsó sarok

;4 felület

[MeshBuilder]

Vertex 0.0,0.0,0 ; 4.felület bal alsó sarok

Vertex 0.0,1.0,0 ; 4.felület bal felső sarok

Vertex 0.5,1.0,0 ; 4.felület jobb felső sarok

Vertex 0.5,0.0,0 ; 4.felület jobb alsó sarok

 

Észrevehetjük, hogy az 1. felület bal alsó sarka egyezik a 2. felület bal felső sarkával, illetve az 1. felület jobb alsó sarka egyezik a 2. felület jobb felső sarkával. Ezekből az egyiket vegyük ki, mert feleslegesek, és egy Meshbuilder szakaszba tegyük a pontokat:

 

[MeshBuilder]

;1 felület

Vertex 0.0,3.0,0 ; 1.felület bal alsó sarok;  2. felület bal felső sarok

Vertex 0.0,4.0,0 ; 1.felület bal felső sarok

Vertex 0.5,4.0,0 ; 1.felület jobb felső sarok

Vertex 0.5,3.0,0 ; 1.felület jobb alsó sarok; 2. felület jobb felső sarok

;2 felület

Vertex 0.0,2.0,0 ; 2.felület bal alsó sarok;  3. felület bal felső sarok

Vertex 0.5,2.0,0 ; 2.felület jobb alsó sarok; 3. felület jobb felső sarok

;3 felület

Vertex 0.0,1.0,0 ; 3.felület bal alsó sarok;  4. felület bal felső sarok

Vertex 0.5,1.0,0 ; 3.felület jobb alsó sarok; 4. felület jobb felső sarok

;4 felület

Vertex 0.0,0.0,0 ; 4.felület bal alsó sarok

Vertex 0.5,0.0,0 ; 4.felület jobb alsó sarok

 

A pontok indexszámai (sorrendisége) eszerint változott:

Észrevehetjük, hogy valamiféle rendszerbe kerültek a számozások, kivéve a felső részt. Az 1. felületben módosítsuk a sorrendet úgy, hogy fentről lefelé és balról jobbra sorrendben 0-1, majd 2-3, és tovább változatlanul 4-5, 6-7, 8-9 legyen. Ezeket nevezzük el vertex-párosoknak.

 

[MeshBuilder]

;1 felület

Vertex 0.0,4.0,0 ; 1.felület bal felső sarok

Vertex 0.5,4.0,0 ; 1.felület jobb felső sarok

Vertex 0.0,3.0,0 ; 1.felület bal alsó sarok;  2. felület bal felső sarok

Vertex 0.5,3.0,0 ; 1.felület jobb alsó sarok; 2. felület jobb felső sarok

;2 felület

Vertex 0.0,2.0,0 ; 2.felület bal alsó sarok;  3. felület bal felső sarok

Vertex 0.5,2.0,0 ; 2.felület jobb alsó sarok; 3. felület jobb felső sarok

;3 felület

Vertex 0.0,1.0,0 ; 3.felület bal alsó sarok;  4. felület bal felső sarok

Vertex 0.5,1.0,0 ; 3.felület jobb alsó sarok; 4. felület jobb felső sarok

;4 felület

Vertex 0.0,0.0,0 ; 4.felület bal alsó sarok

Vertex 0.5,0.0,0 ; 4.felület jobb alsó sarok

 

Ezután az egyes felületek pontjait az óramutató járásával megegyező irányban kössük össze, és ne felejtsük beírni a textúra nevét sem:

face 2,0,1,3 ; 1. felület

face 4,2,3,5 ; 2. felület

face 6,4,5,7 ; 3. felület

face 8,6,7,9 ; 4. felület

[Texture]

Load fal.bmp

Ezután az 1. felülethez a Coordinates parancsokat az eredeti példát követve írjuk be:

Coordinates 0,0,0 ; 1. felület bal felső sarok

Coordinates 1,1,0 ; 1. felület jobb felső sarok

Coordinates 2,0,1 ; 1. felület bal alsó sarok

Coordinates 3,1,1 ; 1. felület jobb alsó sarok

A 2. felületben a 2. és 3. Coordinates már adott, így azokat nem változtathatjuk hiszen akkor az 1. felületben változna a textúra megjelenése. Azonban függőlegesen a textúrának egy egységnyit kell megjelennie, így a Coordinates 3. számjegyéhez írjunk 2-t. Így ez NEM többszörözést jelent, hiszen a felső és alsó sarok között pontosan 1 egység van!

Coordinates 2,0,1 ; 2. felület bal alsó sarok

Coordinates 3,1,1 ; 2. felület jobb alsó sarok

Coordinates 4,0,2 ; 3. felület bal alsó sarok

Coordinates 5,1,2 ; 3. felület jobb alsó sarok

Ezt követve folytassuk lefelé:

Coordinates 6,0,3

Coordinates 7,1,3

Coordinates 8,0,4

Coordinates 9,1,4

Ezzel az objektum úgy fog kinézni, hogy a textúránk 4x jelenik meg függőlegesen. Azonban a vertex-párosokhoz tartozó a Coordinates parancs 3. számjegyének módosításával  tetszőlegesen változtathatjuk a textúra arányait függőlegesen. A példa szerint az 1 egységnyi textúrát 4 egyenlő részre kell osztani:

Coordinates 0,0,0

Coordinates 1,1,0

Coordinates 2,0,0.25

Coordinates 3,1,0.25

Coordinates 4,0,0.50

Coordinates 5,1,0.50

Coordinates 6,0,0.75

Coordinates 7,1,0.75

Coordinates 8,0,1

Coordinates 9,1,1

Így az objektum az eredetileg elképzeltek szerint fog megjelenni: A teljes textúra egyszer, de négy darabban. Ha a vertex-párosokban (vertex 0-1, 2-3, 4-5, 6-7, 8-9) a koordináta-pontokat változtatjuk, akkor a textúra a térben „megtörhető”, így hozhatóak létre olyan objektumok, amik nem egyenesek, de egy textúrát kell hozzá alkalmazni (pl egy kör keresztmetszetű fal).

Megjegyzések:

§  A textúra vízszintes irányában (X-irányban) is hasonló módon lehet az arányokat változtatni. Ehhez az objektum/felület elkészítése szerinti Coordinates parancsokban kell a megfelelő számot (általában a 2. számjegy) változtatni.

§  Természetesen tetszőleges számú darabban is készíthető objektum egy textúrából. A példa szerinti 4 darab esetén 4x2 + 2 = 10 pont és 10 Coordinates parancsra van szükség (0-9-ig számozva). 10 darab esetén például 10x2 + 2 = 22 pontra van szükség.

http://www.bveklub.hu/

http://www.bvemetro.hu/

© 2009