Render.ru

Проблема с ресницей

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

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#2
так.. ну ты даешь.. кто же так делает? у тебя голова анимирована...
кроме того просто проиграй анимацию.. без скрипта.. ресница должна двигаться по кривой...
мало того этот способ не особо известен.. просто я его выложил в сеть...
 
Рейтинг
30
#3
ну прям секреты мастерства тут тоже есть: http://www.sigillarium.com/blog/lang/ru/507/
а качественно все равно надо делать блендшейпами это так для общих планов!
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#4
никто не говорит про секреты... когда выкладывал, то сразу давал ссылку на автора.. Sagroth молодец..
я не знал что он выложил это в сеть..
насчет общих планов и качества - этот способ и на крупных планах хорошо работает.
 
Рейтинг
30
#5
ресницы двигаются не по дуге как веко, а линейно, как же он может годится для крупных планов?
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#6
стоп... кривая повторяет ВСЕ деформации века.. тоесть просто прицеплена к ней... а ресницы прикреплены к кривой... если у тебя не так, то ты что то сделал не так.

кстати тот способ которым Sagroth прикреплял кривую к самому веку - устарел.. есть способ проще...
просто выделить нужный ейдж луп, из них сделать кривые, (мейк курв фром селекшен) вроде так, мауа нет под рукой
потом последовательно присоединить их, чтоб получилась 1 кривая, потом сделать ребилд, при желании... и к этой кривой уже цеплять ресницы.
все просто история не убита, а значит кривая будет полностью повторять все деформации века...
 

Sagroth

Пользователь сайта
Рейтинг
2
#12
Сейчас даже проще выделить нужные эджи и нажать Modify>Convert>Polygon Edges to Curves

Судя по гриду на ваших картинках - модель меньше чем та, что была у меня... Поэтому значения rotate/move в скрипте надо тоже уменьшить... Как-нить так, для примера в 10 раз:


Код:
float $move = 0.002;
float $rot = 1;

for ($i = 0; $i < 100; $i++) {
	select pCylinder1;
	duplicate;
	rotate -r (rand(-$rot, $rot)) (rand(-$rot, $rot)) (rand(-$rot, $rot));
	move -r (rand(-$move, $move)) (rand(-$move, $move)) (rand(-$move, $move));
	playButtonStepForward;
	playButtonStepForward;
}
И разумеется голова вращаться не должна.
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#14
Sagroth, привет, давненько тебя не было видно!
 
Рейтинг
46
#16
Извините за архиологию, но очень нужна помощь.) Вернемся к методу привязки ресниц.
Все круто все работает, ровно до тех пор, пока не начинаешь перемещать и вращать персонажа. Получается так, что кривая a1BaseWire парентится к World.При анимации, не разбираясь особо в алгоритме работы деформатора Wire, примерно понятно, что pCone1 пытается быть направленным к ней (или относительно нее). Следовательно, когда персонаж двигается в пространстве, ресницы направленны по определенному вектору к a1BaseWire (ресницы перемещаются в пространстве, а a1BaseWire остается относительно своих дефолтных значениях) . Пытался перемещать объекты a1, pCone1, a1BaseWire по разному, меняя иерархию, но кроме двойных трансформаций, это ни к чему не привело. Пытался использовать констрейны orient и aim, но так же глухо. Как этот метод реализуется на практике?
Вторая проблема при этом методе, это деформация сетки ресниц, относительно кривой на веке. Зависит это от параметров атрибутов ноды wire, обекта pCone1. Крутил их как мог, при этом dropoff ставил на «9999999999999999999» (остальные параметры были в всевозможных значениях))). Я чувствую как по чуть-чуть ломается мой мозг. Хожу по кругу)))
Существует ли на сегодня более «человеческий» способ привязки объектов? А то уже чувствую легче обычным скином примотать…
 

Вложения

Рейтинг
46
#19
Ладно…постараюсь в этот раз выразиться предельно четко.
Имеем сцену temp.mb, как показано на Рис.1. Упрощенный меш «лица» face_mesh привязан к костям отвечающим за поднятие/опускания века (eyelash_01_jnt, eyelash_02_jnt) и джоинту (main_body_jnt), который всю конструкцию перемещает/поворачивает в пространстве. Создаем ресницу eyelash_mesh и помещаем ее в группу dont_touch_grp, которая будет в нулях относительно глобальных координат. Выделяем кривые на меше face_mesh, которые идут по верхнему веку. Применяем к ней команду Modify > Convert > Polygon Edges to Curve. Получаем кривую polyToCurve1, помещаем ее в группу dont_touch_grp. К объекту eyelash_mesh применяем модификатор Wire Tool. Жмем Reset Tool. Выделяем ресницу, жмем Enter, выделяем кривую – жмем Enter. Создалась нода wire1 у eyelash_mesh, параметр DropoffDistance сразу вбиваю в «9999999999999». Кривую polyToCurve1BaseWire (относительно которой будет работать/направлен модификатор(?)) кидаю так же в группу dont_touch_grp. И вот самое интересное. Практика:
1. Вращаем eyelash_01_jnt относительно оси Z (любой оси) – все отлично…ресница повторяет движение кривой.(Рис.2)
2. Переместим персонажа. Точнее развернем(так как манипуляции с translate ни к каким «багам» не приводят). Для наглядности в ту область, где явно видно воздействие вектора, который направляет eyelash_mesh относительно polyToCurve1BaseWire(?), ну или нуля глобальных координат(?). В общем совершим чудо…флипнем меш)) Рис.3. Эт явно видно, когда значения main_body_jnt.rotateY стремятся к 180*n градусам. Свой экстремум есть и у оси Z и Х.
Вопрос, как этот метод реализовать на практике? Как разорвать связь ориентации крайних точек меша eyelash_mesh по «дефолтному» вектору? Есть ли другие методы, которые позволяют ресницам быть привязанным к веку? Уточню: не к кости eyelash_02_jnt, и без блендшейпов, а зависящий именно от кривой вдоль века? Ссылки на гугл приветствуются))

Cцена temp.mb: http://depositfiles.com/files/lywfg6ldf

ЗЫ Покатигорошек, спасибо, что откликнулся, но попытки привить мне методы, которые позволяют мне действовать не столь анахронически, приводят к тем же последствиям))
 

Вложения

Владимир Забелин

Активный участник
Рейтинг
17
#20
1. после создания кривой убиваешь историю.
2. биндишь кривую к тем же костям что и веко
3. копируешь веса с века на кривую.
кривая в точности повторяет движение века. и без констракшен хистори
 
Сверху