GetPolyTriangleArea MEL

From scripting
Revision as of 05:59, 22 April 2017 by Nickpisca (talk | contribs) (Created page with " global proc float getPolyTriangleArea( string $mesh, string $vertIndices[] ) { vector $verts[3]; string $transform[] = `listRelatives -p $mesh`; float $transformMatrix[...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
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.