Разбирал старый хлам софта и нашел скриптец, который для меня какая то нейро сделала. Думаю - надо поделиться-авось сгодится кому. Суть в чем - инверсная кинематика в дазе работает криво потому что ей мешают лимиты костей. И причем отключение лимитов не помогает (таков уж баг даза) - нужно именно увелвичивать цифровое значение. Черновой позинг станет значительно проще с этой штукой. Потянул ступню или кисть - и она точно уже будет в нужной точке без проблем. Остается лишь закрепить и поправить промежуточные звенья костей, что проще чем классический трах с внезапно мнущейся фигурой.
Как работает: выделить фигуру и в окне окне "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);
}
})();


пипец отступы удалились в сообщении - так нечитаемо стало. Но, надеюсь, на функционал не повлияет.
Ни чего не понял, зачем это? Типа чтобы позить тасканием за кости?
И хотя нам прошлого немного жаль, ХУДЬШЕЕ конечно впереди
Нет,это для другого.
daznoob
Не советую))Авториг убъете))
https://www.daz3d.com/pose-architect-for-genesis-9
What, я понимаю без отступов сложно код читать. Но это просто рекурсивный обход костей и выставление лимитов в полтора раза больше. Был к примеру бенд 120 на бедре - станет 180. с такими лимитами вы можеете просто к примеру подтянуть за ступню и поднять ногу над головой фигуры одним движением. А так пришлось бы заходить в пропертисы, отклчать бенд и твист и прямой кинемтикой за бедро поднимать ногу. Больше телодвижений. Для статики может и не важно. Но я когда аниимровал быстро задобался так через задницу позить и поэтму сразу озадачился скриптом
тебя наверно смутило "поправить промежуточные звенья костей". Естественно не кости править, а просто промежуточные части тела. руку можно вытягивать перед так что локоть внизу и так что он смотри вбок. Это уже та информация о позе которую невозможно предскзаать программно - человек может и так и сяк сделать
так ненужно за руки ноги дёргать, создайте ik-target для них, null например, у ступней и кистей будет свой центр вращения который не даст ломать остальную цепочку костей, следование за родителем можно включать\отключать, всё давно уже придумано.
Кто людям помогает, тот тратит время зря
ddos_it, а можно пажалусто поясняющий скриншот на эту тему ?
А то уже неоднократно сталкивался с проблемой, когда тянешь модель, например за кисть - и всю модель сразу ломает (не знаю почему). Хотя смещение небольшое.
А в некоторых случаях тянешь - и не ломает. Т.е. немного потянул за кисть руки и вся модель нормально позируется.
И не могу понять - что влияет на этот эффект.
То ли вращение некоторых костей у модели по положению уже близко к предельным значениям, то ли на этот прикол влияет установка limits off на вращение некоторых суставусов...
daznoob
Я в основном с морфами вожусь.Там для корркетировок всегда нужен базовый скелет.Ровняю все через авториг и вывел в фавориты несколько ползунков с динамическими морфами отвечающими за сгибание колен и локтей.В статике работает.Для динамики,ваш наверно лучше подходит.
это болезнь
у старых моделей таргеты изкоробки есть, как там у генезисов непомню уже, если нужно например зделать анимацию приседаний дёргая перса за hip/pelvis без них никак.
Кто людям помогает, тот тратит время зря
Creating IK Chains between two figures in DAZ Studio
https://www.youtube.com/watch?v=lCv_PFWcLcE
ddos_it и Yuriy V.G спасибо за скриншот и за видео.
В DAZ 4.24, как я понял, IK-Target переобозвали в IK-Chain,
вроде слепил, вроде получилось:
И ещё один вопрос:
В видео показано, как таскать кисти рук сразу обоих персонажей (например когда один перс держит своей кистью кисть товарища) - создаем New Null, располагаем его где нужно и парентим к нему IK-чейны кистей обоих персонажей. И таскаем уже Null.
А если мне нужно, например, просто поправить позу только одного персонажа, слегка потянув его за кисть ?
Я всё равно должен сначала для этой кисти слепить IK-Chain ?
И позировать перса, хватая его не за кисть, а за созданный для этой кисти IK-Chain ?
Или всё-таки можно поправить персу позу, таская его непосредственно за кисть ?
Совсем не обязательно. Позиционируйте как удобней. За "Гизмо" - будете тянуть всю фигуру, или в параметрах - в приделах лимитов на перемещения конкретных костей.
Если я понял правильно, то скрипт от daznoob позволяет автоматически увеличивать лимиты на перемещение костей на 50% и, вовращять к первоначальным значениям. Не надо заходить в настройки, снимать флажок лимитов, устанавливать цифровые значения.
Все эти потуги с марта следующего года станут не нужны,т.к
станет не для чего.
хотя этому г. - самое место в ру секторе.будет оно одно из многих г..и вы будете вариться в этом бульоне из накопленных терабайтов г.,а размешивать вас будет ИИ,который йопнулся со сцены сам по себе,и уехал на ИИ трамвайчике от справедливой кары небесной и уголовного преследования
со всей этой темой имеет смысл загонятся если поза с нуля делается, например чел на турнике подтягивается или атжымаеца, а если немного откорректировать положение, тогда можно как привык и тебе удобней
Кто людям помогает, тот тратит время зря