我想根据以下描述计算网格的新质心。但我不想使用 Blender 的内置函数来计算质心,如所解释的here https://blender.stackexchange.com/questions/14294/how-to-recenter-an-objects-origin因为它们似乎没有给我我期望得到的那种质心。首先,我想计算网格的网格质心的面(三角形)的中心。然后我需要计算面部面积。新的质心是网格面中心的平均值,按其面积加权。我如何在 Python 中执行此操作(但不一定使用 Blender 的 Python API)?
请注意,Spektre 的答案给出了表面积网格的形状,这可能就是您想要的。
如果你想要网格的中心volume相反(就像假设密度恒定的质心),您需要执行以下操作:
- 使用三角形的 3 个顶点加上原点,从每个三角形创建一个四面体。
- 计算每个四面体的有符号体积和中心
- 将体积和体积加权中心相加
- 通过将体积加权中心之和除以总体积来获取网格中心
伪代码:
meshVolume = 0
temp = (0,0,0)
for each triangle in mesh (with vertices v1, v2, v3)
center = (v1 + v2 + v3) / 4 // center of tetrahedron
volume = dot(v1, cross(v2, v3)) / 6 // signed volume of tetrahedron
meshVolume += volume
temp = center * volume
meshCenter = temp / totalVolume
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)