之前韩の娃娃问我新出的锦衣是否是在shape.wd8资源包内,但是分析之后发现资源是以3D模型的形式存放在r3d.npk内的。虽然去年夏天简单分析过.gim模型格式,但要我把它渲染的跟梦幻里一样效果还是有些难度的,毕竟我也只是刚刚导出了T-Pose模型而已。
前几天又看到了空灵姐的留言,说大家还在为提取新资源而头疼。既然如此,那么何不尝试提取一下,也小小的满足一下自己的好奇心。
问题切入点
负责渲染的程序xyqsvc.exe是如何将渲染好的图片传给客户端程序my.exe使用的?
最开始时,我以为xyqsvc.exe将渲染好的图片存放在v3d_cache目录下的文件内,然后my.exe读取这个文件。但仔细一想,多个程序对同一个文件同时读写,还要同步,这几乎是不可能的。而且使用FileMon监视文件读写,发现my.exe是根本不读取这些文件的。之后的分析显示,v3d_cache下的v3d.hdr和v3d.dat只是xyqsvc.exe的缓存文件,是为了方便下次使用而保存的。传送图片的真正办法是内存共享。(查找内存共享时看到了云风哥对这个技术的介绍,证明我的分析是基本正确的。出乎我的意料的是,xyqsvc.exe是多个客户端共享的)
言归正传,既然渲染好的图片缓存下来了,那么必定是可以提取的。(其实不缓存也可以在内存里截取,但涉及的问题就要复杂许多)
下面把我分析的 v3d.hdr 和 v3d.dat 的格式写出来,全当是做个备忘吧。