首页 > 游戏逆向 > 卡通类

《碧蓝幻想》

小编 2025-02-06 12:25:03 人看过

环境

  • Unity 2020.3.0.f1

  • URP 10.3.2



游戏+工具

  • 游戏 Granblue Fantasy: Versus : https://store.steampowered.com/app/1090630/Granblue_Fantasy_Versus/

  • 工具 UE Viewer :https://github.com/gildor2/UEViewer



工具破解游戏步骤

  • 下载好 UE Viewer 工具 和 游戏 之后,用 UE Viewer 打开 游戏的安装目录,如下:


  • UE Viewer 工具破解 Granblue Fantasy: Versus,需要选择游戏的Unreal版本,如下:


  • 除了游戏的Unreal版本之后,还需要用到ASE Key,目前 《 Granblue Fantasy: Versus》的ASE Key 为 0x2A472D4B6150645367566B597033733676397924423F4528482B4D6251655468,如下:


  • 经过上面的操作,成功破解游戏,就可以直接如下的界面 :




工具导出游戏贴图

  • 游戏的大部分角色资源保存在目录 RED/Content/Chara 中,目录名字和角色名字一一对应, 这里 可以找到角色的名字:


  • 找到对应的角色目录,定位到子目录 Material 中,在这个目录可以获得角色所有的贴图:


  • 我们随便双击一个图片资源,UE Viewer 就可以直接显示图片,方便知道每一个资源对应什么图片,如下:



  • 在导出图片之前,先要设置导出的图片格式和导出目录,步骤如下:


  • 设置完图片的格式之后,就可以进行导出,导出目前的图片的操作如下:


  • 如果导出整一个目录的纹理,先打开文件浏览界面:


  • 再右键文件夹:


执行完以上的菜单,就在 导出目录 找到对应的资源。




工具导出游戏人物+动作资源为 gltf

  • 先定位 角色的子目录 Mesh 下,这个目录保存的是角色的模型资源。


  • 双击资源可以直接看到模型,如下:


  • 添加动作,定位到目录 角色的 Adv 中,


  • 追加 动作资源到模型中:


  • 这个播放可以利用 按键 【 和 】 来选择动作,空格Space 进行播放动作,如下:


  • 在导出之前,也要先设置模型的导出格式,这里设置为 gltf ,然后导出就是直接在导出目录看到导出的 gltf 文件:



gltf 资源导出为FBX

  • 直接用 导出 gltf 文件 到 Blender 中


  • 导入gltf 之后,就可以在Blender直接播放资源动作:


  • 把资源导出为FBX,如下:




还原材质效果思路

根据查阅资料和尝试,人物的材质效果主要由3个模块组成: 边缘光 + 高光 + 光影 + 描边



查看贴图+模型 效果

这里先拿 奶牛妹(NRM) 来说明,先看看贴图和模型:

  • 目前比较重要的贴图后缀为 basesssilm,还有模型的顶点色,这些图结合模型资源,如下

  • base :


  • sss :


  • ilm :


  • 顶点色R通道:

  • ilm 每一个通道都会保存 有用 的信息:

  • ilm 红通道 :


ilm 绿通道:


ilm 蓝通道:

ilm Alpha通道 :


以上的都是在还原效果的时候需要用到的信息。



边缘光思路

  • 计算 N Dot V,法线和视觉的点积,得到效果为:


  • 计算 边缘光 范围 , 伪代码:ModifyNdotV = 1 - NdotV + RimLightSize


  • 让边缘光明暗更加分明,在阴影里面的部分不需要 边缘光 :

  • 伪代码:(ModifyNdotV > 0.1) - (Shadow)



  • 结合BaseColor ,最终效果为:




高光思路

  • 计算 N Dot H ,得到效果为:


  • 计算 高光 区域, ilm 贴图的 B 通道会保存 身上哪一些区域的高光 ,得到效果为:

  • 伪代码:ModifyNotH = ColorBurn (N Dot H, ILM.b),ColorBurn 颜色加深


  • 控制高光的大小,得到效果为:

  • 伪代码 : SpecRamp = ModifyNotH > (1 - SpecularSize)


  • ILM的R通道限制高光显示区域,最后高光 :




光影思路

  • 计算 N Dot L ,得到效果为:


  • 优化阴影效果, 得到效果为:

  • 伪代码 :N dot L Modify = (NdotL + LightPush) * VertexColor.R * 0.5 +( ILM.G * 2 - 1 ))


  • 光照 阴影 计算, 得到效果为:


  • 我们得到了光照阴影结果,可以知道哪一些区域是阴影,哪一些区域不是阴影,在阴影的部分使用 暗一点 的 “颜色”,不在阴影的部分就使用 亮一点 的 “颜色”,得到效果为:


  • 在阴影里面的效果,结合SSS 图


  • 最后结合以上的,得到:




描边效果

  • 内描边效果,内描边存储在 ilm.a 通道里面,得到效果为:


  • 外描边效果,主要是使用Back facing描边法,两个pass进行描边,得到的效果:


  • 内描边 + 外描边 效果结合 :



最终效果

  • 把上面的 边缘光 + 高光 + 光影 + 描边 结合在一起,得到的效果为 :



版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章