【Unity 插件推薦】破壞神器 OpenFracture,實現震撼的 3D 物體破碎效果!

目錄
【Unity 插件推薦】破壞神器 OpenFracture,實現震撼的 3D 物體破碎效果!

 

前言

 

本篇文章主要介紹 Unity 遊戲開發中使用 OpenFracture 插件實現物件破壞與切割的【使用教學】,並額外提供了一些補充說明。希望能幫助大家更好地理解這個工具的使用方法,提升遊戲開發中的創意和效率,也歡迎大家支持原文作者!

 

【Unity 插件推薦】破壞神器 OpenFracture,實現震撼的 3D 物體破碎效果!

 

插件介紹

 

OpenFracture 是一款專為 Unity 開發的插件,用於在遊戲開發中創建物理破碎效果。這款插件能夠讓物件在受到外力,如【撞擊】或【爆炸】時產生真實的【碎裂】效果,從而增強遊戲中的物理互動性和視覺效果。

 

OpenFracture 效果表現

 

功能特色

  • 動態破碎:OpenFracture 支持動態地將物件拆分成碎片。當玩家在遊戲中對物件施加某種外力時,例如打擊撞擊插件會根據物件的材質、形狀和外力大小來模擬真實的物理破碎過程。
  • 多種破碎模式:該插件提供了多種破碎模式,包括隨機碎裂沿著特定方向碎裂平面碎裂等。這讓開發者能夠根據遊戲需求自定義物件的破碎效果,達到更精細的控制。
  • 高性能優化:OpenFracture 對性能進行了優化,能夠在不影響遊戲幀率的情況下處理大量的碎片,尤其適合需要大範圍破壞效果的場景,比如爆炸建築倒塌
  • 簡易使用介面:OpenFracture 具有直觀的 Unity 編輯器介面,開發者只需將插件應用於目標物件,並設置相關參數,即可快速生成所需的破碎效果。
  • 支持物理交互:插件生成的碎片完全支持 Unity 的物理系統,因此這些碎片可以與場景中的其他物件產生交互,例如碰撞重力作用,進一步增強遊戲的沉浸感。

 

適用場景

  • 射擊遊戲:物體被槍擊時的碎裂效果。
  • 動作冒險遊戲:牆壁或建築在爆炸或角色撞擊後的破壞。
  • 恐怖遊戲:用來增加驚悚氣氛的動態破壞效果,例如窗戶突然破碎。

 

 

使用注意事項

 

1.如果要導入自定義網格,必須在導入設置中將“啟用讀取/寫入”設為 true,否則會產生錯誤。

 

如果要導入自定義網格,必須在導入設置中將“啟用讀取/寫入”設為 true,否則會產生錯誤。

 

2.網格必須是非相交和封閉的,否則重新三角測量將會失敗。

 

網格必須是非相交和封閉的,否則重新三角測量將會失敗。

 

上面描繪的是凳子的線框模型。注意橫桿如何與凳子腿相交。相交的幾何圖形將導致三角測量算法(填充新切割的面)失敗,並導致如下所示的偽影。我實現的三角測量算法不處理自相交多邊形。檢測自相交幾何是一個不平凡的問題,作者並不打算添加此功能。

 

相交的幾何圖形將導致三角測量算法(填充新切割的面)失敗,並導致如下所示的偽影。

 

3. 壓裂過程是一個計算密集型的過程。簡單的模型(幾百個頂點)可以毫不費力地分成幾十個部分。然而在運行時對包含數千個頂點的複雜模型進行壓裂的性能,可能在較舊的、功能較差的計算機上會非常慢。

以下是優化性能的一些提示:

  1. 減少片段數量  。
  2. 禁用或減少折射間隔次數 。
  3.  在編輯器中使用預斷裂模型,而不是運行時的破裂。
  4. 將您的模型引入 Blender 等 3D 建模程序,並使用抽取工具簡化網格幾何體  。

 

 

Fracture

 

斷裂,在運行時將網格分解成多個部分。

1. 前提條件  
對象應添加以下組件。前三個是腳本的必需組件(即它們會自動添加),而碰撞體則不是必需的組件,因為您可以使用任何類型的碰撞體。

  • MeshFilter  
  • MeshRenderer  
  • RigidBody  
  • Collider(任何類型)

2. 給想要破壞的物體添加 Fracture 腳本。

 

給想要破壞的物體添加 Fracture 腳本。

 

3. 參數說明  

Trigger Options(觸發選項)

  • Trigger Type(觸發類型)  
    • Collision(碰撞):基於物理碰撞的觸發  
      •  Minimum Collision Force(最小碰撞力觸發斷裂所需的最小碰撞力):如果碰撞力等於或大於此值,則將觸發斷裂。要忽略此設置,請將最小力設置為 0。  
      •  Limit collisions to selected tags(將衝突限制為選定標籤):通過啟用此選項,您可以限制哪些對象標籤將觸發衝突。檢測到衝突時,碰撞對象的標記將與包含的標記列表進行比較。如果它包含在該列表中(並且滿足其他衝突條件),則將觸發斷開。  
      • Included Tags(包含的標籤):可以觸發斷開的遊戲對象標籤集。  

         

  • Trigger(觸發器):基於觸發器的觸發 
    • Filter Collisions By Tag(按標籤過濾碰撞):如果為 true,則只使用帶有“Allowed tags”標籤的對象列表將觸發衝突。  
    • Trigger Allowed Tags(觸發允許的標籤):如果“Filter Collisions By Tag”設置為 true,只有帶有此列表中標記的對象將觸發骨折。  

       

  • Keyboard(鍵盤):用戶按下某個鍵觸發
    • Trigger Key(觸發鍵):按下時觸發斷裂的鍵。

 

Fracture Options(斷裂選項)  

 

  • Fragment Count(片段計數):要將對象分解為的片段數。注意:如果“檢測浮動片段”設置為 true,則最終的片段數可能高於“片段計數”。這是因為浮動碎片檢測是在壓裂階段完成後進行的。
  • Asynchronous(異步):如果啟用,網格將通過使用協程異步斷開。斷裂步驟分布在許多框架上,而不是一個框架上,以防止卡頓。如果碎片計數很大,則觸發裂縫和實際發生壓裂之間的延遲可能很大。如果性能是問題,建議在編輯器而不是運行時中斷開網格。  
  • Detect Floating agments(檢測浮動片段):如果啟用,將在執行斷裂算法後對生成的片段進行傳遞,以確定是否有任何片段包含未連接的幾何圖形。在壓裂非凸網格時,可能會發生這種情況。由於必須搜索每個片段的幾何形狀以識別這些不相連的頂點/面集,因此此選項將顯著降低壓裂的性能。同樣的如果性能問題,建議您使用該腳本。  
  • Fracture Along X/Y/Z Plane(沿 X/Y/Z 平面的斷裂):每條斷裂線都可以由一個向量指定。對於某些對象,最好將此向量鎖定到特定平面。例如,假設您有一個玻璃窗格模型,其寬度沿 X 軸,高度沿 Y 軸,厚度沿 Z 軸。斷裂線應約束在玻璃的表面(X-Y 平面),而不是沿其厚度分割玻璃。在這種情況下,您可以將“沿 X 平面的斷裂”和“沿 Y 平面的斷裂”設置為 true,將“沿 Z 平面的斷裂”設置為 false。
  • Inside Material(內部材料):用於新斷裂面的材料。
  • Texture Scale(紋理比例):應用於斷裂面的 UV 坐標的比例因子。
  • Texture Offset(紋理偏移):應用於斷裂面的 UV 坐標的常量偏移。  

 

Refracture Options(重裂選項)

  • Enabled(已啟用):設置為 true 以啟用片段折射。  
  • Invoke Callbacks(調用回調):如果啟用,折射片段也會觸發回調。如果只想在對象首次斷開時觸發操作,而不要在片段重新斷開時觸發操作(在這種情況下,應將此選項設置為 false),則此選項非常有用。  
  • Max # of Refractures(最大 # 個重新斷開):一個片段可以重新斷開的最大次數。警告:折射會導致碎片呈指數增長。如果啟用折射,建議保持較低的片段計數。  

Callback Options(回調選項)

  • OnComplete():當破裂完成時,將觸發此回調。使用它來播放聲音、打開燈或執行其他任何遊戲內邏輯。  

 

 

Prefracture

 

預斷裂:用於編輯器中的預斷裂網格。生成的片段可以直接保存在場景中,也可以保存到磁碟(如果要創建預製件)。

該腳本允許在編輯器中斷開網格。預斷開網格時,片段將添加到場景中,並將原始對象設置為非活動狀態。每個碎片都有一個被冻结的剛體。片段可以根據幾種觸發條件(如下所列)解凍。當滿足觸發條件時,片段將解凍。如果滿足單個片段的觸發條件,也可以解凍所有片段。這允許預斷裂的網格一次分解一塊或一次全部破碎。

 1.先決條件
與 Fracture 一樣。

2.給想要破壞的物體添加 Prefracture 腳本。

 

給想要破壞的物體添加 Prefracture 腳本。

 

3. 參數說明  
其他參數與前面的 Fracture 一樣。

Prefracture Options(預斷裂選項)

  • Unfreeze All(全部解凍):如果觸發了某個片段,則解凍所有片段。  
  • Sae Fragments to Disk(將片段保存到磁碟):將片段網格保存到磁碟。如果預製件中將使用預斷開網格,則為必需。如果預斷開網格不會用作預製件並將嵌入到場景中,則可以選。  
  • Save Location(保存位置):將片段保存到相對於項目根目錄的位置。  
  • Prefracture Mesh(預斷裂):此按鈕將斷開網格並生成碎片。生成片段後,包含基礎網格體的對象將設置為非活動狀態,但仍保留在場景中。  

 

 

Slice

 

切片:網格的運行時切片。  

該腳本允許在運行時將網格切成兩部分,如果需要片段還可以重新切片為更小的片段。

1.前提條件  
與 Fracture 一樣。

2.給想要破壞的物體添加 Slice 腳本。

給想要破壞的物體添加 Slice 腳本。

3.參數說明

Slice Options(切片選項)

  • Enable Reslicing(啟用重新切片):設置為 true 以啟用片段重新切片。  
  • Max Reslice Count(最大重新切片計數):片段可以重新切片的最大次數。 
  •  Detect Floating Fragments(檢測浮動片段):如果啟用,將在切片算法執行後對生成的片段進行傳遞,以確定是否有任何片段包含未連接的幾何圖形。切片非凸網格時可能會發生這種情況。由於必須搜索每個片段的幾何形狀以識別這些斷開連接的頂點/面集,因此此選項將顯著降低切片的性能。
  • Inside Material(內部材質):用於新切片面的材質。  
  • Texture Scale(紋理比例):應用於切片面的 UV 坐標的比例因子。  
  • Texture Offset(紋理偏移):應用於切片面的 UV 坐標的常量偏移。  
  • Invoke Callbacks(調用回調):如果啟用此選項,切片片段也會觸發回調函數。如果只想在第一次切片對象時觸發操作,而不要在重新切片片段時觸發操作(在這種情況下,將此選項設置為 false),則此選項非常有用。  

 

Callback Options(回調選項)

  • OnCompleted():當切片完成時觸發此回調。使用它來播放聲音、打開燈或執行其他任何遊戲內邏輯。

 

4. 刀片腳本
與 Fracture 和 Prefracture 不同,Slice 需要編寫腳本,因為您必須在運行時傳入切片平面的法線和原點。如果要切片的對象,請執行以下代碼將其切片為兩個片段。sliceNormal 和 sliceOrigin 分別是切片平面在世界坐標中的法線和原點:


public GameObject obj; // 切割物體

var slicer = obj.GetComponent<Slice>(); // 

var sliceNormal = Vector3.up; //

var sliceOrigin = obj.transform.position; //

slicer.ComputeSlice(sliceNormal, sliceOrigin); //

 

OpenFracture 影片介紹

 

 

 

破壞神器插件下載點

 

OpenFracture】

GitHub 下載連結:OpenFracture 

————————————————

以上內容改編節錄 CSDN 作者:向宇it

 

更多好用插件:【Unity 好用插件推薦】持續更新,一起讓遊戲開發事半功倍!

 

 

 

本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。

特約作家簡介

X
A
Y
B
JamXu的頭像
JamXu

經中華網龍遊戲企劃進入遊戲圈,然後被雷打到去學程式前後端又學了點設計帶帶幾個研發團隊,見證了 3D 渲染技術及遊戲引擎互相進步,也見證了研發代理的更迭與博弈遊戲的興起,再毅然研究起 SEO 網路行銷社群廣告投放,深信自研自賣才是最大贏家,期望能為台灣研發重回輝煌時光貢獻一點力量。如果你也有遊戲夢,歡迎交流認識。


支持贊助 / DONATE

亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。

亞洲電玩通AsiaGameMaster - Steam 遊戲鑑賞家
亞洲電玩通AsiaGameMaster - FB 粉絲專頁
亞洲電玩通AsiaGameMaster - IG 粉絲專頁
亞洲電玩通AsiaGameMaster - Twitter
亞洲電玩通AsiaGameMaster - Yoytube 粉絲專頁
亞洲電玩通AsiaGameMaster - Tiktok

BTC

亞洲電玩通AsiaGameMaster - BTC 鏈贊助地址

352Bw8r46rfXv6jno8qt9Bc3xx6ptTcPze

 

ETH

亞洲電玩通AsiaGameMaster - ETH 鏈贊助地址

0x795442E321a953363a442C76d39f3fbf9b6bC666

 

TRON

亞洲電玩通AsiaGameMaster - TRON 鏈贊助地址

TCNcVmin18LbnXfdWZsY5pzcFvYe1MoD6f

延伸閱讀