Unity 3D – Mesh Deformer

前言

在許多遊戲以及動畫裡面都可以看到猶如真實世界的碰撞或是損傷效果,如果是使用傳統的key frame方式製作動畫可以說是非常得花時間,而且要做得非常真實也是很困難的一件事情,其實不管在3D軟體或是Unity 裡面都有許多的方式可以製作碰撞後的效果,而Mesh Deform不僅僅是可以變形模型的網格而已,更可以透過網格的變形製作出物理碰撞後的損傷效果,讓我們在製作場景動畫的時候更貼近真實世界。

目的

本次的文章主要是在Unity利用 Mesh Deform 的效果製作物理碰撞後的效果,其實Mesh Deform的應用也是相當的多,只要語法的數值得宜的話也是可以模仿出類似果凍、氣球等等自然的變形效果。

可以看一下線面的連結,Mesh Deformation可以做出類似果凍的效果可以說相當有趣。

Mesh Deformer在網路上有很多免費或是付費的插件可以使用,當然也可以依照自己的需求寫C#語法製作,這次的練習我們使用更簡單的方式就可以使用網格變形效果,但是也是有一些小技巧需要注意才能讓網格變形效果更好。

Mesh Deformer 直接翻譯的話叫做網格變形器, 變形器擴充將協助3D物件輕鬆的佈置;沿著曲線複寫彎曲和扭曲網格;編輯支點、組合並儲存網格。

下突圍改變力的方向偏移,讓物件網格變形的是意圖。

原文網址: https://catlikecoding.com/unity/tutorials/mesh-deformation/

首先需要練習的先到這邊下載 MG Mesh Deformer 插件

  1. 下載好以後我們將插件的package匯入Unity裡面,這邊不管是使用3D或是HDRP版本皆可以使用,這時候有個非常重要的步驟要先準備,首先點進所要插入Mesh Deformer的model裡面,勾選model裡面Read / Write Enabled選項,勾選完記得按下Apply以後插件才能正常使用。

2. 選擇主要加入插件的model,並選擇整個物件的最上層,並新增 component 搜尋Mesh Deformer加入插件。

3. Use pre calculated threading – 使用預先計算的線程

Use runtime threading – 使用運行時線程

Ingnore objects – 忽略對象 這邊的size可以自行輸入想要忽略的物件數量,再將忽略的物件拉近所建立的表格裡面即可。

Min chunks cubed – 最小塊數

Max Verts per chunk – 最大垂直軸

Min Max Collision Velocity – 最小最大碰撞速度

Min max deformation range – 最小最大變形範圍

Limit Deformation To Chunks – 變形限制

Override mesh filter – 覆蓋網格過濾器

4. 接著在3D 物件上加入Mesh Collider,這邊使用Box Collider 或是Mesh Collider 都是可以的,但是要確保Collider是有完整覆蓋到需要變形的區域。

加入好以後按下play就可以試試看是否可以正常運作

如果過程中發生變形不夠明顯甚至沒有變形的話可以嘗試以下的方法

問題 1:沒有變形

解決方法1:降低min Max Collision Velocity X值。
解決方法2:增加min Max Collision Velocity Y值。
解決方法3:減小min Max Deformation Range X值。
解決方法4:增加min Max Deformation Range Y值。
解決方法5:增加 meformation Clamp 數值。

問題 2:變形太小

解決方法1:增加min Max Collision Velocity Y值。
解決方法2:增加min Max Deformation Range Y值。

問題 3:變形太大

解決方法1:降低min Max Collision Velocity Y值。
解決方法 2:減小 min Max Deformation Range Y值。

以下為快速安裝插件以及測試影片

小結

這次的Mesh Deformer可以說是簡單快速又好用,利用變形的插件可以製作出相當多不同的效果,只要修改語法上的一些參數更可以創造出更多物理現象,然而如果要模擬出車輛碰撞或是損傷的效果,光單只靠 Mesh Deformer 是不夠的,在真實的世界中碰撞的損傷不光只是只有變形,還包含了車輛的碎片、破裂、掉落、冒煙、火光等等,但是從插件快速入門是相當方便且快速的一件事情。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *