— Sphere Intersect in Maya/MEL
Function to return location of intersect with poly mesh and spherical object moving in the positive direction on the Y axis.
mel source
global proc intersectSphereY()
{
print(". . . . . go go go\n");
int $iter = 50;
float $start[3] = {0, -0.5, 0};
float $limit[3] = {0, 5.0, 0};
$mesh = "test_mesh";
$tmpCN = "cpom";
$obj = "rod1";
float $radius = 0.5;
float $curPos[3] = {0, 0, 0};
for ($i = 0; $i <= $iter; $i++)
{
$mesh = "test_mesh";
$shape = `listRelatives -shapes $mesh`;
createNode -n $tmpCN closestPointOnMesh;
connectAttr -f ($shape[0] + ".outMesh") ($tmpCN + ".inMesh");
setAttr ($tmpCN + ".inPosition") $curPos[0] $curPos[1] $curPos[2];
$cpom = `getAttr ($tmpCN + ".position")`;
if ( pointDist($curPos, $cpom) <= $radius ) {
return ". . bonk\n";
}
$curPos[1] = ($limit.y) / $iter * $i;
setAttr ($obj + ".translateY") $curPos[1];
delete $tmpCN;
}
return ". nope\n";
}
global proc float pointDist(float $p1[], float $p2[])
{
return sqrt(
(($p1[0] - $p2[0]) * ($p1[0] - $p2[0])) +
(($p1[1] - $p2[1]) * ($p1[1] - $p2[1])) +
(($p1[2] - $p2[2]) * ($p1[2] - $p2[2])));
}
intersectSphereY;