Render.ru

Вопросница. Сюда скидываются все вопросы нестоящие отдельной темы

Статус
Закрыта.
Рейтинг
21
Скиф, будь добр, объясни неучу, что не так делаю!
Вроде понял, что ты имеешь ввиду... да и оси костей вроде бы правильно накрутил...
но вот только прикручиваю "Pole vector"..тут же значения "Rotate" в "Transform Attributes" джоинта "R_HIP" приобретают цифры.
Значит так:
1. Выделяю кость "R_KNEE_1" и локатор (контрольку) "r_LocKnee", применяю "Poit Constrain" (без "Maintain offset"!).
2. Выделяю кость "R_KNEE_1" и локатор (контрольку) r_LocKnee, применяю "Orient Constrain" (без "Maintain offset!").
3. Убиваю "Poit Constrain" (просто выбираю его в "Outliner" и нажимаю "delete")
4. Передвигаю локатор (контрольку) r_LocKnee в сторону от колена.
5. Убиваю "Orient Constrain" (просто выбираю его в "Outliner" и нажимаю "delete")
6. Выделяю локатор (контрольку) "r_LocKnee" и "ikHandle_R_FOOT" (оно у меня RP), применяю "Constrain"-"Pole vector".......
и во именно после этого действия, значения "Rotate" в "Transform Attributes"
джоинта "R_KNEE_1" приобретают цифры вместо нулей!....
Скиф, что не так делаю? Помоги, пожалуйста, разобраться!
 

Вложения

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
вопрос 1. зачем в колене 2 сустава?
вопрос 2. пункт 4, по каким осям двигаешь? (нужно в режиме обжект.) кроме того если у тебя 2 сустава, то 1 и 2 пункты нужно делать выделив R_KNEE_1 и R_KNEE_2

ты выделил ротейты по нулям. а тут важно не только это, но джоинт ориент. (хотя у тебя вроде все правильно.)
 
Рейтинг
21
вопрос 1. зачем в колене 2 сустава?
вопрос 2. пункт 4, по каким осям двигаешь? (нужно в режиме обжект.) кроме того если у тебя 2 сустава, то 1 и 2 пункты нужно делать выделив R_KNEE_1 и R_KNEE_2

ты выделил ротейты по нулям. а тут важно не только это, но джоинт ориент. (хотя у тебя вроде все правильно.)

------------------------------
мой блог.
http://skif3d.blogspot.com/
1.Насчёт двух суставов:
видел пару примером риггинга и там строили в локтях и колене по два сустава,
аргументировали, тем, что так, мол, удобнее будет на этапе скининга (влияния костей в этих местах будет точнее, правильнее).. Поэтому решил попробовать...

2. Двигаю в режиме обжект (скрин-1).
Передвигаю локатор по оси "Z"(cкрин-2)

3. Насчёт выбора сразу двух суставов-не подумал, сейчас попробую....)
 

Вложения

Рейтинг
21
Интересно, что, воспользовавшись скриптом djBuildPoleVector, всё выходит и значения ротейт остаются "нулевыми"...
Но, блин, хочется понять самому причину... без автоматики, без скриптов... Уловить суть "что делаю не так?"
Понять "что делает скрипт такого, что не делаю я" для меня трудно, т.к. в мэл языке я пока туг...
Вот сам скрипт:
// djBuildPoleVector.mel
//
// author: David Johnson
// contact: david@djx.com.au
// website: http://www.djx.com.au
// last rev: Friday, 15 June 2007
// version: 1.0
//
// ©2007 David Johnson
//
// ||||||||||||||||||||||||||||||| (written by Nils Lerin - nils.lerin@gmail.com)
// || Requires nilsNoFlipIK.mel || (available from http://www.highend3d.com)
// ||||||||||||||||||||||||||||||| (direct link http://www.highend3d.com/maya/downloads/mel_scripts/character/nilsNoFlipIK-4595.html)
//
// Add your own control object as a poleVector constraint and maintain the joint orientation.
//
// There already a few scripts around that place a poleVector constraint
// so that the poleVector does not move, but I couldnt find one that let
// me place the controller where I wanted and still keep the original joint orientation.
//
// Nils Lerin's nilsNoFlipIK.mel script calculates the ikHandle twist
// that is needed to maintain orientation for a specified pole vector.
// djBuildPoleVector.mel uses this twist value to compensate for the poleVector change.
//
// Installation:
// Copy djBuildPoleVector.mel and nilsNoFlipIK.mel to your scripts folder
// Source them both (or restart maya)
//
// Directions:
// Select the control object
// Shift-select the ikHandle
// run this script by typing djBuildPoleVector (or make a shelf button)
//
//--------------------------------------------------------------------------------------------

source nilsNoFlipIK.mel;

global proc djBuildPoleVector() {

// Ensure that nilsNoFlipIKProc exists
//
if(!`exists "nilsNoFlipIKProc"`) {
error("nilsNoFlipIK.mel maybe missing. Check that nilsNoFlipIK.mel is in your scripts folder.");
return;
}

string $sel[] = `ls -sl`;

// Validate selection
if(size($sel)!=2) {
warning("Invalid selection. Select one control object and shift-select one ikHandle.");
return;
}

// Sort out the control object and the ikHandle
// (allow the user to select in either order)
//
int $indexIK;
int $indexC;
if(`nodeType $sel[1]` == "ikHandle") {
if(`nodeType $sel[0]` == "ikHandle") {
warning("Invalid selection. Both objects are ikHandles.");
return;
}
else {
$indexIK = 1;
$indexC = 0;
}
}
else {
if(`nodeType $sel[0]` == "ikHandle") {
$indexIK = 0;
$indexC = 1;
}
else {
warning("Invalid selection. You must select one object and one ikHandle.");
return;
}
}

// Make sure ikHandle twist attribute is unlocked
//
int $twistLock = `getAttr -lock ($sel[$indexIK]+".twist")`;
if($twistLock) {
warning($sel[$indexIK]+".twist is locked. Unlock before trying again.");
return;
}

// store the original pole vector
// create a temporary pole vector constraint
// store the resulting pole vector
// remove the temporary pole vector constraint
// restore the original pole vector
//
float $pvOrig[] = `getAttr ($sel[$indexIK]+".poleVector")`;
poleVectorConstraint -weight 1 $sel[$indexC] $sel[$indexIK];
float $pvNew[] = `getAttr ($sel[$indexIK]+".poleVector")`;
poleVectorConstraint -weight 1 -rm $sel[$indexC] $sel[$indexIK];
setAttr ($sel[$indexIK]+".poleVector") -type "double3" $pvOrig[0] $pvOrig[1] $pvOrig[2];

// compute the twist value
//
float $pvTwist = `nilsNoFlipIKProc $pvNew[0] $pvNew[1] $pvNew[2] $sel[$indexIK]`;

// create the pole vector constraint
// apply the twist to restore original orientation
// lock the twist attribute
//
poleVectorConstraint -weight 1 $sel[$indexC] $sel[$indexIK];
setAttr ($sel[$indexIK]+".twist") $pvTwist;
setAttr -lock true ($sel[$indexIK]+".twist");

// helpful information (maybe)
//
print("djBuildPoleVector info...\n");
print(" old pole vector: "+$pvOrig[0]+", "+$pvOrig[1]+", "+$pvOrig[2]+"\n");
print(" new pole vector: "+$pvNew[0]+", "+$pvNew[1]+", "+$pvNew[2]+"\n");
print(" twist locked at: "+$pvTwist+"\n");
print("\n");
print("djBuildPoleVector done. (See script editor for details)");
}

//--------------------------------------------------------------------------------------------
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
он тупо передает эти значения в твист. что некорректно
 
Рейтинг
21
Глянь, пожалуйста,если не трудно, когда у тебя время будет,... Может так будет нагляднее, какие ошибки я делаю...Очень буду признателен!!
(В архиве сцена) http://file.qip.ru/arch/jSDwkcxy/scene_1.html
 
Рейтинг
21
Попробовал сделать скелет с нуля-тот же фиговый результат... Может так и должно быть?.......
 

Вложения

Рейтинг
21
Попробовал снова с нуля построить скелет ноги..
Вышло!
Не знаю даже где косяк был в той сцене?!
В общем, я тут в комиксах сфотографировал свои действия..
Обращаюсь к профи сетапа!
Нет ли ошибок в моих действиях, "лишнего гемароя" ?
Прошу подправить меня, если где-то мои действия не верны. (хотелось бы закрепить знания))
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
давай в личку. а то ведем тут переписку как в личке
 
Рейтинг
21
Уважаемый, Владимир! А вы не могли бы более аргументированно описать! "бредятина какая-то... "-это и так ясно, но на форумах люди ещё и общаются, делятся своими знаниями, помогают...не только критикуют.
Свои действия в картинках я постил только для того, чтобы люди знающие и не скупые на знания, немного мне помогли, а не только своими комментариями ещё раз показали как они круты! Я между прочем и Ваши труды читаю! И с уважением отношусь к Вашему профессионализму, так что давайте более снисходительнее будем относится к чайникам и несущим вечную бредятину (как я, например))
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
так. Куприн
давайте вы создадите свою тему, и там будете показывать ваш прогресс и вопросы.
 

Вилеант

Активный участник
Рейтинг
5
Снова здрасте. Может кто нибуть знает? Есть эмитер который движеться по трубе и вылетает из неё, частицы тагже вылитают с другой строны трубы. как зделать чтобы на рендере частицы находящиеся в трубе были не видны? труба нужна для прощёта столкновений и перед рендером просто отключаеться.
 
Статус
Закрыта.
Сверху