UE4: Spine2D 導入與基本使用
Spine2D, 用來做 2D 動作的軟體工具,這陣子好像漸漸使用的人越來越多了,我自己最近在玩空洞騎士( Hollow Knight ) 也是 2D 紙片遊戲,整體畫風真的很讚,動作方面也很細膩流暢,但他是用什麼做的,我不知道...XD。好吧,其實就像我主管常說的,工具只是工具,重要的還是觀念,不過好的工具的確會帶你上天堂,畢竟人家都處理好了。
** 以下單純自己初學 UE4 使用到的紀錄
** 以下單純自己初學 UE4 使用到的紀錄
* 要在 UE4 專案使用 Spine2D 有以下幾件事情要處理:
1. 將 Spine2D 的 Plugin 放到專案中
2. 導入 Spine2D 資料於專案內
3. Spine2D 動作設定與切換 ( Play Mode )
2. 導入 Spine2D 資料於專案內
3. Spine2D 動作設定與切換 ( Play Mode )
4. Spine2D 效能優化 -- 初步測試
* 1. 將 Spine2D Plugin 放到專案內
-- 1.1 開啟一個專案( Blueprint or C++ 皆可),我這邊使用的是 UE4 4.22
-- 1.2 下載 Spine2D 的 Plugin,放到專案資料夾內,重新開啟專案
* 2. 導入 Spine2D 資料於專案內 -- 官網說明
-- 2.1 Spine2D 輸出的檔案有 .atlas, .json, .skel,.紀錄貼圖與骨架動作的資訊
-- 這些資料在 1.2 下載的資料夾內有一個 examples 資料夾下有,也可從官方自己下載
-- 2.3 建立一個空場景,放置一個空的 Actor,對其 Add Component
-- SpineSkeletonRenderer Component
-- SpineSkeletonAnimation Component
-- 2.4 在 SpineSkeletonAnimation Component 上,將 Atlas, Skeleton Data 設定好,Preview Skin 打上動作名稱就可
* 3. Spine2D 動作設定與切換 ( Play Mode )
-- 3.2 點擊兩下開啟編輯視窗,一樣對其 Add Component,加上 SpineSkeletonRenderer ,
SpineSkeletonAnimation ,並將 Atlas, Skeleton Data 設定好
-- 3.3 設定初始動作與取得 Play Controller ,接收 Input 做動作切換的設定
** 另外使用了 Animation Complete ( SpineSkeletonAnimation) 去偵測動作結束沒,結束回 idle
* 4. Spine2D 效能優化
根據原作者的回答,Spine2D 全仰賴 CPU 端運算與繪製,一個空景 PC 跑 FPS 大概在 120,大概超過 40 隻
Spineboy 就會有感下降,100 隻大概 50-90 間,不管攝影機照不照的到。( 這樣看電腦配備以及電腦現行運行 什麼而定了)
不過可以很確定的是,CPU 運算會比純3D來的吃重就是了,如下圖,每個 frame 都會不斷呼叫 SpineSkeletonRenderer 與 SpineSkeletonAnimation,攝影機看不到也是。
Spineboy 就會有感下降,100 隻大概 50-90 間,不管攝影機照不照的到。( 這樣看電腦配備以及電腦現行運行 什麼而定了)
不過可以很確定的是,CPU 運算會比純3D來的吃重就是了,如下圖,每個 frame 都會不斷呼叫 SpineSkeletonRenderer 與 SpineSkeletonAnimation,攝影機看不到也是。
-- 4.1 可以建立一個 C++ Class 繼承 Actor ,寫函式來開啟 / 關閉 Component 的 Tick
-- 4.2 使用這個 Actor 去做一個 BP 出來,然後一樣開啟 BP 去增加 Spine Component,然後指定 Atlas, Skeleton
Data,接著串動作,這邊另外使用 到 Was Recently Rendered 來判斷是否在攝影機內,不在攝影機內就停止
tick 呼叫
tick 呼叫
**打開 FPS 放個 100 隻,就會有感了。
------------------------------------------------------------------------------------------------------------------------------------------------------
老實說,這樣的優化並不準確,只是針對 Profiling 去把問題解決,不過就先求有再求好吧,順便目標導向的摸摸 UE4有哪些功能,感覺上面寫的也是冰山一小角而已,剛寫的時候有想說都用 BP 去串看看,不要寫 Code 去關 Tick,摸一下就放棄了.....XD 決定還是先把當前的紀錄下來就好,提供這個專案的 Github,有興趣的可以下載來看看。
留言
張貼留言