GetPolyTriangleArea MEL
From scripting
global proc float getPolyTriangleArea( string $mesh, string $vertIndices[] ) { vector $verts[3]; string $transform[] = `listRelatives -p $mesh`; float $transformMatrix[] = `xform -q -ws -m $transform[0]`; int $i; for ($i=0; $i<3; $i++) { vector $vert = `getAttr ($mesh+".vt["+ $vertIndices[$i] +"]")`; vector $offset = `getAttr ($mesh+".pt["+ $vertIndices[$i] +"]")`; $vert = $vert + $offset; float $v[] = pointMatrixMult($vert, $transformMatrix); $verts[$i] = <<$v[0], $v[1], $v[2]>>; } vector $v1 = $verts[1] - $verts[0]; vector $v2 = $verts[2] - $verts[0]; return abs(cross($v1, $v2)) / 2.0; }
(Note, this subroutine was greatly influenced by a contributor named YourDaftPunk on CGTalk, located here)
More information on vectors and arrays, read pages 12-16 in YSYT.