openBVE - animált objektum készítés
Leírás az openBVE-hez kapcsolódó „.animated” fájl elkészítéséhez

A leírás az openBVE-hez készíthető animált objektumokhoz szükséges .animated kiterjesztésű fájlokban használható parancsok, függvények magyarázatát írja le. A fájl elkészítésével animált (mozgó) objektumok készíthetőek.

A dokumentum forrása a http://trainsimframework.org/develop/object_animated.html weboldal. Az openBVE folyamatos frissítése miatt előfordulhatnak, hogy a parancsok nem a leírt módon működnek. Egyes elemek működése ismeretlen, vagy még nem kipróbált, vagy a leírás még hiányzik. Ezek sárga színű kiemeléssel vannak jelezve. Ezért a leírás nem teljes körű, néhol hiányos, vagy még angol nyelvű.

Utolsó frissítés: 2011.06.22.

Tartalomjegyzék

Általános tudnivalók.. 1

Szakaszok.. 2

[Include] szakasz. 2

[Object] szakasz. 2

Position. 2

States. 2

Translate. 2

Rotate. 3

Texture. 4

TextureOverride. 4

RefreshRate. 4

Műveletek.. 5

Alapműveletek.. 5

Összehasonlítások.. 5

Logikai műveletek.. 6

Műveletek sorrendje. 6

Funkciók.. 6

Alapvető műveletek.. 6

Számtani műveletek.. 7

Elemi műveletek.. 7

Feltételezés. 7

Változók.. 8

Rendszer. 8

Idő és kamera. 8

Jármű.. 8

Általános. 8

Fékek. 9

Ajtók. 10

Egyéb. 10

Térköz (jelzők). 11

 

Általános tudnivalók

§  Az animált objektum fájl kiterjesztése: .animated

§  A fájlban lehetőség van objketumfájlokat beágyazni, az így beágyazott objektumakat egyenként lehet pozicionálni is, így azok az objektum részeként fognak megjelenni.

Szakaszok

[Include] szakasz

Ebben a szakaszban objektumok fájljait lehet megnevezni, ezek az objektumok beágyazódnak és animáció nélkül fognak megjelenni. A fájlban bármennyi [Include] szakasz lehet.

[Include]

Ez a bejegyzés kezdi el az Include szakaszt.

Fájlnév0

Fájlnév1

Fájlnév2

Betölt n számú CSV/B3D/X/ANIMATED kiterjesztésű fájlt. A fájlok neveit egymás alá kell írni, az elérési útvonallal együtt.

Position = X, Y, Z

Az objektumok helyét határozza meg. Ez alapvetően megfelel a TranslateAll parancsnak.

[Object] szakasz

Ebben a szakaszban objektumok fájljait lehet megnevezni, ezek az objektumok beágyazódnak és animációt lehet hozzájuk rendelni. A fájlban bármennyi [Object] szakasz lehet.

[Object]

Ez a bejegyzés kezdi el az Object szakaszt.

Position

Position = X, Y, Z

Az objektum helyét határozza meg. Ez alapvetően megfelel a TranslateAll parancsnak, azonban a parancs csak az egyéb funkciók után kerül kiértékelésre. Például ha egy objektumot elforgatunk, akkor az objektum az origó körül elfordul, és a Position paranccsal a már elforgatott objektum helyét tudjuk meghatározni.

 States

States = Fájl0, Fájl1, …, Fájln-1

Betölt n számú CSV/B3D/X kiterjesztésű fájlt. A fájlok neveit vesszővel kell elválasztani. Az elsőnek írt fájl indexszáma 0, a másodiké 1, stb. Akkor érdemes használni több fájl betöltését, ha valamilyen funkcióra meg akarjuk változtatni az objektumot.

StateFunction = Függvény

Egy függvényt határozhatunk meg arra, hogy az objektum megváltozzon. A függvény értéke kerekítve lesz a leközelebbi egész számra. Ha a függvény értéke 0 és n-1 közé esik (ahol n a betöltött objektumok száma), akkor az adott indexszámú objektum fog megjelenni, más esetben nem jelenik meg objektum. Az utóbbit használhatjuk például akkor, ha egy adott objektumot bizonyos eset(ek)ben láthatatlanná akarunk tenni.

Translate

TranslateXDirection = X, Y, Z

TranslateYDirection = X, Y, Z

TranslateZDirection = X, Y, Z

Ezek a parancsok a TranslateXFunction, TranslateYFunction, TranslateZFunction irányát határozzák meg. Az alapértelmezett irányok:

TranslateXDirection = 1,0,0

TranslateYDirection = 0,1,0

TranslateZDirection = 0,0,1

Ez azt jelenti, hogy a TranslateXFunction alapértelmezésben jobbra mozgat, a TranslateYFunction alapértelmezésben felfelé mozgat, a TranslateZFunction alapértelmezésben előrefelé mozgat. Ha másmilyen irányokat határozunk meg, akkor a három funkció és a társított íránya független módként működik, így mozgatva az objektumot a megadott irányba.

TranslateXFunction = Függvény

TranslateYFunction = Függvény

TranslateZFunction = Függvény

Egy Függvény határozható meg ahhoz, hogy az objektum a megadott irányba mozogjon. Az Függvény értékének vissza kell térnie a kezdeti pozícióba, hogy az objektum a kezdeti pozícióból mozogjon. Az X, Y és Z paraméterek többszörözhetők is a Függvény végeredményeként, így például, ha a duplázzuk a függvény eredményét 2-vel, vagy az irányát 2-vel, akkor az objektum 2-szer olyan gyorsan fog mozogni.

Rotate

RotateXDirection = X, Y, Z

RotateYDirection = X, Y, Z

RotateZDirection = X, Y, Z

Ugyanaz, mint a Translate parancs, de itt az irány az objektum forgatás irányára vonatkozik. Az egyes paramétereknél eltérő irány is megadható, amely a sorrend meghatározásakor fontos. A program először a RotateXDirection-ben, majd a RotateYDirection-ben, végül a RotateZDirection-ben megadott irány körül forgatja az objektumot. Lásd a lentebbi példát.

RotateXFunction = Függvény

RotateYFunction = Függvény

RotateZFunction = Függvény

Egy Függvény határozható meg ahhoz, hogy az objektum milyen mértékben forduljon el az óramutató járásávál ellentétes irányba. A forgatás szögét radiánban kell megadni, nem pedig fokban!

Kiszámítása:

radián = fok * pi / 180. Azaz 90 fok * 3,141592654 / 180 = 1,570796327 radián.

A következő példában először a Z, majd X, végül az Y tengely körül forgatja a program az objektumot:

RotateXDirection = 0,0,1

RotateXFunction = 0.3456

RotateYDirection = 1,0,0

RotateYFunction = 0.4567

RotateZDirection = 0,1,0

RotateZFunction = 0.6789

 

RotateXDamping = NaturalFrequency, DampingRatio

RotateYDamping = NaturalFrequency, DampingRatio

RotateZDamping = NaturalFrequency, DampingRatio

A csillapítás állítható be a megfelelő funkcióhoz. Ha nincs használva, akkor csillapítás nem érzékelhető.

A NaturalFrequency egy nem negatív szám. Minél magasabb értéket használunk, annál gyorsabb a forgás folyamata. A DampingRatio egy nem negatív érték, amely a csillapítás típusát mutatja. 0 és 1 közötti érték esetén alulcsillapított, a forgás végén kileng az objektum, mire eléri a végső pozícióját. 1 esetén nincs kilengés, 1 feletti érték esetén felülcsillapított, a forgás végéhez közeledve lassul az objektum.

Texture

TextureShiftXDirection = X, Y

TextureShiftYDirection = X, Y

TextureShiftZDirection = X, Y

Alapvetően azonos a Translate és Rotate parancsokkal, de ezekkel a parancsokkal a textúra mozgása hatátozható meg.

TextureShiftXFunction = Függvény

TextureShiftYFunction = Függvény

TextureShiftZFunction = Függvény

Egy Függvény határozható meg ahhoz, hogy az objektumhoz használt textúra milyen irányba, és mértékben mozogjon. A függvény értéke az objektumban használt Coordinates értékekre vonatkozik. Az eredmény egész szám része figyelemen kívül marad, így például a megmaradt 0.5 törtrésze azt eredményezi, hogy a textúra másik fele fog látszódni. Az objektumban a Coordinates parancsok határozzák meg az eredeti értéket, és ehhez adódik hozzá a függvény eredménye.

TextureOverride

TextureOverride = Érték

Value = Timetable: All faces will show the timetable bitmap as set up by CSV/RW routes.

Value = None: The original textures will be displayed on the faces (default behavior).

RefreshRate

RefreshRate = másodperc

Meghatározza azt az időtartamot másodpercben, amelynek a funkció frissüléséig el kell telnie. A 0 érték azt jelenti, hogy minden pillanatban frissül a funckió. A vizuális tartományon kívül eső objektumok kevesebbszer frissülnek. Ezt a lehetőséget akkor javasolt használni, ha nincs szükség egy tökéletes sima és folyamatos animációra.

Műveletek

Amennyiben bármilyen matematikai művelet, vagy funkció használata végtelen, határozatlan vagy nem valós, akkor a Függvény értéke 0.

Azaz ilyenkor az objektumot működésképtelennek látjuk.

About the formulas. First of all, there are two notations, namely the infix/functional notation and the postfix notation. If you want to use postfix notation, also called reverse polish notation (RPN), use TranslateXFunctionRPN instead of TransateXFunction, and so on. In this short presentation, I will not cover the RPN notation, which is for advanced developers anyway as it allows for some optimizations.

First of all, infix notation is converted into functional notation, thus for every infix notation, there is a corresponding functional notation. Some functions do not have an infix operator and can thus only be entered in functional notation. For operators, precedence plays an important role. You can use parantheses to override the order of precedence just as in any usual mathematical formula. Names of functions are case-insensitive.

Alapműveletek

Szintaxisa

Funkciója

Leírása

a + b

Plus[a,b, ...]

Összeadás művelet

a - b

Subtract[a,b]

Kivonás művelet

-a

Minus[a]

Előjel megváltoztatása

a * b

Times[a,b,...]

Szorzás művelet

a / b

Divide[a,b]

Osztás művelet

Összehasonlítások

Mindegyik művelet 1 értékét ad, ha igaz, 0 értéket, ha hamis.

Szintaxisa

Funkciója

Leírása

a == b

Equal[a,b]

Igaz (1), ha a egyenlő b-vel

a != b

Unequal[a,b]

Igaz (1), ha a nem egyenlő b-vel

a < b

Less[a,b]

Igaz (1), ha a kisebb, mint b

a > b

Greater[a,b]

Igaz (1), ha a nagyobb, mint b

a <= b

LessEqual[a,b]

Igaz (1), ha a kisebb, vagy egyenlő mint b

a >= b

GreaterEqual[a,b]

Igaz (1), ha a nagyobb, vagy egyenlő mint b

Logikai műveletek

Mindegyik művelet 0-át kezel, ahogy bármilyen értéke igaz lesz, akkor az értéke 1, ha hamis, akkor az értéke 0.

Szintaxisa

Funkciója

Leírása

!a

Not[a]

Igaz (1), ha a hamis

a & b

And[a,b]

Igaz (1), ha a és b igaz

a | b

Or[a,b]

Igaz (1), ha a vagy b igaz

a ^ b

Xor[a,b]

True (1) if either a or b is true

Műveletek sorrendje

A műveletek elsőbbségi sorrendje a legelsőtől a legutolsóig. Az azonos sorban látható műveletek azonos szintű sorrendben vannak.

- (Mínusz)

/

*

+, -

==, !=, <, >, <=, >=

!

&

^

|

 

Funkciók

Alapvető műveletek

Funkció

Leírása

Reciprocal[x]

Az x reciprokát adja eredményül, amely: 1/x.

Power[a,b,...]

Az a b-edik hatványát adja eredményül. Ha a pozitív, akkor b bármilyen szám lehet. Ha a negatív, akkor b-nek egész számnak kell lennie.

A Power[0,b] eredménye mindig 1. A negatív szám törtszám hatványa mindig 0, még akkor is, ha valós szám lenne az eredménye.

Számtani műveletek

Funkció

Leírása

Quotient[a,b]

a és b hányadosának, lefelé kerekített értékét adja ereményül, amely megegyezik a következővel:
Floor[a/b].

Mod[a,b]

A a és b hányadosának maradékát adja eredményül, amely megegyezik a következővel:
a-b*Floor[a/b].

Min[a,b,...]

A tartomány legkisebb értékét adja eredményül.

Max[a,b,...]

A tartomány legmagasabb értékét adja eredményül.

Abs[x]

Az x abszolútértékét adja eredményül.

Sign[x]

Az x előjelét adja vissza, amely -1, 0, vagy 1 lehet.

Floor[x]

Lefelé kerekít a legközelebbi egész számra.

Ceiling[x]

Felfelé kerekít a legközelebbi egész számra.

Round[x]

Kerekít a legközelebbi egész számra.

Elemi műveletek

Funkció

Leírása

Exp[x]

Exponenciális függvény, vagy e az x-ediken. Az e értéke: 2,718281828.

Log[x]

e alapú természetes logaritmus.

Sqrt[x]

Az x négyzetgyöke

Sin[x]

Az x, radiánban megadott szinuszát adja eredményül.

Cos[x]

Az x, radiánban megadott koszinuszát adja eredményül.

Tan[x]

Az x, radiánban megadott tangensét adja eredményül.

ArcTan[x]

Az x inverz tangensét adja eredményül, radiánban.

Feltételezés

Funkció

Leírása

If[logikai_vizsgálat,igaz,hamis]

Ha a logikai_vizsgálat nem egyenlő 0-val, akkor az igaz értéket, más esetben a hamis értéket adja eredményül.

Változók

Rendszer

Változó

Leírása

value

A funkció legutolsó értékelésekor kiadott eredményt adja vissza.

delta

A funkció legutolsó értékelése óta eltelt időt adja vissza másodpercben.

Idő és kamera

Változó

Leírása

time

A játékban az első nap éjfél óra eltelt időt adja eredményül, másodpercben.

cameradistance

Az objektum tényleges helyétől mért távolság a kamerához képest, méterben.

Jármű

A jármű külső nézetéhez kapcsolódó változók az adott járműre vonatkoznak. A többi változó jelenleg csak a játékos által vezetett járműre vonatkoznak.

 

A kocsik carindex indexszáma, a továbbiakban leírt változókban a következőt jelenti:

0 a jármű elölről számított legelső kocsija, 1, a jármű elölről számított második kocsija, stb.

-1 a jármű hátulról számított legelső kocsija, -2, a jármű hátulról számított második kocsija, stb.

Alapértelmezésben az indexszámok –n és n-1 közöttiek, ezek jelentik a létező kocsikat, ahol n a szerevénybe sorolt kocsik száma. Ha az érték ezen a tartományon kívül esik, akkor az nem létező kocsiknak tekintendő. Mindegyik vonatnak van legalább 1 kocsija, így a -1 (hátulról az első) és 0 (elölről az első) értékek garantáltan előfordulnak.

 

Általános

Változó

Leírása

cars

A jármű kocsijainak száma

speed

The signed average speed of the train in m/s. Is positive when the train travels forward, and negative when the train travels backward.

speed[carindex]

The signed actual speed of the car carIndex in m/s. Is positive when the train travels forward, and negative when the train travels backward.

speedometer

The signed speed as indicated on the speedometer in the driver's car in m/s. Is affected by wheel slip and wheel lock. Is positive when the train travels forward, and negative when the train travels backward.

speedometer[carindex]

The signed perceived speed of the car carIndex in m/s as it would appear to a speedometer on wheel slip and wheel lock.

acceleration

The actual acceleration of the current car in m/s².

acceleration[carindex]

The actual acceleration of the car carIndex in m/s².

accelerationMotor

The acceleration which the motor of the first motor car currently generates in m/s².

accelerationMotor[carindex]

The acceleration which the motor of the car carIndex currently generates in m/s².

distance

Az objektum tényleges helyétől mért távolság a jármű legközelebbi tengelyéhez mérve. Mindig pozitív szám. (lásd a lentebbi ábrát)

distance[i]

Az objektum tényleges helyétől mért távolság az i indexszámú kocsi közepéhez mérve. Mindig pozitív szám. Az érték 0, ha a kocsi nem létezik.

trackdistance

Az objektum pályán elhelyezett távolsága a jármű legközelebbi végéhez mérve, méterben. Pozitív értékű, ha a jármű az objektum előtt van, negatív, ha mögötte, és 0, ha az objektum a jármű két vége között van. (lásd a lentebbi ábrát)

trackdistance[i]

Az objektum pályán elhelyezett távolsága az i indexszámú kocsi közepéhez mérve, méterben. Pozitív értékű, ha a kocsi közepe az objektum előtt van, negatív, ha mögötte. Az érték 0, ha a kocsi nem létezik.

distance és trackdistance közötti különbség:

Fékek

Változó

Leírása

mainReservoir

A jelenlegi töltővezetéki nyomás az adott kocsin, mértékegysége: Pa.

mainReservoir[carIndex]

A jelenlegi töltővezetéki nyomás a carindex-ben megadott kocsin, mértékegysége: Pa.

emergencyReservoir

A jelenlegi nyomásérték vészfék esetén az adott kocsin, mértékegysége: Pa.

emergencyReservoir[carIndex]

A jelenlegi nyomásérték vészfék esetén a carindex-ben megadott kocsin, mértékegysége: Pa.

brakePipe

A jelenlegi fékvezetéki nyomás az adott kocsin, mértékegysége: Pa.

brakePipe[carIndex]

A jelenlegi fékvezetéki nyomás a carindex-ben megadott kocsin, mértékegysége: Pa.

brakeCylinder

A jelenlegi fékhengernyomás az adott kocsin, mértékegysége: Pa.

brakeCylinder[carIndex]

A jelenlegi fékhengernyomás a carindex-ben megadott kocsin, mértékegysége: Pa.

straightAirPipe

The current pressure in the straight air pipe in this car, measured in Pa.

straightAirPipe[carIndex]

The current pressure in the straight air pipe in car carIndex, measured in Pa.

Ajtók

Változó

Leírása

doors

Az ajtók állapota. 0 ha zárva, 1 ha nyitva vannak.

doors[carindex]

Az ajtók állapota az adott kocsin. 0 ha zárva, 1 ha nyitva vannak.

leftdoors

A bal oldali ajtók állapota. 0 ha zárva, 1 ha nyitva vannak.

leftdoors[carindex]

Az i indexszámú kocsinak a bal oldali ajtók állapota. 0 ha zárva, 1 ha nyitva vannak. -1, ha a kocsi nem létezik.

rightdoors

A jobb oldali ajtók állapota. 0 ha zárva, 1 ha nyitva vannak.

rightdoors[carindex]

Az i indexszámú kocsinak a jobb oldali ajtók állapota. 0 ha zárva, 1 ha nyitva vannak. -1, ha a kocsi nem létezik.

leftdoorstarget

A bal oldali ajtók célállapotát adja vissza. 0 ha a célállapot az ajtók zárt állapota, 1 ha a célállapot az ajtók nyitott állapota.

leftdoorstarget[carindex]

Az i indexszámú kocsinak a bal oldali ajtók célállapotát adja vissza. 0 ha a célállapot az ajtók zárt állapota, 1 ha a célállapot az ajtók nyitott állapota.

rightdoorstarget

A jobb oldali ajtók célállapotát adja vissza. 0 ha a célállapot az ajtók zárt állapota, 1 ha a célállapot az ajtók nyitott állapota.

rightdoorstarget[carindex]

Az i indexszámú kocsinak a jobb oldali ajtók célállapotát adja vissza. 0 ha a célállapot az ajtók zárt állapota, 1 ha a célállapot az ajtók nyitott állapota.

Egyéb

Változó

Leírása

reverserNotch

Az irányváltó állapotát adja vissza -1 (hátra állás), 0 (nulla állás), 1 (előre állás).

powerNotch

The current power notch, i.e. 0 for N, 1 for P1, 2 for P2, 3 for P3, etc.

powerNotches

The amount of power notches the train has.

brakeNotch

The current brake notch.

For trains without the automatic air brake: 0 for N, 1 for B1, 2 for B2, 3 for B3, etc.

For trains with the automatic air brake: 0 for REL, 1 for LAP and 2 for SRV

brakeNotches

The amount of brake notches the train has. For trains with the automatic air brake, this returns 2.

brakeNotchLinear

A combination of brake notch, hold brake and emergency brake.

For trains without the automatic air brake and without hold brake: 0 for N, 1 for B1, 2 for B2, 3 for B3, etc., up to BrakeNotches+1 for EMG.

For trains without the automatic air brake but with hold brake: 0 for N, 1 for HLD, 2 for B1, 3 for B2, 4 for B3, etc., up to BrakeNotches+2 for EMG.

For trains with the automatic air brake: 0 for REL, 1 for LAP, 2 for SRV or 3 for EMG.

brakeNotchesLinear

The highest value returned by brakeNotchesLinear.

For trains without the automatic air brake and without hold brake, this is BrakeNotches+1.

For trains without the automatic air brake but with hold brake, this is BrakeNotches+2.

For trains with the automatic air brake, this returns 3.

emergencyBrake

Whether the emergency brake is currently active (1) or not (0).

hasAirBrake

Whether the train has the automatic air brake (1) or not (0).

holdBrake

Whether the hold brake is currently active (1) or not (0).

hasHoldBrake

Whether the train has a hold brake (1) or not (0).

constSpeed

Whether the const speed system is currently active (1) or not (0).

hasConstSpeed

Whether the train has a const speed system (1) or not (0).

hasPlugin

Whether the train uses a plugin (1) or not (0).

pluginState[i]

The state of the ith plugin variable, returning an integer depending on the plugin. Is the same as atsi in the panel2.cfg.

 

 

Térköz (jelzők)

The section context is defined when the object is placed using Track.FreeObj.

Változó

Leírása

section

The value of the section aspect currently shown. Without a section context, this returns 0.

 

 

http://www.bveklub.hu/

http://www.bvemetro.hu/

© 2009-2011