为什么要找骨骼基址?
找骨骼基址是为了实现绘制骨架和骨骼自瞄,比如瞄准头部骨骼、胸部骨骼。
找骨骼基址
对自己的 Actor 的地址进行结构分析,防止分析错地址最好直接用 APawn,然后根据特征去查找。
ComponentToWorld 是 3x3 结构,最后一行数值不会动,最后一行数值一般是3个固定的数值和 0.00。比如1.00 1.00 1.00 0.00 或 2.50 2.50 2.50 0.00 这样的。

根据特征,我们找到了 ComponentToWorld,得到偏移为 Actor.base -> 0x378 -> 0x180,而 0x378 偏移则是 Mesh 的偏移。
C43CA767-F874-428B-91F6-D72B098ABEED.png

ComponentToWorld 和骨骼数组都是在 Mesh 下面,所以我们找到了 ComponentToWorld 就很容易找到骨骼数组。骨骼数组非常容易看出来,在内存中很规律。我们找到了骨骼数组的偏移为 Actor.base -> 0x378 -> 0x698:
C43CA767-F874-428B-91F6-D72B098ABEED.png
有时候骨骼数组里的数值并不会发生变动,但还是很规律。比如下面这个 GS:GO 的:
C43CA767-F874-428B-91F6-D72B098ABEED.png
最后用 ComponentToWorld、骨骼数组和摄像机矩阵,结合具体关节的实际偏移,根据固定算法去绘制骨架。
转载自六阿哥博客

最后修改:2021 年 06 月 21 日
如果觉得我的文章对你有用,请随意赞赏