Unity 2020.3.0.f1
URP 10.3.2
游戏 Granblue Fantasy: Versus :
工具 UE Viewer :
下载好 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 就可以直接显示图片,方便知道每一个资源对应什么图片,如下:
在导出图片之前,先要设置导出的图片格式和导出目录,步骤如下:
设置完图片的格式之后,就可以进行导出,导出目前的图片的操作如下:
如果导出整一个目录的纹理,先打开文件浏览界面:
再右键文件夹:
执行完以上的菜单,就在 导出目录 找到对应的资源。
先定位 角色的子目录 Mesh 下,这个目录保存的是角色的模型资源。
双击资源可以直接看到模型,如下:
添加动作,定位到目录 角色的 Adv 中,
追加 动作资源到模型中:
这个播放可以利用 按键 【 和 】 来选择动作,空格Space 进行播放动作,如下:
在导出之前,也要先设置模型的导出格式,这里设置为 gltf ,然后导出就是直接在导出目录看到导出的 gltf 文件:
直接用 导出 gltf 文件 到 Blender 中
导入gltf 之后,就可以在Blender直接播放资源动作:
把资源导出为FBX,如下:
根据查阅资料和尝试,人物的材质效果主要由3个模块组成: 边缘光 + 高光 + 光影 + 描边
这里先拿 奶牛妹(NRM) 来说明,先看看贴图和模型:
目前比较重要的贴图后缀为 base, sss,ilm,还有模型的顶点色,这些图结合模型资源,如下
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进行描边,得到的效果:
内描边 + 外描边 效果结合 :
把上面的 边缘光 + 高光 + 光影 + 描边 结合在一起,得到的效果为 :