Render.ru

как сделать двухстороннюю связь атрибутов?

sanctus

Активный участник
Рейтинг
15
#1
как сделать двухстороннюю связь атрибутов чтобы можно было из разных мест рулить один и тот же параметр рига?
ничего оригинальнее скриптДжоба не приходит в голову.

proc doubleway1(){
setAttr polySphere2.radius `getAttr polySphere1.radius`;
};

proc doubleway2(){
setAttr polySphere1.radius `getAttr polySphere2.radius`;
};

scriptJob -runOnce false -attributeChange polySphere2.radius doubleway2;
scriptJob -runOnce false -attributeChange polySphere1.radius doubleway1;
работает, но что-то неаккуратно - рывками
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#2
А если так, влоб:
Код:
scriptJob -e "SelectionChanged" "changeConnections";

global proc changeConnections () {
string $sels[] = `ls -sl`;
if ($sels[0]=="polySphere1") {
	if(`isConnected polySphere2.radius polySphere1.radius`)
		disconnectAttr polySphere2.radius polySphere1.radius;
	connectAttr -f polySphere1.radius polySphere2.radius;
}
if ($sels[0]=="polySphere2") {
	if(`isConnected polySphere1.radius polySphere2.radius`)
		disconnectAttr polySphere1.radius polySphere2.radius;
	connectAttr -f polySphere2.radius polySphere1.radius;
}
}
Выделять только надо не-DAG polySphere для события
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#5
Ну смени на -attributeChange, немного поправив функции. Или сама функция "опасна"? Но тогда в чем и когда. В риге я мало что понимаю
Вообще создание циклов в графе будет противоречить философии майи, acyclic все-таки, прога будет ругаться на это.
 
Сверху