qkuotidian
11-22-2010, 11:16 AM
Hello guys,
The idea of this script is to create a curve thru 2 locators specified by user and update curve position by changing locators’ positions. But when I tried to do opposite, update locators’ positions by changing curve position – it did not work. Does anyone know, what is wrong here and is it possible to simplify or do it in a different way?
Just create 2 locators, select them and run the script:
string $locators[2]=`ls -sl`;
// 1st point
float $point_0x=`getAttr ($locators[0]+".translateX")`;
float $point_0y=`getAttr ($locators[0]+".translateY")`;
float $point_0z=`getAttr ($locators[0]+".translateZ")`;
// 2nd point
float $point_1x=`getAttr ($locators[1]+".translateX")`;
float $point_1y=`getAttr ($locators[1]+".translateY")`;
float $point_1z=`getAttr ($locators[1]+".translateZ")`;
curve -d 1 -p $point_0x $point_0y $point_0z
-p $point_1x $point_1y $point_1z;
connectAttr -f locator1.translate curve1.cv[0];
connectAttr -f locator2.translate curve1.cv[1];
connectAttr -f curve1.cv[0] locator1.translate;
connectAttr -f curve1.cv[1] locator2.translate;
The idea of this script is to create a curve thru 2 locators specified by user and update curve position by changing locators’ positions. But when I tried to do opposite, update locators’ positions by changing curve position – it did not work. Does anyone know, what is wrong here and is it possible to simplify or do it in a different way?
Just create 2 locators, select them and run the script:
string $locators[2]=`ls -sl`;
// 1st point
float $point_0x=`getAttr ($locators[0]+".translateX")`;
float $point_0y=`getAttr ($locators[0]+".translateY")`;
float $point_0z=`getAttr ($locators[0]+".translateZ")`;
// 2nd point
float $point_1x=`getAttr ($locators[1]+".translateX")`;
float $point_1y=`getAttr ($locators[1]+".translateY")`;
float $point_1z=`getAttr ($locators[1]+".translateZ")`;
curve -d 1 -p $point_0x $point_0y $point_0z
-p $point_1x $point_1y $point_1z;
connectAttr -f locator1.translate curve1.cv[0];
connectAttr -f locator2.translate curve1.cv[1];
connectAttr -f curve1.cv[0] locator1.translate;
connectAttr -f curve1.cv[1] locator2.translate;
