BVE Trainsim 路線製作示範教學 (軌道型式與周邊場景建立) CSV 形式


閱讀本篇路線製作示範教學前先跟各位說明,看不懂得指令或是為何參數這樣設定請參考製作路線這一篇,場景物件該如何製作、修改請參考製作物件篇。如果您已經會編寫路線也可參考看看,互相交流一下,畢竟某些個人心得可能有錯。

※ 以下路線範例均使用 BVE Trainsim 原作者 mackoy 之內房線和松浦電鉄作者 RON 提供的物件及做為使用物件及範例解說。
※ 本篇原為指導同好詢問製作路線疑問之教學文,寫於2005年10月26日,除另行註明外,文中所述時間和內容均以撰寫當時日期為主。


編輯指令路線設計場景設置站場設計時刻設定號誌設定場景音效輔助指令


附有曲率的軌道形式
抱歉一直沒有製作軌道設定和場景建立的網頁內容,先用這臨時頁面取代。
前面提到軌道的彎道和道岔的製作,有些人可能會有疑問,為什麼有些路線在彎道或是道岔能夠做的如此細緻?會什麼我在做的時候卻是直直的不會有曲度?

前面有提到, BVE Trainsim 的物件跟隨路線轉彎方式為行進路線正中央為原點依25公尺作一次偏角來達到轉彎效果,而一段完整的軌道限定為 25 公尺一段,這對於小曲率半徑的軌道來說太長了,所以要在物件動點點手腳,軌道物件補上新座標點使物件形成的軌道面能成為一個圓弧。

用文字說明好像不容易,而且講的很長一段,要解釋這個新座標如何加?加在哪?先用圖說明一下。

一個完整的圓弧曲線(如下圖),其圓周的弧線將其看成無限多的座標點連接而成, 現在將這些座標點減成四個座標點再將其連接成線,看起來是否就不像圓弧了呢? 此時若是再將將中間的座標點刪除,剩下頭尾兩點座標時就只能稱為直線了。



因此,BVE Trainsim 的鐵道要連成一長條的曲線,因為基準預設的鐵道物件均為直線軌道,所以在小曲率半徑的連續曲線上會形成如同以少數點連接而成的圓弧曲線,所以要自行增加軌道的座標點,來形成更為連續的圓弧曲線。

所以在物件製作時頭尾點座標保留,新增的座標(追加 z 軸)則依所在位置作適當水平( x 軸)偏移,這樣使用在路線上就會看到可接受的連續的圓弧曲線,如同上圖中將四點座標之間加上新的座標,將新座標適當偏移並連線後成為上圖中25點座標連結而成的圓弧模樣,當然實際上不需要這麼多座標,適當加入座標即可,讓畫面細緻度與畫面流暢度能相互達到最佳化為標準。

一年前在 台灣BVE管理局第 374 篇曲率半徑的軌道製作討論中有公開一個自行拿相關書籍,利用支距法公式寫了一個 Excel 試算表格式的單曲線運算檔案。不過這是一年前的東西了,自己也不是很專業,公式寫的很簡單。主要缺陷在於兩條軌道內外徑曲率半徑應為不等距,且長度上頭尾的 x 軸和 z 軸應該會隨曲率增加或減少,這兩項沒做加入公式運算,所以曲率過大時兩端接軌處接合不良。僅供製作參考。


目前本站 FAQ 在製作告一段落想看看製作的物件或路線該用什麼程式瀏覽?的問題中有推薦鐵道路線曲率製作的小程式。

Curverail_Editer 4.6 是專門製作鐵道物件的,而附帶材質圖更換及軌道曲率、超高的製作輸入。而
金太郎貽 ( CurveStructureCreator )則是利用類似 csv 寫法的物件範本來扭曲物件,活用範圍更大。

其使用方式該網站作者都有介紹,個人比較推薦金太郎貽,因為任何物件均可彎可扭,不只限定軌道物件。



放置物件的基本法則

現在知道附帶曲率的軌道要如何製作之後要如何運用製作完成的軌道?稍等一下,先說如何放置物件。

請搭配 BVE Trainsim 路線設計指令及參數頁面對照來瀏覽以下內容

之前的範例中僅點出鐵道、邊坡、圍牆、電桿、月台等的指令參數書寫方式,對於程式書寫有過經驗的同好可能會發現其實 bve 路線的編輯也是先聲明物件將其導入後再書寫指令和參數放置在所要運用之里程位置。2006/7/26補增

所以無論是什麼物件在 Structure(物件指令聲明)中要先寫上聲明的物件檔案,讓程式有索引、路徑、檔案可以讀取。

Structure.StType.Load FileName
聲明   類型    路徑及檔案名稱


※ 聲明的 StType 類式選擇有很多種,端看路線需要導入的指令來選擇型式。
    主要分類為軌道、地上子、電桿、地表面、圍牆、邊坡、月台與雨庇、自訂物件。
         Rail Beacon Pole Ground Wall Dike Form Roof FreeObj
    要如何引入、導用這些物件和運用這些指令端看製作者的設計來自行組合、運用。

※ 聲明中的 Beacon 限定使用於 BVE Trainsim 4 路線編寫。
表格內段落 2006/7/29補充


我們先選擇 FreeObj(IdxStType) 類型的物件來做範例

FreeObj 是個自訂物件的指令,其索引值(IdxStType)從 0~65535 ,亦即能有 65536 物件可供索引運用。
正常此指令是用於路線中物件出現位置並非固定在 25m 倍數的里程上和位置時所使用。此行 2006/7/29補充


※ 註:導入的物件檔案格式 BVE 2 可運用 *.rw 格式 & *.csv 格式檔案,
    而 BVE 4 則追加運用 *.x 的檔案格式,
    關於物件編輯的指令與程式場景物件編輯使用程式、軟體參考


接著範例導入您第二個問題:RON'S BVE 網站中提供的「鉄橋(トラス橋)」物件要如何運用?
即在 Structure(物件指令聲明)中寫上聲明的類型、物件檔案的路徑及檔案名稱,如下範例。


With Structure,

.FreeObj(65535) KDI\Bridge\bridge1.csv

物件指令聲明內將物件檔案定義完成後,接著就要使用在路線中了,
路線編輯都在 Track(軌道指令及參數)裡面,而使用上述 FreeObj 定義的即為這個專用指令

Track.FreeObj Index; IdxStType; X; Y; Turn
自訂物件設置。

Index: 基準{-1: 預設地表面 | 0~15: 軌道路線編號}
※ 基準之意為以何者為物件放置基準,以軌道位置為主。

IdxStType: 自訂物件索引值 Index
※ 物件索引值即為之前聲明中定義的物件索引值

X: X方向的位置[m]
※ 物件在放置於基準位置後的 x 軸方向偏移值

Y: Y方向的位置[m]
※ 物件在放置於基準位置後的 y 軸方向偏移值

Turn: 以 Y 軸為基準線的旋轉角度[deg]
※ Turn 的角度設定正前方為 0 度,反之 180 度則為物件的反面

例如下面以相同聲明導入之物件以不同指令參數書寫所得到的範例

相同聲明導入不同指令參數範例 執行結果
Train.Folder 113_6
With Structure
.Rail(0) BallastS.csv
.Ground(0) Grass.csv
.Pole(0; 0) Pole1.csv
.FreeObj(65535) KDI\Bridge\bridge1.csv

Texture.Background(0) Bg_Fine.bmp

With Track,
   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
    ,.Height 0.45
    ,.Pole 0; 0; 0; 50
    ,.Rail 1; 4; 0; 0
5000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
 
 100,.FreeObj 0; 65535; 0; 0; 0,
 150,.FreeObj 0; 65535; 0; 0; 0,
 200,.FreeObj 0; 65535; 0; 0; 0,
;以 Rail 0 主軌道為基準的放置位置
1100,.FreeObj 1; 65535; 0; 0; 0,
1150,.FreeObj 1; 65535; 0; 0; 0,
1200,.FreeObj 1; 65535; 0; 0; 0,
;以 Rail 1 軌道為基準的放置位置,
;若沒有 Rail 1 則此橋樑不會出現
2100,.FreeObj 0; 65535;-4; 0; 0,
2150,.FreeObj 0; 65535;-4; 0; 0,
2200,.FreeObj 0; 65535;-4; 0; 0,
;以 Rail 0 軌道為基準並向左偏移 4m
3100,.FreeObj 0; 65535; 0; 1; 0,
3150,.FreeObj 0; 65535; 0; 1; 0,
3200,.FreeObj 0; 65535; 0; 1; 0,
;以 Rail 0 軌道為基準並向上提升 1m
4100,.FreeObj 0; 65535;,
4150,.FreeObj 0; 65535;,
4200,.FreeObj 0; 65535;,
;後方參數均為零時的省略寫法

從上面範例中我們可以知道,當物件在聲明導入並引用之後,還可以利用現有的指令參數做一些位置、角度等變更。
這對於物件的活用性來說是大大的提升,因此不需要因為換個位置就要重做一組物件這麼麻煩。

不過橋樑上有時軌道型式不是這樣子的,所以在設計路線時, Rail 軌道索引值要依定義物件索引及路線所在風景位置使用之物件索引修改,不然會有不符該場景軌道的怪畫面。



配合橋樑場景的軌道形式等物件變更

經過上面的橋樑物件放置,各位是否已經理解在編輯路線檔時場景物件的運用?
那麼我們就接著將上述上不符合橋樑場景的軌道物件變更為符合橋樑場景專用的軌道物件。

同樣的我們導入 RON'S BVE 網站中提供的「鉄橋(トラス橋)」物件裡面的橋樑用軌道物件;
另外配合橋樑場景將電桿、河川、堤岸等周邊景色以内房線現有物件加入在此範例中給各位參考。

橋樑場景編寫範例 執行結果
Train.Folder 113_6
With Structure
.Rail(0) BallastS.csv
.Rail(1) KDI\Bridge\bridge-Rail.csv
.Ground(0) Grass.csv
.Ground(1) River.csv,;河床
.Ground(2) Ditch.csv,;河岸
.Pole(0; 0) Pole1.csv
.FreeObj(65535) KDI\Bridge\bridge1.csv


With Texture
.Background(0) Bg_Fine.bmp


With Track,
  0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
   ,.stop 0,
   ,.Height 0.45
   ,.Pole 0; 0; 0; 50; 0
   ,.Pole 1; 0; 1; 50; 0
   ,.Rail 1; 4; 0; 0
250,.Rail 1; 4; 0; 1
   ,.RailType 0; 1
   ,.Ground 1
300,.FreeObj 0; 65535; 0; 0; 0,
350,.FreeObj 0; 65535; 0; 0; 0,
375,.Ground 2
400,.FreeObj 0; 65535; 0; 0; 0,
,.Rail 1; 4; 0; 0
   ,.RailType 0; 0
   ,.Ground 0
500,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
   ,.stop 0,


看到執行後的成果是不是有些感動呢?場景看起來有模有樣,已經不輸給一些陽春路線的場景唷!
但是有幾個缺陷,橋樑上的軌道居然是 1435mm 軌距,而且沒有適當的地表及堤岸景色。
而且實際使用時會發現該橋樑物件是以 z 軸為負的方式製作,放置時里程要往後放置 50 m 才會在預定位置。
因此在向該作者提出借用時還要考慮到每個人的製作風格是否相同、物件尺寸或位置是否吻合,
否則有的物件在前、在後、靠左或是靠右,那麼在引用這些物件時可能要花不少時間配合、修改或調整

※ 研究他人路線與物件寫法並不輕鬆,在沒有註解情況下有時光是確認物件位置與型式就可能耗掉不少時間。

所以這裡就要提出一個路線的製作想法,那就是自己製作的路線就自行製作專屬的路線物件;
一方面不用煩惱是否能尋找道相同或理想的物件或提出借用許可,是否有著符合自己路線的標準尺寸,
另一方面在路線上能夠更充分表現出製作者的想法及路線所在地的風格特色與種種風貌。



各種形式的的軌道配合場景變更

在上面範例中簡單介紹了部分物件變更的方式,那麼除了橋樑軌道之外, 在更換為隧道內的軌道或是特殊路段如彎道處、道岔處或版式軌道的時候, 應該能夠輕鬆的更換了吧!
以下為 2006/7/26日編寫
不過這裡要提醒一件有關 Rail 指令的寫法,
在軌道型式更換時有兩種選擇,一種是

Track.Rail Index; X; Y; IdxStType,專用於其他軌道設置與型式設定

而一種是
Track.RailType Index; IdxStType,專用於自線行駛軌道的型式設定。

不過可能有人在使用時會發現其實混用好像也行,如同下方範例。


With Track,
  0,.sta 起點;10.2930;10.3000;0;-1;0;0;;20;80;
   ,.rail 1;4.0;0;0
   ,.pole 0;0;0;25,.pole 1;0;1;25,.height 0.4
100,.stop 1
175,.rail 1;4.3;0
200,.railtype 1;1,.rail 1;4.8;0 
400,.sta 終點; ;T;0; 1;0;0;;20;80;
500,.stop -1


此種軌道指令混用法雖然不是說不行,但是有時會造成軌道無法接合的狀況,怎麼微調就是接不起來。
所以可能是隻指令小蟲吧?既然官方公開的新指令集已要求不要這樣運用,就遵照一下吧,
免的哪天軌道突然接不起來還不知道到底是什麼原因造成軌道無法接合。

那麼我就不再重複說明各種物件的放置方式了,給各位自行練習吧!



行駛主線上的軌道如何結束

有沒有發現到達終點站後主線的軌道還是會一直延伸下去,永不停止?
這時可能會很苦惱,那這樣如果車站到了像平溪、内灣、集集線的終點站後還有一條軌道延伸到遠方不就和真實場景不符了。

其他軌道還可以用 .RailEnd 這個指令來做終結,可是這個指令用在主線上除了送來錯誤訊息外,軌道也沒有因此結束。

不知道各位在路線設計的第一個範例是否已察覺,
BVE 在只有列車,沒有任何物件的狀況下也能順利運行,所以畫面上是一片空白的。

所以列車行駛主線上的軌道要做一個終端式的結束效果,只要不導入物件就可以了。
因此只要不要寫入 Structure 物件聲明中的 .Rail(0) 這個參數值,
Structure 物件聲明中的 .Rail(1) 這個參數值作為主線上的軌道的鋪設物件。

最後軌道要結束時就寫上 .RailType 0; 0, 就回復到主線上的軌道的原始值,原始值導入什麼物件?沒有物件!
所以在 .RailType 0; 0, 里程之後的軌道都不再出現了。

官方網站的正式寫法是讓 Structure 物件聲明中的 .Rail(0) 導入一個空白物件。
最後軌道要結束時寫上 .RailType 0; 0, 就會因為主線上的軌道導入是空白的物件檔使里程之後的軌道都不再出現了。
這種寫法是比較正統式的,所以還是要告知給各位。

※ 上面所使用的索引值不需要是 0,從 0 到 255 的索引值都可以自行彈性運用,
  官方版本的空白的物件檔稱作 Null.csv,如果有安裝内房線的可以自行試試。

高程、電桿編寫範例 執行結果
Train.Folder 113_4
With Structure
.Rail(0) Null.csv
.Rail(1) BallastS.csv
.Ground(0) Grass.csv
.Pole(0; 0) Pole1.csv
Texture.Background(0) Bg_Fine.bmp
With Track,
   0,.Sta 起點;,
    ,.Stop 0,
    ,.RailType 0; 1,
    ,.Height 0.45
    ,.Pole 0; 0; 0; 50
1000,.Sta 終點;,
    ,.Stop 0,
1025,.RailType 0;
    ,.Pole 0; 0; 0; 25
1050,.PoleEnd 0,

不知一下瀏覽了這麼長一篇,了解嗎?
那麼就多多練習吧!畢竟實際操作才能夠真正了解其中的奧妙。
下一回介紹製作車站內股道及月台和如何轉換軌道行駛本段原為路線設計篇介紹段落,因06/7/26起插入本篇,故此段介紹改至本篇。


編輯指令路線設計場景設置站場設計時刻設定號誌設定場景音效輔助指令

2005年10月26日 初編
2006年7月26日 追加範例圖片,漏字、錯字訂正,語意不明及局部範例重新編寫。
2006年7月29日 錯字訂正,局部新增。
2006年11月30日 終端式軌道編寫範例。


遊戲安裝遊戲操作遊戲問題製作工具製作路線製作列車製作物件製作音效
鐵道知識製作心得檔案下載物件圖片真實場景路線風光站務紀錄本站首頁
製作感想網站推薦自我介紹音效編輯影像處理站內導覽簡易分站無用留言



Copyright © 2002~2009 Chikainn83