[Bf-committers] Cursor to center of mass
Brecht Van Lommel
brechtvanlommel at pandora.be
Wed Nov 21 04:55:07 CET 2012
Tessfaces includes both triangles and quads, it doesn't triangulate
entirely, so you'd need to handle the quads still.
Brecht.
On Wed, Nov 21, 2012 at 4:30 AM, Ummi Nom <umminom at gmail.com> wrote:
> Hi!
>
> I've written some center of mass calculations in python for closed meshes,
> but there is an issue with using tessfaces in my code; I run mesh.update
> with tessfaces=True but when I loop over mesh.tessfaces there are only 6
> faces in default scene cube so the center of mass is offset.
>
> It seems to work when the mesh is triangulated
> http://www.pasteall.org/37396/python
>
> # Code
> import mathutils
> from mathutils import *
> import bpy
>
> tess_count = 0
>
> # Handle tri as a tetrahedron with fourth point at origo
> def handleTri(v1, v2, v3):
> global tess_count
> tess_count = tess_count + 1
>
> temp = (v3-v1).cross(v2-v1)
> nor = temp.normalized()
> area = 0.5*temp.dot(nor)
> vol = area*nor.dot(v1)/3.0
> centroid = (v1+v2+v3)/4.0
>
> return (centroid, vol)
>
>
> for me in bpy.data.meshes:
> me.update(calc_tessface=True)
>
> sumc= Vector()
> summ = 0
>
>
> for f in me.tessfaces:
> v1 = Vector(me.vertices[f.vertices[0]].co)
> v2 = Vector(me.vertices[f.vertices[1]].co)
> v3 = Vector(me.vertices[f.vertices[2]].co)
>
> centroid, mass = handleTri(v1, v2, v3)
> sumc += centroid * mass
> summ += mass
>
> print(tess_count)
>
> print(sumc/summ)
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
More information about the Bf-committers
mailing list