скрипт на сгибы

18 сообщений / 0 новое
Последнее сообщение
daznoob
Аватар пользователя daznoob
Не в сети
Последнее посещение: 4 часа 53 мин. назад
Регистрация: 10.03.2017
Сообщения: 505
Рейтинг: 158
скрипт на сгибы

Разбирал старый хлам софта и нашел скриптец, который для меня какая то нейро сделала. Думаю - надо поделиться-авось сгодится кому. Суть в чем - инверсная кинематика в дазе работает криво потому что ей мешают лимиты костей. И причем отключение лимитов не помогает (таков уж баг даза) - нужно именно увелвичивать цифровое значение. Черновой позинг станет значительно проще с этой штукой. Потянул ступню или кисть - и она точно уже будет в нужной точке без проблем. Остается лишь закрепить и поправить промежуточные звенья костей, что проще чем классический трах с внезапно мнущейся фигурой.
Как работает: выделить фигуру и в окне окне "script IDE" (меню Windows-Panels-script IDE) вставить текст скрипта и выполнить. (вижу в нем дичь для несуществующего "руссифицированного" даза - типа "Скрут" и "Вбок" - перфекционисты удаялт лишнее, но мне было пофиг - лишь бы работало)

// Увеличить лимиты Bend / Twist / Side-Side во всех суставах x1.5
(function(){
var FACTOR = 1.5;

// Метки, которые будем искать
var LABELS = [
"Bend", "Сгиб",
"Twist", "Скрут", "Вращение",
"Side-Side", "Вбок"
];

beginUndo();

try {
var selected = Scene.getSelectedNodeList();
if (!selected || selected.length === 0) {
var primary = Scene.getPrimarySelection();
if (primary) selected = [ primary ];
else {
print("Нет выделенных узлов и нет primary selection - выделите фигуру или узлы и повторите.");
acceptUndo("Increase Rotation Limits (no-op)");
return;
}
}

var changes = [];

function processRoot(root) {
if (!root) return;
var nodes = [ root ].concat( root.getNodeChildren(true) || [] );

for (var i = 0; i var node = nodes[i];
var props = [];

// Сначала ищем по label напрямую
for (var l = 0; l var lbl = LABELS[l];
try {
var p = node.findPropertyByLabel(lbl, false);
if (p) props.push(p);
} catch(e){}
}

// Если не нашли - проверяем ротационные контролы
if (props.length === 0) {
var ctrls = [
node.getXRotControl && node.getXRotControl(),
node.getYRotControl && node.getYRotControl(),
node.getZRotControl && node.getZRotControl()
];
for (var c = 0; c var ctrl = ctrls[c];
if (!ctrl) continue;
var lbl = "";
try { lbl = ctrl.getLabel ? (ctrl.getLabel() || "") : ""; } catch(e){}
lbl = (lbl + "").toLowerCase();
for (var l = 0; l if (lbl.indexOf(LABELS[l].toLowerCase()) !== -1) {
props.push(ctrl);
break;
}
}
}
}

// Обновляем все найденные проперти
for (var p = 0; p var prop = props[p];
if (!prop) continue;

var oldMin = null, oldMax = null;
try { oldMin = prop.getMin(); } catch(e){}
try { oldMax = prop.getMax(); } catch(e){}

if (oldMin === null || oldMax === null || isNaN(oldMin) || isNaN(oldMax)) continue;

var newMin = oldMin * FACTOR;
var newMax = oldMax * FACTOR;
if (newMin > newMax) {
var t = newMin; newMin = newMax; newMax = t;
}

try { prop.setMin(newMin); } catch(e){}
try { prop.setMax(newMax); } catch(e){}
try { if (typeof(prop.setIsClamped) === "function") prop.setIsClamped(true); } catch(e){}

changes.push({
node: node.getLabel ? node.getLabel() : node.name,
propLabel: (prop.getLabel ? prop.getLabel() : "(property)"),
oldMin: oldMin,
oldMax: oldMax,
newMin: newMin,
newMax: newMax
});
}
}
}

for (var r = 0; r processRoot(selected[r]);
}

if (changes.length === 0) {
print("Не найдено параметров Bend/Twist/Side-Side.");
} else {
print("Изменено " + changes.length + " параметров (x" + FACTOR + "):");
for (var j = 0; j var ch = changes[j];
print(
ch.node + " :: " + ch.propLabel +
" | " + ch.oldMin + " .. " + ch.oldMax +
" => " + ch.newMin + " .. " + ch.newMax
);
}
}

} catch (err) {
print("Ошибка: " + err);
} finally {
acceptUndo("Increase Bend/Twist/Side-Side Limits x" + FACTOR);
}
})();

Вверх
Понравилось 0.
daznoob
Аватар пользователя daznoob
Не в сети
Последнее посещение: 4 часа 53 мин. назад
Регистрация: 10.03.2017
Сообщения: 505
Рейтинг: 158

пипец отступы удалились в сообщении - так нечитаемо стало. Но, надеюсь, на функционал не повлияет.

Вверх
Понравилось 0.
egorkae
Аватар пользователя egorkae
Не в сети
Последнее посещение: 3 часа 5 мин. назад
Регистрация: 19.09.2016
Сообщения: 6065
Рейтинг: 2196

Ни чего не понял, зачем это? Типа чтобы позить тасканием за кости?

Вверх
Понравилось 0.

И хотя нам прошлого немного жаль, ХУДЬШЕЕ конечно впереди

What
Аватар пользователя What
Не в сети
Последнее посещение: 2 месяца 4 дня назад
Регистрация: 16.03.2022
Сообщения: 572
Рейтинг: 136

Ни чего не понял, зачем это? Типа чтобы позить тасканием за кости?

Нет,это для другого.
daznoob

Остается лишь закрепить и поправить промежуточные звенья костей, что проще чем классический трах с внезапно мнущейся фигурой.

Не советую))Авториг убъете))

Вверх
Понравилось 0.
Yuriy V.G
Аватар пользователя Yuriy V.G
Не в сети
Последнее посещение: 6 часов 40 мин. назад
Регистрация: 24.04.2022
Сообщения: 767
Рейтинг: 183

С Pose Architect создание реалистичных поз тела становится проще простого. 91 встроенный регулятор поз учитывает центр тяжести тела, обеспечивая идеальную балансировку. Эти регуляторы поз используют естественные анимированные движения вместо жёсткого вращения суставов.

https://www.daz3d.com/pose-architect-for-genesis-9

Вверх
Понравилось 0.
daznoob
Аватар пользователя daznoob
Не в сети
Последнее посещение: 4 часа 53 мин. назад
Регистрация: 10.03.2017
Сообщения: 505
Рейтинг: 158

Не советую))Авториг убъете))

What, я понимаю без отступов сложно код читать. Но это просто рекурсивный обход костей и выставление лимитов в полтора раза больше. Был к примеру бенд 120 на бедре - станет 180. с такими лимитами вы можеете просто к примеру подтянуть за ступню и поднять ногу над головой фигуры одним движением. А так пришлось бы заходить в пропертисы, отклчать бенд и твист и прямой кинемтикой за бедро поднимать ногу. Больше телодвижений. Для статики может и не важно. Но я когда аниимровал быстро задобался так через задницу позить и поэтму сразу озадачился скриптом

Вверх
Понравилось 0.
daznoob
Аватар пользователя daznoob
Не в сети
Последнее посещение: 4 часа 53 мин. назад
Регистрация: 10.03.2017
Сообщения: 505
Рейтинг: 158

тебя наверно смутило "поправить промежуточные звенья костей". Естественно не кости править, а просто промежуточные части тела. руку можно вытягивать перед так что локоть внизу и так что он смотри вбок. Это уже та информация о позе которую невозможно предскзаать программно - человек может и так и сяк сделать

Вверх
Понравилось 0.
ddos_it
Аватар пользователя ddos_it
Не в сети
Последнее посещение: 10 часов 43 мин. назад
Регистрация: 21.05.2018
Сообщения: 2594
Рейтинг: 1824

Потянул ступню или кисть

так ненужно за руки ноги дёргать, создайте ik-target для них, null например, у ступней и кистей будет свой центр вращения который не даст ломать остальную цепочку костей, следование за родителем можно включать\отключать, всё давно уже придумано.

Вверх
Понравилось 1.

Кто людям помогает, тот тратит время зря

Tonga
Аватар пользователя Tonga
Не в сети
Последнее посещение: 10 часов 4 мин. назад
Регистрация: 08.06.2025
Сообщения: 138
Рейтинг: 25

так ненужно за руки ноги дёргать, создайте ik-target для них, null например

ddos_it, а можно пажалусто поясняющий скриншот на эту тему ?

А то уже неоднократно сталкивался с проблемой, когда тянешь модель, например за кисть - и всю модель сразу ломает (не знаю почему). Хотя смещение небольшое.

А в некоторых случаях тянешь - и не ломает. Т.е. немного потянул за кисть руки и вся модель нормально позируется.

И не могу понять - что влияет на этот эффект.
То ли вращение некоторых костей у модели по положению уже близко к предельным значениям, то ли на этот прикол влияет установка limits off на вращение некоторых суставусов...

Вверх
Понравилось 0.
What
Аватар пользователя What
Не в сети
Последнее посещение: 2 месяца 4 дня назад
Регистрация: 16.03.2022
Сообщения: 572
Рейтинг: 136

daznoob

Естественно не кости править, а просто промежуточные части тела. руку можно вытягивать перед так что локоть внизу и так что он смотри вбок. Это уже та информация о позе которую невозможно предскзаать программно - человек может и так и сяк сделать

Я в основном с морфами вожусь.Там для корркетировок всегда нужен базовый скелет.Ровняю все через авториг и вывел в фавориты несколько ползунков с динамическими морфами отвечающими за сгибание колен и локтей.В статике работает.Для динамики,ваш наверно лучше подходит.

Вверх
Понравилось 0.
zad3d.ru
Аватар пользователя zad3d.ru
Не в сети
Последнее посещение: 1 месяц 2 недели назад
Регистрация: 14.01.2021
Сообщения: 2795
Рейтинг: 266

..Я в основном с морфами вожусь..

..В статике работает.Для динамики,ваш наверно лучше подходит..

..))Не советую))Авториг ))убъете))..

это болезнь

Вверх
Понравилось 0.
ddos_it
Аватар пользователя ddos_it
Не в сети
Последнее посещение: 10 часов 43 мин. назад
Регистрация: 21.05.2018
Сообщения: 2594
Рейтинг: 1824

а можно пажалусто поясняющий скриншот на эту тему ?

1
у старых моделей таргеты изкоробки есть, как там у генезисов непомню уже, если нужно например зделать анимацию приседаний дёргая перса за hip/pelvis без них никак.

Вверх
Понравилось 1.

Кто людям помогает, тот тратит время зря

Yuriy V.G
Аватар пользователя Yuriy V.G
Не в сети
Последнее посещение: 6 часов 40 мин. назад
Регистрация: 24.04.2022
Сообщения: 767
Рейтинг: 183

так ненужно за руки ноги дёргать, создайте ik-target для них, null например

а можно пажалусто поясняющий скриншот на эту тему ?

Creating IK Chains between two figures in DAZ Studio
https://www.youtube.com/watch?v=lCv_PFWcLcE

Вверх
Понравилось 1.
Tonga
Аватар пользователя Tonga
Не в сети
Последнее посещение: 10 часов 4 мин. назад
Регистрация: 08.06.2025
Сообщения: 138
Рейтинг: 25

ddos_it и Yuriy V.G спасибо за скриншот и за видео.

В DAZ 4.24, как я понял, IK-Target переобозвали в IK-Chain,
вроде слепил, вроде получилось:

jkgh456756785689

И ещё один вопрос:

В видео показано, как таскать кисти рук сразу обоих персонажей (например когда один перс держит своей кистью кисть товарища) - создаем New Null, располагаем его где нужно и парентим к нему IK-чейны кистей обоих персонажей. И таскаем уже Null.

А если мне нужно, например, просто поправить позу только одного персонажа, слегка потянув его за кисть ?
Я всё равно должен сначала для этой кисти слепить IK-Chain ?
И позировать перса, хватая его не за кисть, а за созданный для этой кисти IK-Chain ?

Или всё-таки можно поправить персу позу, таская его непосредственно за кисть ?

Вверх
Понравилось 0.
Yuriy V.G
Аватар пользователя Yuriy V.G
Не в сети
Последнее посещение: 6 часов 40 мин. назад
Регистрация: 24.04.2022
Сообщения: 767
Рейтинг: 183

А если мне нужно, например, просто поправить позу только одного персонажа, слегка потянув его за кисть ?
Я всё равно должен сначала для этой кисти слепить IK-Chain ?

Совсем не обязательно. Позиционируйте как удобней. За "Гизмо" - будете тянуть всю фигуру, или в параметрах - в приделах лимитов на перемещения конкретных костей.
Если я понял правильно, то скрипт от daznoob позволяет автоматически увеличивать лимиты на перемещение костей на 50% и, вовращять к первоначальным значениям. Не надо заходить в настройки, снимать флажок лимитов, устанавливать цифровые значения.

Вверх
Понравилось 0.
zad3d.ru
Аватар пользователя zad3d.ru
Не в сети
Последнее посещение: 1 месяц 2 недели назад
Регистрация: 14.01.2021
Сообщения: 2795
Рейтинг: 266

Все эти потуги с марта следующего года станут не нужны,т.к

вовращять

станет не для чего.
хотя этому г. - самое место в ру секторе.будет оно одно из многих г..и вы будете вариться в этом бульоне из накопленных терабайтов г.,а размешивать вас будет ИИ,который йопнулся со сцены сам по себе,и уехал на ИИ трамвайчике от справедливой кары небесной и уголовного преследования

Вверх
Понравилось 1.
ddos_it
Аватар пользователя ddos_it
Не в сети
Последнее посещение: 10 часов 43 мин. назад
Регистрация: 21.05.2018
Сообщения: 2594
Рейтинг: 1824

Или всё-таки можно поправить персу позу, таская его непосредственно за кисть ?

со всей этой темой имеет смысл загонятся если поза с нуля делается, например чел на турнике подтягивается или атжымаеца, а если немного откорректировать положение, тогда можно как привык и тебе удобней

Вверх
Понравилось 0.

Кто людям помогает, тот тратит время зря

zad3d.ru
Аватар пользователя zad3d.ru
Не в сети
Последнее посещение: 1 месяц 2 недели назад
Регистрация: 14.01.2021
Сообщения: 2795
Рейтинг: 266

Mosking

Вверх
Понравилось 0.