跳轉到內容

Trainz/Blender 教程

來自華夏公益教科書,開放世界開放書籍

關於此頁面

[編輯 | 編輯原始碼]
此頁面的目的是使人們能夠使用 Blender for Trainz 匯出器將他們的 Blender 作品匯出到 Trainz。這裡不是回答所有與 Blender 或內容創作相關的問題的地方,這裡只描述與匯出器行為直接相關的內容。如果您在 Blender 中遇到問題或對內容創作本身有疑問,那麼您可以在以下連結中找到許多解釋和經驗豐富的人員
Blender 文件
Blender 社群
TRS2006 內容創作指南
Trainz Classics 內容創作指南
Trainz 討論論壇
使用 Blender 為 Trainz 建立內容所需的顯然是 Blender 本身和 Blender for Trainz 匯出器。該指令碼是為 Blender 2.45 開發的,但任何更高版本也應該可以工作。要使用 Blender for Trainz 匯出器,您必須解壓縮檔案並將包含的檔案 *trainz_exporter.py* 複製到 Blender 的指令碼目錄。這通常是位於子目錄 *.blender* 中的 *scripts* 資料夾,因此,如果您使用預設路徑在 Windows 系統上安裝 Blender,則必須將 *trainz_exporter.py* 檔案從檔案複製到資料夾 *C:\Program Files\Blender Foundation\Blender\.blender\scripts* 中。

您的 Blender 安裝有一個指令碼目錄。通常有兩個位置需要檢視,一個是如上所述,另一個是在“應用程式資料”下,它是“文件和設定”下的一個隱藏資料夾,因此請轉到文件和設定,工具,資料夾選項,檢視,“顯示隱藏檔案和資料夾”。

例如,在我的機器上,這將是 C:\Documents and Settings\Trainz\Application Data\Blender Foundation\Blender\.blender\scripts,其中 trainz 是帳戶名。您應該在那裡看到大約 100 個 .py 檔案。

每次 Blender 啟動時,它都會掃描此目錄並將找到的任何指令碼包含到其選單結構中。因此,如果您在複製匯出器指令碼後啟動或重新啟動 Blender,那麼您可以透過 Blender 選單 **檔案 > 匯出 > Trainz 匯出** 來呼叫它。選擇要建立的內容,如果一切順利,您將進入 Blender 的檔案儲存對話方塊。選擇所需的位置和檔名,然後按 **儲存** 以最終建立資原始檔。您應該始終檢查 Blender 控制檯以獲取資訊或警告,因為匯出器只會在致命錯誤時停止。

Blender 設定

[編輯 | 編輯原始碼]
我們仍然需要弄清楚哪些是最佳的 Blender 設定,以免在最終檢視 Trainz 中的創作時感到驚訝。相反,只需要一些基本的提示
  • 在 Blender 中,您不能像在 GMAX 中那樣縮放單位(在 GMAX 中,您必須在首選項中設定系統單位為一米),只需假設一個 BU(Blender Unit)為一米即可。如果您想使用英制單位,那麼您可能需要看一下 Blender 網格屬性編輯器
  • 如果您想將一個物體移動到一個絕對位置,那麼切換到物體模式(熱鍵 **TAB**)並按 **N**。在現在可見的變換屬性視窗中,您可以輸入所需的值。但是請注意,LocX、LocY 和 LocZ 是區域性值,只有當物體沒有父級時,這些才是世界座標。如果您已經分配了父級,那麼您將看到並必須輸入相對於該父級的位移。
  • 並非所有在 Blender 中視覺化的材質屬性都會在 Trainz 中產生影響,而 Trainz 中的一些效果在 Blender 中無法視覺化。因此,不要相信您在 Blender 中看到的內容,並在 Trainz 中檢視您的創作。
  • 由於紋理僅漫射,不透明度、反射和法線貼圖會在 Trainz 中產生影響。您也可以匯出沒有任何紋理的網格。
  • 右側檢視顯示的是網格的左側,與 Gmax 不同。
網格是在 Trainz 中您將看到的 Blender 物件。您可以透過操作 Blender 基本體或甚至放置頂點並建立面來構建您的物件。請記住以下幾點
  • 將您的創作以原點為中心,因為 Trainz 會在您插入資產時將此點放置在游標位置
  • 面可以是雙面或單面,在 Blender 中,這是網格而不是材質選項。您只有在 Trainz 中才能識別出這種差異,因為 Blender 會始終雙面渲染面。
  • 每個網格都需要一個材質;您可以在不同的網格上使用同一個材質
  • 密切注意頂點和麵的數量
匯出器只識別在匯出過程中可見的網格。確保您要匯出的所有物件都可見,並且您也已選擇所有所需的圖層!這樣做的原因有兩個:首先,您看不到的東西將不會被匯出(可能是很久以前遺忘的測試網格)。第二個原因是,您可以將大型或動畫物件儲存在一個 Blender 檔案中,並透過更改可見性(這裡涉及到圖層)來匯出所需的部件。
一旦您想為您的資產製作動畫,就必須使用骨骼。您可以透過放置一個格柵(**新增 > 格柵**)並將其重新命名為類似於 *b.r.something* 的東西來建立骨骼,如 CCG 中描述的骨骼命名約定所示。如果您使用骨骼,您需要構建一個完整的層次結構,這意味著從根骨骼開始,所有其他骨骼或網格都需要是該根骨骼或任何從屬骨骼的子級。如果您有鬆散的網格或骨骼,則匯出器將拒絕工作,因為未繫結的網格不會顯示在 Trainz 中。
根骨骼應該位於原點,並且不應該旋轉。最佳做法可能是將其放置在頂檢視(熱鍵 **NumPad 7**)中,並保持不動。根骨骼也不應該被動畫化;它用作此資產中任何未動畫化網格和任何未由動畫父級驅動/依賴的骨骼的父級。
要匯出骨骼,它們必須是可見的;因此請關注您的大綱檢視和圖層。

連線點

[編輯 | 編輯原始碼]
附件點在 Trainz 中用於附加效果、軌道甚至其他網格。要建立 AP,您必須先新增一個空物體 (**新增 > 空物體**)。之後像您需要的那樣放置和旋轉它,並按照 AP 的 CCG 規則 ( *a.whatsoever*,你還記得嗎?;) ) 給它命名。AP 不需要父級,因為這些資訊會在匯出過程中丟失。儘管 Trainz 使動畫成為可能,但它使用了擴充套件的命名方案。假設您有一個骨骼 *b.r.john* 和一個 AP *a.doe*。要告訴 Trainz *a.doe* 應該像 *b.r.john* 一樣動畫化,您必須將 AP 重新命名為 *a.r.john/a.doe*。在您的 config.txt 中,這個 AP 仍然稱為 *a.doe*。
對於網格和骨骼有效的,對於附件點同樣有效:如果它們不可見,它們將不會被匯出。

材質

[edit | edit source]

顏色

[edit | edit source]
您可以在 Blender 中操作漫射色和鏡面反射色,以使 Trainz 中的材質呈現您想要的視覺效果。您可以在材質面板中找到這兩個顏色,**Col** 用於漫射色,**Spe** 用於鏡面反射色。
1 - Blender 材質面板
Trainz 還支援另外兩種顏色:環境色和自發光色。
Blender 中的環境色與 Trainz 中的工作方式不同,而且在大多數情況下,環境色和漫射色將相等,環境色在匯出過程中從漫射色複製。自發光色在 Trainz 中用於自發光,Blender 中沒有提供。由於物體通常即使在光照下或光照下也具有相同的顏色,因此匯出器在此也複製漫射色的值。
如果您計劃使用紋理,您應該將漫射色設定為純白色,否則您的紋理在 Trainz 中看起來比預期更暗。

不透明度

[edit | edit source]
您也可以在材質面板中找到不透明度的滑塊,在 Blender 中稱為 Alpha(滑塊 **A** 在右側下方)。值為 1 表示材質完全可見,值為 0 表示材質完全不可見。如果您使用也影響不透明度的紋理貼圖,則最好將 Alpha 滑塊保留在它的正確位置,因為整體不透明度不會高於材質不透明度。

鏡面反射

[edit | edit source]
可以使用著色器面板調整鏡面反射。有趣的滑塊是面板中間的鏡面反射 **Spec** 和硬度 **Hard**。
2 - Blender 著色器面板
鏡面反射滑塊保持鏡面反射色的強度,從 0(無鏡面反射高光)到 2(全鏡面反射高光),而硬度滑塊定義反射光的集中度。高硬度產生硬鏡面反射(想象玻璃或拋光表面),而低硬度產生暗淡的光澤(如瀝青或粗糙/髒金屬)。硬度範圍(1..511)將由匯出器縮放到 0..100,因此如果您想要複製 GMax/Max 光澤度值,您需要將其乘以大約 5。

自發光

[edit | edit source]
沒有光照時的亮度。您可以在著色器面板的右下角找到 **Emit** 滑塊。自發光度越高,您的材質在漫射色中發光就越強。

紋理

[edit | edit source]

通用

[edit | edit source]

首先是關於紋理的一些通用事項。

  • **切勿使用打包的圖片格式**,因為它們通常會扭曲顏色,在載入時浪費資源(要解壓縮,它們需要額外的記憶體和 CPU 時間),最後它們在記憶體中的佔用空間與未壓縮的圖片格式相同。一種好的格式是 Targa (*.tga*),因為它沒有壓縮(不要使用 RLE 選項!)並且能夠儲存 Alpha 通道(如果需要)。
  • 使您的紋理儘可能小。無論什麼有效,都要建立紋理的尺寸是最終使用尺寸的兩倍,然後在啟用抗鋸齒的情況下將它們縮小。您將獲得與原始地圖幾乎相同的細節等級,並且只需要 1/4 的記憶體。
  • 始終使用“2 的冪” - 作為地圖尺寸的值(例如 64x64、128x128、128x512)。這些紋理可以非常快速地處理,因為“2 的冪” - 數字是硬體的本機語言。您不必堅持使用正方形地圖,但也要避免長寬比低於 1:8。
在 Blender 中,您可以使用材質按鈕視窗(熱鍵 **F5**)中的紋理面板分配紋理。
3 - Blender 紋理面板 - 空白
4 - Blender 紋理面板 - 建立的紋理物體
建立 TE 物體後,您必須告訴 Blender 對映資訊應該來自哪裡(地圖輸入)以及哪個材質屬性應該受到影響(對映到)。
5 - Blender 地圖輸入面板
6 - Blender 地圖到面板
Blender 選擇的預設地圖輸入是 **Orco**。這是一種 Trainz 不使用的對映。對於反射貼圖,您可以選擇 **Refl**,對於所有其他使用的貼圖,匯出器只接受 **UV** 對映。作為對映目標,您可以選擇以下選項之一或多個
  • **Col**,用於漫射貼圖
  • **Alpha**,用於不透明度貼圖
  • **Ref**,用於反射貼圖
  • **Nor**,用於法線(凹凸)貼圖
您可以分配其他對映目標,這些紋理將被匯出,但您不會在 Trainz 中注意到任何效果。
現在剩下的要做的當然是用它載入紋理本身。在 Blender 中,您可以使用紋理按鈕視窗(熱鍵 **F6**)定義紋理的內容。您只能匯出到 Trainz 的紋理型別是 **Image**,因此您可以忽略 Blender 中的所有其他可能性。
7 - Blender 紋理按鈕
現在透過在影像面板上按 **載入** 來選擇相應的影像。
只剩下一個選項,即“無紋理”選項。用於 Trainz 的 Blender 匯出器允許您匯出沒有任何紋理的模型。這可以透過直接在 Trainz 中對純網格進行“快速檢查”來加快資源建立速度。要匯出沒有任何紋理的模型,您只需刪除可能分配的紋理物體即可。

漫射紋理

[edit | edit source]
漫射紋理是最常用的紋理,它們基本上定義了物體的表面。要使用它們,您必須選擇 **UV** 按鈕作為輸入,並選擇 **Col** 按鈕作為輸出。您可以使用 **Col** 滑塊調整紋理量,該滑塊位於對映到面板的右中間。

不透明度紋理

[edit | edit source]
Alpha 紋理用於模擬透明材料或使物體的部分不可見。您可以建立髒窗戶或使一個簡單的平面看起來像一個轉向架部件。Alpha 貼圖通常與漫射貼圖一起使用,因此所需的 **UV** 對映應該已經完成。作為目標,選擇 **Alpha**。紋理量由對映到面板右側的 **Var** 滑塊控制。
如果您使用具有 Alpha 層的影像,則可以將漫射紋理和不透明度紋理組合在一起。您需要在對映影像面板中選擇 **使用 Alpha** 選項,並且必須在對映到面板中選擇 **Col** 和 **Alpha** 作為目標。
如果您使用不透明度,可能會出現一個小問題:由於 Trainz 中的錯誤,並非完全不透明或透明的區域可能會相互重疊。您可以檢視這個問題以及一種可能的解決方法,方法是從 SourceForge 下載兩個相關的示例。

反射紋理

[edit | edit source]
這些紋理的使用方式與其他紋理略有不同,因為 Trainz 會使用球面對映自動對映它們。您可以透過建立光滑的球體並分配反射貼圖來最好地理解它的工作原理。顯示哪部分貼圖取決於從攝像機到物體表面的假想光線將反射的方向。這就是為什麼您會在光滑球體的表面上看到整個貼圖的原因。
要使用反射貼圖,您只需要在貼圖輸入面板中按下Refl按鈕,並在指定紋理的貼圖到面板中按下Ref按鈕。您會注意到材料預覽和渲染視窗中都不會出現任何顏色。這是因為 Blender 使用反射紋理來修改反射的強度而不是顏色。但不用擔心,在 Trainz 中您會看到顏色回來了;)。

硬度紋理

[編輯 | 編輯原始碼]
您可以分配硬度紋理,但您會感到失望。它們不會影響硬度,而是會在匯出時被視為反射紋理。這種行為是複製自原始匯出器,因為任何嘗試影響“shinestrength”的行為到目前為止都會導致一個完全白色的未照明物體。

法線紋理

[編輯 | 編輯原始碼]
法線紋理用於在平面表面上模擬高低起伏。要使用它,您需要一個UV貼圖輸入和一個Nor貼圖到。請注意使用法線貼圖而不是凹凸貼圖。兩者用於相同目的,但它們包含不同的資料。

紋理組合

[編輯 | 編輯原始碼]
紋理在 Trainz 中如何影響物體的外觀是由所謂的“材質名稱裝飾”控制的。除一種例外情況外,Blender 匯出器 for Trainz 會根據您分配的紋理選擇合適的裝飾。這種例外情況是m.billboard,因為這種材質裝飾用於始終面向攝像頭的物體。由於匯出器無法檢測您是否希望這種行為,因此您必須自己用結尾m.billboard裝飾材質名稱。通常情況下,匯出器不會覆蓋已知的材質裝飾,因此,如果您想確保您的材質以m.gloss形式匯出,則只需將m.gloss新增到材質名稱中。
所有當前支援的紋理組合的列表
單一紋理
  • 漫反射紋理
  • 反射紋理
  • 硬度紋理(將顯示為反射紋理)
雙紋理
  • 漫反射和 alpha 紋理
  • 漫反射和反射紋理
  • 漫反射和硬度紋理(與漫反射和反射相同)
  • 漫反射和法線紋理
三紋理
  • 漫反射、反射和 alpha 紋理(在這種情況下,alpha 紋理影響反射紋理而不是漫反射紋理)
  • 漫反射、alpha 和法線紋理(不允許反射或硬度紋理)
  • 漫反射、反射和法線紋理(不允許 alpha 紋理)
在動畫匯出情況下,原始匯出器會要求您提供一個事件檔案,以將事件繫結到特定幀。在 Blender 匯出器 for Trainz 中使用事件類似。將 Blender 視窗切換到文字編輯器視窗,並透過檔案 > 新建(熱鍵Alt N)建立一個新的 TX 物件。對於每個事件,輸入一行,包含幀號、事件型別和事件名稱。如果您最後將這個 TX 物件重新命名為events,那麼匯出器將解析此文字並在您的動畫檔案中建立所需的條目。
您可以在SourceForge下載部分找到的附加檔案中找到示例
華夏公益教科書