Animált objektum

A MediaWiki wikiből
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ű.

Á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:
  1. Állapotváltozás – egy objektum kicserélődik egy másikra
  2. Mozgatás – az objektum elmozdul valamely tengelyen
  3. Forgatás – az objektum elfordul valamely tengely körül
  4. 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 = Timetable:
É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

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
brakeNotchLinear

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

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
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
Állapotváltozás Részben átlátszó felülettel Átlagos
Mozgatás Átlátszatlan felülettel
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

Forrás[szerkesztés]

Kezdőlap
Útmutatók játékosok számára
Az OpenBVE telepítése Windows rendszerreAz OpenBVE telepítése Ubuntu 12.04 LTS rendszerre
Útmutatók fejlesztők számára
Pálya Pályaépítés nagyon kezdőknek OpenBVE-benCSV route
Objektum B3D objektumCSV objektumAnimált objektum
Jármű train.datpanel.animatedpanel2.cfgpanel.cfgAlapértelmezett hangoksound.cfgats.cfgextensions.cfg
Egyéb Tippek, trükkökCsomagkészítés az openBVE tartalomkezelőjéhez