Дублировать ноды в сложных связях?
- Автор темы BANNY
- Дата создания
Вот я сделал такой скрипт для анимации камеры при композинге....знач я делал так, скрипт для камеры который собирает информацию по движению по врашению по фокальному расстоянию камеры....знач так делаем процедуру которая собирает информацию об камере как она будет врашатся двигатся также фокальное расстояние. Потом зациклим на несколько кадров в моём случае это 200 кадров.
что мы получаем мы получаем информацию в Script Editor..копируем эту всю информацию и сохраням её в *.txt формате где мы увидем просто какой кадр потом по X Y Z это движение и так же с остальными по Врашению ,фокальное растояние.Просто 1 словом информация выглядит просто цифры..Вот на 10 кадров Анимация
1 2 4 6 0 0 0 35
2 2 4 6 0 0 0 35
3 2 4 6 0 0 0 35
4 2 4 6 0 0 0 35
5 2 4 6 0 0 0 35
6 2 4 6 0 0 0 35
7 2.600284911 3.807977208 7.380341877 0 0 0 35
8 3.20056981 3.615954416 8.760683759 0 0 0 35
9 3.7 3.6 9.3 0 0 0 35
10 4.136847243 3.744222362 9.061944558 0 0 0 35
....потом я сделал скрипт который мы бы хотели применить для анимации другой камеры.Скрипт собирает информацию из *.txt и на лаживает на каждый кадр все настройки все координаты на камеру и мы получаем чистую анимацию 1 камеры.
Знач вот мои Скрипты...
1.СКРИПТ ДЛЯ СОБИРАНИЕ ИНФОРМАЦИИ
global proc cameraMove()
{
string $nodes[] = `ls -sl`;
string $change_name;
for($change_name in $nodes)
{
print (" ");
}
string $rotateX = `getAttr ($change_name + ".rx")`;
string $rotateY = `getAttr ($change_name + ".ry")`;
string $rotateZ = `getAttr ($change_name + ".rz")`;
string $moveX = `getAttr ($change_name + ".tx")`;
string $moveY = `getAttr ($change_name + ".ty")`;
string $moveZ = `getAttr ($change_name + ".tz")`;
string $Focal = `getAttr ($change_name + ".fl")`;
print (" " + $moveX);
print (" " + $moveY);
print (" " + $moveZ);
print (" " + $rotateX);
print (" " + $rotateY);
print (" " + $rotateZ);
print (" " + $Focal + "\n");
}
cameraMove();
global proc cikl()
{
float $test = 0;
while ($test < 200)
{
playButtonStepForward;
print ($test+1);
print (cameraMove());
$test = $test + 1;
}
}
global proc UI()
{
string $window = `window -title "Compozing" -widthHeight 10 10`;
rowColumnLayout;
button -label "Click proc" -c "cameraMove()";
button -label "Click cikl" -c "cikl()";
showWindow $window;
}
UI()
2СКРИПТ ДЛЯ НАЛАЖИВАНИЯ АНИМАЦИИ СОБРАННОЙ ИНФОРМАЦИИ
global proc getAnim(string $fileName, string $objectName)
{
//open the file for reading
$fileId=`fopen $fileName "r"`;
//get the first line of text
string $nextLine = `fgetline $fileId`;
//while $nextline is not emtpy(end of file) do the following
while ( size( $nextLine ) > 0 ) {
//tokenize(split) line into separate elements of an array
string $rawAnimArray[];
tokenize ($nextLine, " ",$rawAnimArray);
//place each element of the array into separate variables
print $rawAnimArray;
float $frame=$rawAnimArray[0];
float $x=$rawAnimArray[1];
float $y=$rawAnimArray[2];
float $z=$rawAnimArray[3];
//change the currentTime and set keys for tx, ty, tz
currentTime $frame ;
setAttr ($objectName+".tx") $x;
setKeyframe ($objectName+".tx");
setAttr ($objectName+".ty") $y;
setKeyframe ($objectName+".ty");
setAttr ($objectName+".tz") $z;
setKeyframe ($objectName+".tz");
//get the next line in the ascii file.
$nextLine = `fgetline $fileId`;
}
//close file
fclose $fileId;
}
global proc query()
{
string $name = `promptDialog -title "make name" -message "white name what you want" -text "camera"`;
string $baseName = `promptDialog -q`;
string $prompt = `fileDialog -dm "*.txt"`;
getAnim($prompt,$baseName);
}
query();
СпасиБО.
что мы получаем мы получаем информацию в Script Editor..копируем эту всю информацию и сохраням её в *.txt формате где мы увидем просто какой кадр потом по X Y Z это движение и так же с остальными по Врашению ,фокальное растояние.Просто 1 словом информация выглядит просто цифры..Вот на 10 кадров Анимация
1 2 4 6 0 0 0 35
2 2 4 6 0 0 0 35
3 2 4 6 0 0 0 35
4 2 4 6 0 0 0 35
5 2 4 6 0 0 0 35
6 2 4 6 0 0 0 35
7 2.600284911 3.807977208 7.380341877 0 0 0 35
8 3.20056981 3.615954416 8.760683759 0 0 0 35
9 3.7 3.6 9.3 0 0 0 35
10 4.136847243 3.744222362 9.061944558 0 0 0 35
....потом я сделал скрипт который мы бы хотели применить для анимации другой камеры.Скрипт собирает информацию из *.txt и на лаживает на каждый кадр все настройки все координаты на камеру и мы получаем чистую анимацию 1 камеры.
Знач вот мои Скрипты...
1.СКРИПТ ДЛЯ СОБИРАНИЕ ИНФОРМАЦИИ
global proc cameraMove()
{
string $nodes[] = `ls -sl`;
string $change_name;
for($change_name in $nodes)
{
print (" ");
}
string $rotateX = `getAttr ($change_name + ".rx")`;
string $rotateY = `getAttr ($change_name + ".ry")`;
string $rotateZ = `getAttr ($change_name + ".rz")`;
string $moveX = `getAttr ($change_name + ".tx")`;
string $moveY = `getAttr ($change_name + ".ty")`;
string $moveZ = `getAttr ($change_name + ".tz")`;
string $Focal = `getAttr ($change_name + ".fl")`;
print (" " + $moveX);
print (" " + $moveY);
print (" " + $moveZ);
print (" " + $rotateX);
print (" " + $rotateY);
print (" " + $rotateZ);
print (" " + $Focal + "\n");
}
cameraMove();
global proc cikl()
{
float $test = 0;
while ($test < 200)
{
playButtonStepForward;
print ($test+1);
print (cameraMove());
$test = $test + 1;
}
}
global proc UI()
{
string $window = `window -title "Compozing" -widthHeight 10 10`;
rowColumnLayout;
button -label "Click proc" -c "cameraMove()";
button -label "Click cikl" -c "cikl()";
showWindow $window;
}
UI()
2СКРИПТ ДЛЯ НАЛАЖИВАНИЯ АНИМАЦИИ СОБРАННОЙ ИНФОРМАЦИИ
global proc getAnim(string $fileName, string $objectName)
{
//open the file for reading
$fileId=`fopen $fileName "r"`;
//get the first line of text
string $nextLine = `fgetline $fileId`;
//while $nextline is not emtpy(end of file) do the following
while ( size( $nextLine ) > 0 ) {
//tokenize(split) line into separate elements of an array
string $rawAnimArray[];
tokenize ($nextLine, " ",$rawAnimArray);
//place each element of the array into separate variables
print $rawAnimArray;
float $frame=$rawAnimArray[0];
float $x=$rawAnimArray[1];
float $y=$rawAnimArray[2];
float $z=$rawAnimArray[3];
//change the currentTime and set keys for tx, ty, tz
currentTime $frame ;
setAttr ($objectName+".tx") $x;
setKeyframe ($objectName+".tx");
setAttr ($objectName+".ty") $y;
setKeyframe ($objectName+".ty");
setAttr ($objectName+".tz") $z;
setKeyframe ($objectName+".tz");
//get the next line in the ascii file.
$nextLine = `fgetline $fileId`;
}
//close file
fclose $fileId;
}
global proc query()
{
string $name = `promptDialog -title "make name" -message "white name what you want" -text "camera"`;
string $baseName = `promptDialog -q`;
string $prompt = `fileDialog -dm "*.txt"`;
getAnim($prompt,$baseName);
}
query();
СпасиБО.