UPrimitiveComponent 的 GetMass 和 CalculateMass 之间有什么不同?

What is the different between UPrimitiveComponent's GetMass and CalculateMass?

在 udemy 课程中,我刚刚完成了一个讲座,其中我们需要计算一些东西的质量。

我最终使用了 CalculateMass;但是,讲师使用了 GetMass.

unreal documention for CalculateMass说明它接受一个参数FName BoneName;但是,我没有使用这个参数,它仍然有效。该文档还谈到 CalculateMass 可能与实际质量相差 ~0.1 千克;但是,这看起来微不足道。

这两个函数之间的重要区别是什么?什么时候应该用一个代替另一个?

float CalculateMass(FName BoneName)

Returns 指定骨骼的质量/body。在物理资产中,您可以为单个网格设置多个物理体并分别获取质量。因此骨骼名称参数。如果已指定,它也会 returns 覆盖质量。这是引擎假定的质量,与 GetMass 相比可能略有不同。而且好像更快了。

另一方面...

float GetMass() const

与调用 CalculateMass(NAME_None);

非常相似

除此之外returns由物理引擎计算的body实例的真实质量。

为了获得准确的值,它会导致物理引擎上的线程锁读取该值。

所以执行的时候有点慢

除非精确质量必须精确,否则我会使用 CalculateMass

如果 CalculatedMass 不经常更改,也会将其缓存在变量中。

您还可以深入研究引擎代码,以更好地了解这些值的来源;)