Animált objektum
| Figyelem! Ez a lap fejlesztők számára készült! Ha csak játszani akarsz, ezt nem kell elolvasnod. |
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. Az .animated kiterjesztésű fájlok felhasználhatók a CSV/RW formátumú pályákban, ovjektumként az extensions.cfg fájlban és 3D fülkéhez a panel.animated fájlban.
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ű.
Tartalomjegyzék
Általános tudnivalók[szerkesztés]
- 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.
- Alapvetőn a következő animálási lehetőség vannak:
- Állapotváltozás – egy objektum kicserélődik egy másikra
- Mozgatás – az objektum elmozdul valamely tengelyen
- Forgatás – az objektum elfordul valamely tengely körül
- Textúramozgatás – az objektum teytúrája mozog a két irány valamelyike felé
Szakaszok[szerkesztés]
[Include] szakasz[szerkesztés]
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 a szakaszt.
| Fájlnév0 Fájlnév1 Fájlnév2 ... |
Beállít CSV/B3D/X/ANIMATED kiterjesztésű fájlokat. 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 általánosságban, az egész fájlban ez a beállítás lesz az alapértelmezés.
[Object] szakasz[szerkesztés]
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. Legalább egy States paraméter szükséges hozzá.
| [Object] |
Ez a bejegyzés kezdi el a 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ó (0,0,0) körül elfordul, és a Position paranccsal a már elforgatott objektum helyét tudjuk meghatározni.
| States = File0, File1, ..., Filen-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 = Formula |
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. Ezek a parancsok a RotateXFunction, RotateYFunction, RotateZFunction irányát határozzák meg. Az alapértelmezett irányok:
RotateXDirection = 1, 0, 0
RotateYDirection = 0, 1, 0
RotateZDirection = 0, 0, 1
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!
| radián = fok * pi / 180 Azaz 90 fok * 3,141592654 / 180 = 1,570796327 radián. |
| 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 |
Ezek a parancsok a TextureShiftXDirection és a TextureShiftYDirection irányát határozzák meg. Az alapértelmezett irányok:
TextureShiftXDirection = 1, 0
TextureShiftYDirection = 0, 1
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 |
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 |
Érték = Nincs:
| 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.
| ⚠ | openBVE 2 compatibility note: During the development of openBVE (v0.9) and during the development of the animated object format, there were certain commands in existance ending in RPN, such as TranslateXFunctionRPN. These commands never made it into any official release (v1.0) and were thus never meant to be used outside of development environments. While they are still available undocumentedly, they will be removed for openBVE 2. If you are using these commands, please get rid of them as soon as possible. |
Műveletek[szerkesztés]
| ⚠ | 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. |
Műveletek listája[szerkesztés]
Alapműveletek[szerkesztés]
| 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[szerkesztés]
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[szerkesztés]
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] |
Műveletek sorrendje[szerkesztés]
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) |
| / |
| * |
| +, - |
| ==, !=, <, >, <=, >= |
| ! |
| & |
| ^ |
| | |
| ⚠ | Néhány művelet nem kombinálható. Például az a*-b nem működik. Az a*(-b) or -a*b használható. |
Funkciók[szerkesztés]
Alapvető műveletek[szerkesztés]
| 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. b-nek nemnegatív számnak kell lennie. A Power[0,b] eredménye mindig 1. A negatív szám törtszám hatványa és a Power[0,0] mindig 0 értéket ad vissza. |
Számtani műveletek[szerkesztés]
| 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. A .5-re végződő értékek a legközelebbi páros egész számra kerekítenek. |
Elemi műveletek[szerkesztés]
| 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[szerkeszté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[szerkesztés]
Rendszer[szerkesztés]
| Változó | Leírása |
|---|---|
| value | A funkció legutolsó értékelésekor kiadott eredményt adja vissza. Eredeti értéke 0. |
| delta | A funkció legutolsó értékelése óta eltelt időt adja vissza másodpercben. |
Idő és kamera[szerkesztés]
| 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ű[szerkesztés]
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[szerkesztés]
| Változó | Leírása |
|---|---|
| cars | A jármű kocsijainak száma |
| speed | |
| speed[carIndex] | |
| speedometer | |
| speedometer[carIndex] | |
| acceleration | |
| acceleration[carIndex] | |
| accelerationMotor | |
| accelerationMotor[carIndex] | |
| 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. |
| distance[carIndex] | Az objektum tényleges helyétől mért távolság a carIndex szá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[carIndex] | Az objektum pályán elhelyezett távolsága az carIndex szá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. |
Fékek[szerkesztés]
| 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 | |
| straightAirPipe[carIndex] |
Ajtók[szerkesztés]
| Változó | Leírása |
|---|---|
| doors | Az ajtók állapota. 0 ha zárva, 1 ha nyitva vannak. |
| doors[carIndex] | Az ajtók állapota carIndex számú 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] | A carIndex szá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] | A carIndex szá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] | A carIndex szá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] | A carIndex szá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[szerkesztés]
| 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 | ||||||||||
| powerNotches | ||||||||||
| brakeNotch |
| |||||||||
| brakeNotches | ||||||||||
| brakeNotchLinear |
| |||||||||
| brakeNotchesLinear |
| |||||||||
| emergencyBrake | ||||||||||
| hasAirBrake | ||||||||||
| holdBrake | ||||||||||
| hasHoldBrake | ||||||||||
| constSpeed | ||||||||||
| hasConstSpeed | ||||||||||
| hasPlugin | ||||||||||
| pluginState[i] |
| i | English | 日本語 | Return values | pluginState[271] | Meaning | |
|---|---|---|---|---|---|---|
| 256 | ATS | ATS | 0 (unlit) or 1 (lit) | 0 | ATC not available | |
| 257 | ATS RUN | ATS 作動 | 0 (unlit), 1 (lit) or 2 (flashing) | 1 | 0 km/h | |
| 258 | ATS RUN | ATS 作動 | 0 (unlit / non-flashing), 1 (lit / flashing) | 2 | 15 km/h | |
| 259 | P POWER | P 電源 | 0 (unlit) or 1 (lit) | 3 | 25 km/h | |
| 260 | PTN APPROACH | パターン接近 | 0 (unlit) or 1 (lit) | 4 | 45 km/h | |
| 261 | BRAKE RELEASE | ブレーキ開放 | 0 (unlit) or 1 (lit) | 5 | 55 km/h | |
| 262 | BRAKE APPLY | ブレーキ動作 | 0 (unlit) or 1 (lit) | 6 | 65 km/h | |
| 263 | ATS P | ATS-P | 0 (unlit) or 1 (lit) | 7 | 75 km/h | |
| 264 | FAILURE | 故障 | 0 (unlit) or 1 (lit) | 8 | 90 km/h | |
| 265 | ATC | ATC | 0 (unlit) or 1 (lit) | 9 | 100 km/h | |
| 266 | ATC POWER | ATC 電源 | 0 (unlit) or 1 (lit) | 10 | 110 km/h | |
| 267 | ATC SRV | ATC 常用 | 0 (unlit) or 1 (lit) | 11 | 120 km/h | |
| 268 | ATC EMG | ATC 非常 | 0 (unlit) or 1 (lit) | 12 | ATS is active | |
| 269 | CONST SPEED | 定速 | 0 (unlit) or 1 (lit) | |||
| 270 | EB | EB | 0 (unlit) or 1 (lit) | |||
| 271 | ATC speed indicator | 0 - 12, see table on the right |
Térköz (jelzők)[szerkesztés]
| Változó | Leírása |
|---|---|
| section |
Teljesítmény[szerkesztés]
Az alábbi táblázat az egyes animálási lehetőségek teljesítményét mutatja:
| Animáció | Objektum | Teljesítmény |
|---|---|---|
| Állapotváltozás | Átlátszatlan felülettel | Jó |
| Állapotváltozás | Részben átlátszó felülettel | Átlagos |
| Mozgatás | Átlátszatlan felülettel | Jó |
| Mozgatás | Részben átlátszó felülettel | Átlagos |
| Forgatás | Átlátszatlan felülettel | Good |
| Forgatás | Részben átlátszó felülettel | Rossz |
| Textúramozgatás | Átlátszatlan felülettel | Rossz |
| Textúramozgatás | Részben átlátszó felülettel | Rossz |
Példák[szerkesztés]
Lásd: Tippek, trükkök