Obi Cloth 教學

Obi Cloth 是一套支援 Unity 遊戲引擎的布料模擬外掛程式,Obi Cloth 也可以製作 Unity 柔體效果。

從資源商店將 Obi Cloth 下載到您的專案。

匯入 Obi Cloth 資源包。

匯入後專案約增加 110MB 大小,屬於輕量資源。

 

Obi Cloth 6.x 範例場景

開啟 [ Obi > Samples > Cloth ] 資料夾,檢視 Obi Cloth 提供的展示場景。

Benchmark 場景包含 32 個布料與風的力場,測試遊戲與目標平台的執行效能。

Obi Ambient Force Zone 風區元件。

CharacterCloth

ClothRaycast

ClothRigidbodyInteraction 布料剛體互動

ClothSoftbody

ClothStaticMeshCollider

 

RuntimeCloth

 

Parachute

Cloth-SailBoat

SoccerGoal

 

 

Obi Cloth 基本設定

執行 [ GameObject > 3D Object > Obi > Obi Solver ] 新增 Obi Solver 物件,此物件是布料模擬的解算器。

 

新增製作布料的物件,例如 Plane 平面物件,命名為 "Cloth" 注意!物件不可縮放避免產生運算錯誤。

製作布料的物件需要 Mesh Renderer 或 Skinned Mesh Renderer 元件,兩種元件不可同時在一個物件。

 

選取 Cloth 物件,增加 Obi Cloth 布料元件。

若此布料需要產生破碎的效果,需要加入額外的布料元件。

 

 

 

選取新增的 Obi Mesh Topology 網格,並在 Inspector 屬性編輯器的 Input Mesh 點擊右側圓鈕,選擇製作布料的物件,也就是目前場景的 Cloth 物件。然後再按下 Generate 按鈕,即可生成布料拓樸物件,透過下方的預覽視窗可以看到生成的結果。

 

 

選取 Cloth 物件,在 Inspector 屬性編輯器找到 Obi Cloth (Script) 元件,從 Project 專案視窗找到剛剛新增的 Obi Mesh Topology,然後拖曳到 Shared Topology 欄位,再按下 Initialize 初始化按鈕。

 

 

 

 

 

選取 Cloth 物件,然後將 Obi Solver 物件拖曳到 Obi Cloth (Script) 元件的 Solver 欄位,按下 Innitialize 進行初始化。

 

 

9. 按下 Edit particles 編輯粒子按鈕,即可編輯布料網格上的每個頂點,紅色點為固定狀態,藍色點為解開狀態。

註:使用 Selection brush 可以繪製方式快速選取多個頂點,調整 Radius 半徑可以改變筆刷範圍。

 

布料背面不進行著色的問題,可以從 Asset Store 資源商店下載免費的 Double Sided Shaders 雙面著色器,指定給布料使用。


設定布料與物件的碰撞

 

新增一個物件(例如 Sphere 球體)並套用 Rigidbody 剛體元件,讓此物件能向下掉落碰到布料,將會發現目前的布料不會產生碰撞效果,這是因為前面使用 Obi Solver 並沒有對物件碰撞進行計算。

1. 刪除原本的 Obi Solver 物件,執行 [ GameObject > 3D Object > Obi > Obi Solver (with Collider Group) ] 新增帶有 Obi Collider Group 的 Obi Solver 物件。注意!因為原本的 Obi Solver 物件刪除的關係,布料的 Solver 必須也需要重新指定。

補充:實際上也可以在原本的 Obi Solver 物件上新增 Obi Collider Group 元件,執行 [ Component > Scripts > Obi > Obi Collider Group ] 新增 Obi Collider Group (Script) 元件。選取 Obi Solver 物件,從 Inspector 屬性編輯器找到 Obi Solver 元件下方的 Collider Group 欄位,再將 Obi Solver 物件拖曳到此欄位。這個方式的操作步驟比較多,所以建議刪除 Obi Solver 後再新增 Obi Solver (with Collider Group)。

3. 布料物件和碰撞物件必須放在不同的圖層,先在 Inspector 屬性編輯器內的 Layer 新增一個 Cloth 圖層,將 Cloth 物件改改到 Cloth 圖層。

4. 選取帶有 Obi Collider Group 元件的物件(即 Obi Solver),在 Inspector 屬性編輯器內找到Obi Collider Group 裡的 Colliders > Size (物件數量) 輸入場景內要碰撞的物件總數量,輸入後將會出現 Element 0、Element 1 、 Element 2 … 等欄位,即可將場景內要碰撞物件逐一拖曳到這些欄位。

5. 將 Coth 物件原有的 Mesh Collider 關閉,然後按下 Play 測試,即可與產生碰撞的效果。

 


布料與風力的互動

布料的物理特性是受到風力時會產生飄動的效果,如果缺少與風的互動,視覺效果上必然難以呈現真實的效果。本段教學說明加入布料與風力的互動。

建立一個新的空物件,重新命名為「Wind」。

執行 [ Component > Scripts > Obi > Obi Ambient Force Zone ] 套用全域風力場元件。

箭頭代表風向,旋轉到適當的方向。

Intensity 強度(預設值 = 0 ,請增加)

Turbulence 亂流

Turbulence Frequency 亂流頻率

Turbulence Seed 亂流種子,用於產生不同的隨機效果。

Affected Solvers 有效的解算器

Size 輸入 1 然後將場景中的 Obi Solver 拖曳到此欄位。

球狀風力場

建立一個新的空物件,重新命名為「Wind」。

執行 [ Component > Scripts > Obi > Obi Spherical Force Zone ] 套用球狀風力場元件。

即可產生布料受到風力吹動的效果。

 

製作柔體效果

Obi Cloth 除了一般製作衣服的布料,也適用於製作抱枕或絨毛填充玩偶等柔體件。

1. 新增一個製作柔體的物件(例如 Sphere 球體),注意不要縮放此物件以避免產生拓樸運算錯誤,重新命名為「Softbody」。

2. 選取 Softbody 物件(後稱柔體物件),執行 [ Component > Physics > Obi > Obi Cloth ] 加入布料元件。

3. 在專案新增一個 Obi Mesh Topology 網格拓樸,步驟是在 Assets 資料夾右鍵新增 [ Create > Obi > Obi Mesh Topology ] 。建議適當命名,例如「Sphere Obi.ObiMeshTopology」。

4. 選取新增的 Obi Mesh Topology 物件,並在 Inspector 屬性編輯器的 Input Mesh 按下右側圓鈕,選擇對話框中的 Sphere 球體★,然後再按下 Generate 按鈕即可生成布料拓樸,可以從下方的預覽視窗檢視形狀。

6. 選取 Softbody 柔體物件,在 Inspector 屬性編輯器找到 Obi Cloth (Script) 元件,從 Project 專案視窗找到剛才新增的 Obi Mesh Topology 網格拓樸並拖曳到 Shared Topology 欄位,然後按下 Initialize 初始化按鈕。停用或移除柔體物件的 Collider 碰撞器。

7. 執行 [ GameObject > 3D Object > Obi > Obi Solver (with Collider Group) ] 新增帶有 Obi Collider Group 的 Obi Solver 解算器。

8. 選取 Softbody 物件,然後將剛才建立的 Obi Solver 解算器拖曳到 Obi Cloth (Script) 元件的 Solver 欄位。

9. 按下 Edit particles 按鈕可以編輯網格上的粒子(頂點),柔體物件與一般布料不同的是…通常不需要特別對粒子固定。

10. 從 Project 專案視窗找到碰撞材質 ( ObiCollisionMaterial ),開啟 [ Assets > Obi > Sample Scenes > SampleResources ] 資料夾,先將 MediumFriction 拖曳到柔體物件的 Obi Cloth (Script) 元件下的 Material 欄位,這個碰撞材質可以調整摩擦力與黏性等參數。如果沒有加入碰撞材質,柔體物件將會因為沒有摩擦力而像史萊姆一樣不停滾動。

從對話框可以選擇以下的碰撞材質★

VerySticky 黏著

HighFriction 高摩擦

MediumFriction 中摩擦

LowFriction 低摩擦

Ice 冰

此外,選取碰撞材質後,可透過 Inspector 屬性編輯器調整。

11. 在場景內新增一個 Plane 物件放在柔體物件的下方,新增一個 Cube 物件置在柔體物件上方,選取帶有 Obi Collider Group 元件的物件(即 Obi Solver),在 Inspector 屬性編輯器內找到 Obi Collider Group 裡的 Colliders > Size (物件數量) 輸入2 (場景內要碰撞的物件總數量),輸入後將會出現 Element 0、Element 1 … 等欄位,將 Plane 與 Cube 物件拖曳到欄位內。

12.柔體物件與碰撞物件必須放在不同的圖層,可以將柔體物件放入前面新增的 Cloth 圖層。

13. 選擇柔體物件,從 Inspector 屬性編輯器找到 Obi Volume Constraints (Script) 元件,此腳本可以控制布料的膨脹與收縮。

14. 按下 Play 即可測試柔體效果。將柔體物件上方的方塊向下移動,測試柔體被壓扁的效果。

15. 調整 Obi Volume Constraints (Script) 體積約束,可製作汽球膨脹的效果。

 

製作布料的破碎效果

1. 新增一個製作布料的物件(例如 Plane 物件),注意不要縮放此物件以避免產生拓樸運算錯誤,重新命名為「Cloth」。

2. 選取 Cloth 物件,執行 [ Component > Physics > Obi > Obi Tearable Cloth] 加入必要的破碎布料元件。

3. 在專案新增一個 Obi Mesh Topology 網格拓樸,可以在 Assets 資料夾按滑鼠右鍵執行 [ Create > Obi > Obi Mesh Topology ] 新增網格拓樸。相同形狀的網格可以共同一個 ObiMeshTopology 網格拓樸,但若場景中有多個不同形狀的布料,必須再新增 ObiMeshTopology 網格拓樸,建議設定適當名稱以避免混淆。

5. 選取新增的 Obi Mesh Topology 物件,並在 Inspector 屬性編輯器的 Input Mesh 按下右側圓鈕,選擇 Plane 物件。★然後再按下 Generate 按鈕即可生成布料拓樸,可以從下方的預覽視窗檢視形狀。

6. 選取 Cloth 物件,在 Inspector 屬性編輯器找到 Obi Tearable Cloth (Script) 元件,從 Project 專案視窗找到剛剛新增的 Obi Mesh Topology,然後拖曳到 Shared Topology 欄位,再按下 Initialize 初始化按鈕。

7. 製作布料破碎也需要有碰撞計算的解算器,執行 [ GameObject > 3D Object > Obi > Obi Solver (with Collider Group) ] 新增帶有 Obi Collider Group 的 Obi Solver 解算器。

8. 選取 Obi Solver 解算器,從 Inspector 屬性編輯器找到 Obi Tearable Cloth (Script) 元件下方的 Collider Group 欄位,再將 Obi Solver 物件拖曳到此欄位。

9. 按下 Edit particles 編輯粒子按鈕,即可編輯布料網格上的每個粒子(頂點)。

8. 布料與碰撞物件必須放在不同的圖層,將 Cloth 物件改到 Cloth 圖層,如果沒有這個圖層請在 Inspector 屬性編輯器新增。

9. 停用或移除 Coth 物件原有的 Mesh Collider 網格碰撞器。

10.新增一個物件(例如球),套用 Rigidbody 剛體元件,讓此物件能向下掉落碰到布料,即可與產生碰撞的效果。

11.選取帶有 Obi Collider Group 元件的物件(即 Obi Solver),在 Inspector 屬性編輯器內找到Obi Collider Group 裡的 Colliders > Size (物件數量) 輸入場景內要碰撞的物件總數量,輸入後將會出現 Element 0、Element 1 、 Element 2 … 等欄位,即可將場景內要碰撞物件逐一拖曳到這些欄位。

12. 將新增物件的 Rigidbody 剛體元件下的 Mass 值調大增加質量。

13. 選取 Cloth 物件,在 Inspector 屬性編輯器找到 Obi Tearable Cloth (Script) 元件,調整 Obi Tearable Cloth (Script)元件下的Tear Capacity、Tear Resistance Multiplier、Tear Debilitation,不同的數值會有不同的結果,然後按下 Play 測試。

Tear capacity 撕裂能力
Tear Resistance Multiplier 耐撕裂乘數
Tear debilitation 撕裂衰弱

14. 從 Project 專案視窗找到 MediumFriction [ Assets > Obi > Sample Scenes > SampleResources > MediumFriction ],將 MediumFriction 拖曳到 Obi Tearable Cloth (Script) 元件下的 Material 欄位,此元件可調整摩擦力與黏性等參數。