開啟插件
首先安裝插件,然后重啟。
打開顯示插件內容
我們就可以找到插件自帶的轉換內容
將骨骼網格體轉換為頂點動畫有兩種方式:
- 最簡單的記錄每個頂點的位置然后通過切換拾取顏色偏移實現
- 記錄骨骼的變換,然后通過貼圖去修改骨骼位置計算
這兩種方式都可以實現,記錄頂點位置的如果模型頂點數量太多,生成的貼圖也就越大,骨骼則是根據骨骼數量,所以生成的貼圖會小很多,在渲染時會增加計算量,所以大家可以根據需求選擇。
我們如果不會使用,則可以通過自帶的案例學習查看。
在Mannequin目錄下
你會發現案例使用的轉換藍圖
鼠標右鍵會有運行編輯工具藍圖用來生成我們需要的數據。
然后我們通過旁邊的生成的動畫找到材質使用的父材質
材質里,左側部分為顏色渲染相關,紅框內為動畫相關,我們可以復制所需內容(注意要復制出來到項目去修改,不要直接在插件文件里修改)
接下來,重要的是我們需要制作生成使用的配置文件,我們可以在Data里找到案例使用的配置。
最主要的配置就是設置模型和生成到的目標貼圖
然后設置需要生成的動畫幀率和動畫,可以選擇多個動畫,還有自動播放功能
準備資源
首先,我們先通過骨骼網格體生成靜態網格體,找到標準姿勢的骨骼網格體,點擊制作靜態網格體
然后查看骨骼網格體使用的材質,有幾個復制幾個
我們需要將案例里的一些節點復制到新創建的材質中
在細節這里開啟使用材質屬性
會發現有多個接口的節點變為一個
然后我們通過節點創建一個屬性集合
然后把節點按之前的順序鏈接起來
如果你需要修改,可以創建材質實例,然后在圖層參數這里進行修改,圖層的概念可以不會造成命名污染代碼維護等優勢
材質準備完畢,我們準備使用的紋理,這個紋理位置在
復制到自己的文件夾并重新命名,這三種圖片分別記錄骨骼的位置,骨骼的旋轉,骨骼的權重
我們再講案例中的藍圖和數據復制出來
數據在Data目錄
然后重新命名
生成并設置頂點動畫數據
打開藍圖,我們將生成頂點動畫的數據取消,如果你需要也可以設置生成
我們還需要更新材質參數,我們需要將所有需要修改的材質設置進去,如果不夠可以在后面繼續復制
在藍圖類默認值這里,我們設置數據文件
然后打開DA,將數據修改成需要修改的資源,
然后添加幾個動畫測試效果
鼠標右鍵,選擇運行工具藍圖
運行完成后,你會發現這兩個材質參數都已經被修改掉
最后,把靜態網格體的材質替換為頂點動畫材質實例,你會發現模型會播放動作
使用藍圖播放動畫
數據我們實現了設置,那么,資源如何在藍圖中使用呢,我們在案例中找到一個藍圖專門用于播放,這個可以隨機四個動畫然后通過模型去播放。
由于我項目中的資源比較多,就不編譯c++代碼分析函數實現,只講解一下如何使用此藍圖。
我們將其復制出來,修改藍圖的靜態網格體和配置使用的配置項
接著編譯,你可以發現視口中的四個模型都在播放不同的動作,即使相同的動畫,播放的幀也不同
打開藍圖,我們查看構造函數,會發現在構造函數中調用了兩個函數,一個生成自動播放數據,另一個是合批,就是在一次drawcall中,將所有的模型渲染出來
藍圖的組件使用的是實例化靜態網格體組件,組件可以一次性渲染多個不同的模型實例。
首先調用父藍圖的構造函數,構建位置矩陣,并將生成的位置數量設置給實例化靜態網格體組件
生成矩陣函數就是生成函數
它的個數生成按照我們設置生成Div:行列數,最終數量為Div X 乘 Div Y ,然后在Size里均勻排列,并可以設置隨機偏移。
在子藍圖的構造函數里,設置為自動播放,并調用父藍圖構造函數,并生成自動播放的數據,將所有實例的矩陣傳入播放。
在生成自動播放數據函數里,我們可以通過之前配置的生成頂點數據的配置項去生成每個實例的播放數據
當前可以選擇播放哪個動畫,設置動畫播放開始位置,和動畫播放速率。
自動播放數據的參數有四項,播放起始位置,播放速率,當前動畫的起始幀和結束幀。
最后將每個實例的自動播放數據和位置變換數據提供給實例化靜態網格體組件,它將會生成多個實例并播放
我們可以調整參數生成更過的實力來查看效果
最終效果