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
§ 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.
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.
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 = 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 = 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.
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.
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.
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 = É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 = 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.
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.
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 |
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 |
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 |
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ó |
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. |
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: |
Mod[a,b] |
A a és b hányadosának maradékát
adja eredményül, amely megegyezik a következővel: |
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. |
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. |
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ó |
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. |
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. |
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.
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:
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. |
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. |
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. |
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. |
© 2009-2011