Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

利用名稱後綴自訂節點型別

編輯完場景後,我們往往會需要在匯出後執行下列常見工作:

  • 為物件加上碰撞偵測。

  • 將物件設為導覽網格。

  • 刪除沒有在遊戲引擎中使用到的節點 (例如用於建模的特定燈光)。

為了簡化此工作流程,Godot 提供一些後綴,可以加到 3D 建模軟體中物件的名稱後面。匯入時,Godot 將會偵測物件名稱中的後綴,並會自動執行動作。

警告

以下描述的所有後綴都可以與 -$_ 一起使用,並且 不區分大小寫

選擇停用

若不希望 Godot 執行下述任何操作,可將匯入選項 nodes/use_node_type_suffixes 設為 false。這會停用所有節點型別後綴,讓節點維持與原始檔相同的型別。不過,-noimp 後綴仍會被遵守,且像 -vcol-loop 這類非節點後綴也同樣有效。

或者,你也可以將匯入選項 nodes/use_name_suffixes 設為 false,完全停用所有名稱後綴。這會使一般的場景匯入流程不再檢查名稱後綴。不過,特定格式的匯入器仍可能會檢查名稱後綴,例如 glTF 匯入器會檢查 -loop 後綴。

停用這些選項會讓在編輯器中匯入的檔案更貼近原始檔,也更接近執行期匯入的行為。若你要採用可於執行期運作、結果更可預期、且僅依明確定義行為的匯入流程,建議將這些選項設為 false,改用 GLTFDocumentExtension

移除節點與動畫(-noimp)

名稱帶有 -noimp 後綴的節點與動畫會在匯入時被移除,無論其型別為何,都不會出現在匯入後的場景中。

這相當於在“進階匯入設定”對話框中為節點啟用“跳過匯入”。

建立碰撞區塊(-col, -convcol, -colonly, -convcolonly)

-col 只適用於 Mesh 物件。被偵測到時,匯入時會自動加一個靜態碰撞子節點,使用相同幾何體。這會產生三角網格碰撞形狀,雖然慢但很精確,常用來做場景地形(但有時可考慮 -colonly,見下)。

-convcol 會建立 ConvexPolygonShape3D (凸型多邊形碰撞體),不是 ConcavePolygonShape3D 。凸型碰撞體只能表示沒有凹角的形狀(如金字塔是凸,空盒子是凹)。因此凸型碰撞通常不適合場景地形,但如果你的物件夠簡單,凸型碰撞效能會比網格碰撞高得多。這適合中小型、需精確碰撞的動態物件。

然而,在這兩種情況,通常視覺幾何要拿來作為碰撞形體都太複雜且太不平滑了。這樣會造成物理故障並不必要地降低引擎的速度。

-colony 修飾詞就是為了解決這個問題,使用該後置詞會在匯入時將網格移除,並改而建立 StaticBody3D 碰撞區域。如此便有助於分開視覺化網格與實際的碰撞區域。

使用 -convcolonly 選項會改而建立 ConvexPolygonShape3D

-colonly 也可與 Blender 的空體一起使用。匯入時,會建立一個有碰撞子節點的 StaticBody3D。不同繪製型別的 Blender 空體所建立的碰撞節點會是數種預定義形狀之一:

在 Blender 中為 Empty 選擇建立時的繪製型別

在 Blender 中為 Empty 選擇建立時的繪製型別

如果可能的話, 請儘量使用初形碰撞區域 來代替三角網格或凸型。初形通常有較好的效能並較可靠。

備註

為了提高 Blender 編輯器中的可見性,可以開啟碰撞空體的「X-Ray」選項,並於 [使用者偏好設定] / [主題] / [3D 視圖] / [空體] 中為空體設定不同的顏色。

如果使用 Blender 2.79 或更早版本,請依照下列步驟操作:使用者首選項 > 主題 > 3D視圖 > 空白

也參考

有關碰撞區域更全面的概覽,請參考 碰撞形狀 (3D)

建立遮擋剔除物件(-occ, -occonly)

如果匯入 Mesh 時帶有 -occ 字尾,將會根據 Mesh 的幾何體建立一個 Occluder3D 節點,它不會取代 Mesh。帶有 -occonly 字尾的 Mesh 節點在匯入時將會轉換為 Occluder3D

建立尋路網格(-navmesh)

名稱帶 -navmesh 的 Mesh 節點會轉換為導覽用的 Navigation Mesh,原本的 Mesh 物件會被移除。

建立 VehicleBody (-vehicle)

-vehicle 後置詞的網格節點會被匯入為 VehicleBody3D 節點的子節點。

建立 VehicleWheel (-wheel)

-wheel 後置詞的網格節點會被匯入為 VehicleWheel3D 節點的子節點。

剛體 (-rigid)

-rigid 後置詞的網格節點會被匯入為 RigidBody3D 節點的子節點。

動畫循環 (-loop, -cycle)

在 COLLADA 文件中以 loopcycle 結尾的動畫片段會被匯入為開啟循環旗標的 Godot Animation於這裡介紹的其他後置詞不同,這個後置詞不需要加減號

在 Blender 中,需要使用 NLA 編輯器,並以 loopcycle 前置或後置詞來命名動作。

材質 Alpha(-alpha)

帶有 -alpha 後綴的材質會以 TRANSPARENCY_ALPHA 透明度模式匯入。

材質頂點色(-vcol)

帶有 -vcol 後綴的材質匯入時會啟用 FLAG_ALBEDO_FROM_VERTEX_COLORFLAG_SRGB_VERTEX_COLOR 旗標。