1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем Eugenicsbmx, 13 апр 2010.

Модераторы: Dark™, Skif
  1. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    Делаю вот по известному методу, но чет у меня выходит облако с ресниц, анимация сразу говорю не причем пытался без движений тоже самое облако получается в чем трабла? [​IMG]
     
  2. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.823
    Симпатии:
    417
    Баллы:
    2.787
    так.. ну ты даешь.. кто же так делает? у тебя голова анимирована...
    кроме того просто проиграй анимацию.. без скрипта.. ресница должна двигаться по кривой...
    мало того этот способ не особо известен.. просто я его выложил в сеть...
     
  3. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    ну прям секреты мастерства тут тоже есть: http://www.sigillarium.com/blog/lang/ru/507/
    а качественно все равно надо делать блендшейпами это так для общих планов!
     
  4. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.823
    Симпатии:
    417
    Баллы:
    2.787
    никто не говорит про секреты... когда выкладывал, то сразу давал ссылку на автора.. Sagroth молодец..
    я не знал что он выложил это в сеть..
    насчет общих планов и качества - этот способ и на крупных планах хорошо работает.
     
  5. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    ресницы двигаются не по дуге как веко, а линейно, как же он может годится для крупных планов?
     
  6. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.823
    Симпатии:
    417
    Баллы:
    2.787
    стоп... кривая повторяет ВСЕ деформации века.. тоесть просто прицеплена к ней... а ресницы прикреплены к кривой... если у тебя не так, то ты что то сделал не так.

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

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    Ну я так и делала все, толкьо ресницы у меня движутся линейно
     
  8. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    Кстати автор то и поделился этой ссылочкой))
     
  9. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    Вот такая еще проблема рисницы не полностью прилипают к кривой
    [​IMG]
     
  10. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    вопрос снят
     
  11. Eugenicsbmx

    Eugenicsbmx Активный участник

    С нами с:
    06.12.2005
    Сообщения:
    459
    Симпатии:
    11
    Баллы:
    19
    а все равно облаком, создает!!
     
  12. Sagroth

    Sagroth Пользователь сайта

    С нами с:
    26.07.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    Сейчас даже проще выделить нужные эджи и нажать 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;
    }
    
    И разумеется голова вращаться не должна.
     
  13. Sagroth

    Sagroth Пользователь сайта

    С нами с:
    26.07.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    P.S. Точнее уменьшать надо только move... rot - менять по вкусу :)
     
  14. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.823
    Симпатии:
    417
    Баллы:
    2.787
    Sagroth, привет, давненько тебя не было видно!
     
  15. Sagroth

    Sagroth Пользователь сайта

    С нами с:
    26.07.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    Привет :)
     
  16. Alexey Vorobyov

    Alexey Vorobyov Знаток

    С нами с:
    18.05.2007
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    34
    Извините за архиологию, но очень нужна помощь.) Вернемся к методу привязки ресниц.
    Все круто все работает, ровно до тех пор, пока не начинаешь перемещать и вращать персонажа. Получается так, что кривая a1BaseWire парентится к World.При анимации, не разбираясь особо в алгоритме работы деформатора Wire, примерно понятно, что pCone1 пытается быть направленным к ней (или относительно нее). Следовательно, когда персонаж двигается в пространстве, ресницы направленны по определенному вектору к a1BaseWire (ресницы перемещаются в пространстве, а a1BaseWire остается относительно своих дефолтных значениях) . Пытался перемещать объекты a1, pCone1, a1BaseWire по разному, меняя иерархию, но кроме двойных трансформаций, это ни к чему не привело. Пытался использовать констрейны orient и aim, но так же глухо. Как этот метод реализуется на практике?
    Вторая проблема при этом методе, это деформация сетки ресниц, относительно кривой на веке. Зависит это от параметров атрибутов ноды wire, обекта pCone1. Крутил их как мог, при этом dropoff ставил на «9999999999999999999» (остальные параметры были в всевозможных значениях))). Я чувствую как по чуть-чуть ломается мой мозг. Хожу по кругу)))
    Существует ли на сегодня более «человеческий» способ привязки объектов? А то уже чувствую легче обычным скином примотать…
     

    Вложения:

    • 2829512.jpg
      2829512.jpg
      Размер файла:
      263,1 КБ
      Просмотров:
      43
    • 2829513.jpg
      2829513.jpg
      Размер файла:
      122,2 КБ
      Просмотров:
      41
  17. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    Не путайте археологию с анахронизмом..))
    Modify > Convert > Polygon Edges to Curve
     
  18. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    Кстати, забавно. ) "Спасибо" за "привет"..))
     
  19. Alexey Vorobyov

    Alexey Vorobyov Знаток

    С нами с:
    18.05.2007
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    34
    Ладно…постараюсь в этот раз выразиться предельно четко.
    Имеем сцену 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

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

    Вложения:

    • 2830652.jpg
      2830652.jpg
      Размер файла:
      356,3 КБ
      Просмотров:
      57
    • 2830653.jpg
      2830653.jpg
      Размер файла:
      424,6 КБ
      Просмотров:
      52
    • 2830654.jpg
      2830654.jpg
      Размер файла:
      377,6 КБ
      Просмотров:
      48
  20. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    1. после создания кривой убиваешь историю.
    2. биндишь кривую к тем же костям что и веко
    3. копируешь веса с века на кривую.
    кривая в точности повторяет движение века. и без констракшен хистори
     
Модераторы: Dark™, Skif

Поделиться этой страницей