Kyrish
08-21-2007, 06:33 PM
Hi all-)
I have some problems with such task. I have one nurbs Sphere (nurbsSphereShape1)
which is emitting particles. I created another nurbs Sphere (nurbsSphereShape2)
with the same center but with bigger radius. Second sphere should be
the goal for particles. In more details - basing on birth place of particle
(parentU,parentV) I want to assign to particle nearest CV of second sphere
as the goal. For that I wrote such creation expression:
print(time + " ");
float $pointXYZ[];
float $pointU = particleShape1.parentU;
float $pointV = particleShape1.parentV;
print("birth UV coords : " + $pointU + " " + $pointV + "\n");
$pointXYZ=`pointOnSurface -u $pointU -v $pointV -position nurbsSphereShape1`;
print("birth XYZ coords:" + $pointXYZ[0] + " " + $pointXYZ[1] + " " + $pointXYZ[2] + "\n");
closestPointOnSurface1.inPositionX = $pointXYZ[0];
closestPointOnSurface1.inPositionY = $pointXYZ[1];
closestPointOnSurface1.inPositionZ = $pointXYZ[2];
float $closestPointXYZ[];
$closestPointXYZ[0] = closestPointOnSurface1.positionX;
$closestPointXYZ[1] = closestPointOnSurface1.positionY;
$closestPointXYZ[2] = closestPointOnSurface1.positionZ;
float $closestPointUV[];
$closestPointUV[0] = closestPointOnSurface1.parameterU;
$closestPointUV[1] = closestPointOnSurface1.parameterV;
print("closest point XYZ coords: " +
$closestPointXYZ[0] + " " + $closestPointXYZ[1] + " " + $closestPointXYZ[2] + "\n");
print("closest point UV coords: " + $closestPointUV[0] + " " + $closestPointUV[1] + "\n");
//trying to obtain the closest CV's UV coordinates. May be it's a strange way but I have not //any idea...
string $temp[];
string $stringPointU = $closestPointUV[0];
string $stringPointV = $closestPointUV[1];
int $vertexU;
int $vertexV;
$temp = stringToStringArray($stringPointU , ".");
$vertexU = $temp[0];
$temp = stringToStringArray($stringPointV , ".");
$vertexV = $temp[0];
print($vertexU + " " + $vertexV + "\n");
particleShape1.goalU = $vertexU;
particleShape1.goalV = $vertexV;
print("next particle..." + "\n");
There are a lot print outputs just for controling the script flow. So...It seems like something wrong in work with closestPointOnSurface node. Node was created by following steps:
createNode closestPointOnSurface;
connectAttr closestPointOnSurface1.is nurbsSphereShape2.ws;
If You look at the scene You will see that particles goals coordinates set up in strange way-(
Plz help with explanation what is wrong or how I can achieve this effect in another way.
Thank You!
I have some problems with such task. I have one nurbs Sphere (nurbsSphereShape1)
which is emitting particles. I created another nurbs Sphere (nurbsSphereShape2)
with the same center but with bigger radius. Second sphere should be
the goal for particles. In more details - basing on birth place of particle
(parentU,parentV) I want to assign to particle nearest CV of second sphere
as the goal. For that I wrote such creation expression:
print(time + " ");
float $pointXYZ[];
float $pointU = particleShape1.parentU;
float $pointV = particleShape1.parentV;
print("birth UV coords : " + $pointU + " " + $pointV + "\n");
$pointXYZ=`pointOnSurface -u $pointU -v $pointV -position nurbsSphereShape1`;
print("birth XYZ coords:" + $pointXYZ[0] + " " + $pointXYZ[1] + " " + $pointXYZ[2] + "\n");
closestPointOnSurface1.inPositionX = $pointXYZ[0];
closestPointOnSurface1.inPositionY = $pointXYZ[1];
closestPointOnSurface1.inPositionZ = $pointXYZ[2];
float $closestPointXYZ[];
$closestPointXYZ[0] = closestPointOnSurface1.positionX;
$closestPointXYZ[1] = closestPointOnSurface1.positionY;
$closestPointXYZ[2] = closestPointOnSurface1.positionZ;
float $closestPointUV[];
$closestPointUV[0] = closestPointOnSurface1.parameterU;
$closestPointUV[1] = closestPointOnSurface1.parameterV;
print("closest point XYZ coords: " +
$closestPointXYZ[0] + " " + $closestPointXYZ[1] + " " + $closestPointXYZ[2] + "\n");
print("closest point UV coords: " + $closestPointUV[0] + " " + $closestPointUV[1] + "\n");
//trying to obtain the closest CV's UV coordinates. May be it's a strange way but I have not //any idea...
string $temp[];
string $stringPointU = $closestPointUV[0];
string $stringPointV = $closestPointUV[1];
int $vertexU;
int $vertexV;
$temp = stringToStringArray($stringPointU , ".");
$vertexU = $temp[0];
$temp = stringToStringArray($stringPointV , ".");
$vertexV = $temp[0];
print($vertexU + " " + $vertexV + "\n");
particleShape1.goalU = $vertexU;
particleShape1.goalV = $vertexV;
print("next particle..." + "\n");
There are a lot print outputs just for controling the script flow. So...It seems like something wrong in work with closestPointOnSurface node. Node was created by following steps:
createNode closestPointOnSurface;
connectAttr closestPointOnSurface1.is nurbsSphereShape2.ws;
If You look at the scene You will see that particles goals coordinates set up in strange way-(
Plz help with explanation what is wrong or how I can achieve this effect in another way.
Thank You!
