手游逆向分析<二>: Unity內還原《鎮魔曲》角色渲染效果
上篇對手游場景的逆向分析,本文針對第三方遊戲在真機上的角色渲染,分析還原其效果。仍然以自研引擎NeoX開發的《鎮魔曲》為例,介紹在Unity內還原遊戲的角色效果。
首先看真機效果和還原效果對比。
GPU數據的截取使用高通和Nvidia的工具。模型的提取轉化需要注意的地方有:
1, 因為高通的profiler截取的頂點數據經常丟失, 相關buffer用Tegra Debugger去截。
2,Unity導入切線時會自動normalize, 而NeoX引擎的模型會用切線的長度記錄信息,同時FBX,unity對單個uv不能同時支持四個通道,所以自己寫工具處理FBX文件時需要做一個trick: 用兩套uv對切線進行編解碼。
3,骨骼動畫NeoX採用GPU計算,而Unity在CPU計算。為了方便展示,模型需要帶有骨骼動畫pose,這個在導出FBX時把截到的骨骼矩陣計算到頂點。
材質Shader人肉翻譯,解析提取後總結如下:1, 角色分為三部分,身體,頭部和頭髮繪製(不包括武器道具)。
2, 角色光照。實時光包括一盞平行光和點光源,預計算Spherical Harmonics Diffuse對角色補光,美術可以通過參數修改lighting的佔比,以及再打一盞平行光補光,避免出現明暗劇烈過渡。
3, 頭髮的SH Lighting在頂點計算,身體的SH Lighting在像素計算。
4, 角色的Spherical Harmonics Diffuse在展示界面和場景內設置是不一樣的,但是在同一個場景內,SH都是一樣的。反射則是靜態的,永遠保持不變。
5, 服裝金屬部分,採用GGX BRDF模型。
6, 皮膚部分3S的表現主要是對diffuse進行線性warp處理。
7, 頭髮各向異性效果,通過brdf + 副法線方向上對反射的多次擾動實現。
相關鏈接: 手游逆向分析<一>:Unity內還原《鎮魔曲》場景渲染效果推薦閱讀: