global proc getVertices(string $tnode, vector $data[]) {
int $count = size($data);
// Step 1: Decide what is selected.
string $vertices[] = `filterExpand -sm 31`;
// Individual vertices have NOT been selected so we
// go ahead as usual...
if(size($vertices) == 0) {
string $shapes[] = `listRelatives -shapes $tnode`;
// here we get ALL vertices
if(size($shapes) == 1) {
int $num_vertices[] = `polyEvaluate -v $tnode`;
string $shape = $shapes[0];
float $position[];
for($n = 0; $n < $num_vertices[0]; $n++) {
$vertex_text = $shape + ".vtx[" + $n + "]";
$position = `pointPosition -local $vertex_text`;
$data[$count] = <<$position[0], $position[1], $position[2]>>;
$count++;
}
}
else // tnode is a group node
{
string $children[] = `listRelatives -children $tnode`;
for($child in $children) {
getVertices($child, $data);
}
}
}
else // here we get selected vertex positions
{
float $position[];
for($vert in $vertices) {
$position = `pointPosition -local $vert`;
$data[$count] = <<$position[0], $position[1], $position[2]>>;
$count++;
}
}
}