Link:INB Home|INB English| INB русский язык|INB العربية|INB Türkiye|INB فارسی|INB Español|INB Français|INB Português|INB Deutsch|INB 國語|INB 中文|INB 日本语|INB 한국어|INB ภาษาไทย|INB tiếng Việt||Уроки Maya Инверсная кинематика 2
INB русский язык Форум
Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com
INB русский язык Форум

Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com


Вы не подключены. Войдите или зарегистрируйтесь

《《《《《《《上一页INBforum   Перейти вниз

上一页INBforum》》》》》》》Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

1Уроки Maya Инверсная кинематика 2 Empty Уроки Maya Инверсная кинематика 2 в Сб Окт 02, 2010 7:03 am

Admin

Admin
Admin
Управлять связями можно не только через Joint-параметры, но и путем назначения им приоритетов (параметр Precedence). Данный параметр управляет процессом распространения совокупного движения между связями: на связи с большим приоритетом приходится большая доля общего движения, на связи с меньшим приоритетом — меньшая. При этом абсолютное значение приоритета связи роли не играет — важно лишь превышение одного приоритета над другим. По умолчанию приоритет у всех связей одинаков и равен нулю. Это приводит к тому, что связи, находящиеся ближе к конечному эффектору, перемещаются больше, нежели удаленные от него связи. Устанавливаются приоритеты в свитке ObjectParameters (панель Hierarchy, закладка IK) — либо вручную в поле Precedence, либо автоматически с помощью кнопок Child->Parent и Parent->Child (рис. 24).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 24. Опции регулирования приоритетов


При ручном вводе приоритет задается для каждого из объектов по отдельности, а в случае автоматического ввода приоритеты чаще всего устанавливаются сразу для всей иерархической цепочки. Вариант Child->Parent обеспечивает присваивание связям приоритетов, уменьшающихся от дочернего объекта к родительскому. В итоге объекты, находящиеся ближе к конечному эффектору, передвигаются больше, нежели удаленные от него. Вариант Parent->Child приводит к противоположным результатам, так как назначает связям приоритеты, увеличивающиеся от дочернего объекта к родительскому. Чтобы убедиться в этом, откройте сохраненный ранее на диске файл с булавой, выделите все элементы сцены и клонируйте их, а затем переместите скопированную булаву вправо (рис. 25). Выделите все объекты первой булавы и установите для них приоритеты, щелкнув на кнопке Child->Parent. А затем выделите все элементы второй булавы и установите для них приоритеты, щелкнув на кнопке Parent->Child. Перетащите влево конечный эффектор (объект Hedra01) у первой булавы, а затем проведите аналогичную операцию в отношении конечного эффектора второй булавы — результат будет различным, так как у правой булавы цепь окажется жесткой (рис. 26).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 25. Появление второй булавы

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 26. Вид сцены после одинакового перемещения конечных эффекторов при разных параметрах приоритетов

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение] [Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Блокирование IK-сетей


В любом месте IK-сети можно блокировать вычисления по закону инверсной кинематики, что нередко используется в сложных иерархиях из нескольких IK-цепей (то есть когда требуется, чтобы инверсная кинематика работала лишь для отдельных ее фрагментов). Реализуется это путем назначения определенных объектов так называемыми терминаторами (Terminator) — после этого все связи, расположенные по иерархии выше терминатора, будут рассчитываться по законам прямой (а не инверсной) кинематики. Для примера в рабочей сцене с двумя булавами назначьте обеим булавам приоритеты Child->Parent, а после этого во второй булаве одно из звеньев в середине цепи сделайте терминатором, выделив его и включив в свитке ObjectParameters флажок Terminator (рис. 27). Перетащите конечные эффекторы в обеих булавах. В первой, где нет терминатора, по IK-закону будет рассчитана ориентация и положение всех объектов, а во второй объекты выше терминатора даже не будут перемещены (рис. 28), так как на этом участке цепи IK-вычисления были заблокированы.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 27. Назначение элемента терминатором

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 28. Вид сцены после одинакового перемещения конечных эффекторов иерархий (без терминатора — слева и с терминатором — справа)

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение] [Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Анимация объектов при обратной кинематике


Существует два метода, которые можно использовать для анимирования объектов IK-кинематики, — Interactive IK и Applied IK. Первый предполагает ручное выделение и трансформацию конечного эффектора в указанных ключевых кадрах и используется в ситуациях, когда требуется большая свобода управления движением. Это самый легкий метод, но не самый точный. Более точен метод Applied IK, при котором программа сама вычисляет IK-решение для каждого кадра. Он применяется в случаях, когда иерархическая цепочка должна имитировать движение другого объекта сцены (follow-объекта), и более гибок в использовании, поскольку можно быстро изменить анимацию IK-цепочки за счет изменения анимации follow-объекта или выбора другого объекта для следования.
К методу Interactive IK мы уже прибегали (например, при анимировании цилиндров). Попробуем теперь применить метод Applied IK в ранее сохраненной рабочей сцене с цилиндрами. Удалите ранее созданные ключи анимации. Создайте на уровне нижнего цилиндра объект типа Dummy (команда Create=>Helpers=> Dummy) — рис. 29. Обратите внимание, что фиктивный объект не должен быть выровнен по нижнему цилиндру (у данных объектов совпадают лишь значения координаты Z, но не X и Y). Выделите верхний цилиндр, откройте на закладке IK панели Hierarchy свиток Object Parameters, щелкните на кнопке Bind и свяжите данный цилиндр с объектом-пустышкой. В итоге цилиндры сложатся, а в свитке Object Parameters появится информация об установке связи иерархической цепочки с Dummy-объектом (рис. 30). Анимируйте фиктивный объект обычным образом: щелкните на кнопке Auto Key, перетащите ползунок на последний кадр, переместите объект-пустышку по оси Z так, чтобы верхний цилиндр занял свою изначальную позицию, и отключите режим автоматической генерации ключей. Теперь нужно вычислить IK-решения для каждого кадра. Для этого выделите все три цилиндра и в свитке InverseKinematics включите флажок ClearKeys (Очистить ключи) — это приведет к тому, что только что созданные при ручном перемещении фиктивного объекта ключи анимации будут удалены до начала вычислений. После этого удостоверьтесь, что для спиннеров Start и End , определяющих время начала и завершения IK-решения, установлены значения 0 и 100 соответственно, и щелкните на кнопке ApplyIK. В итоге программа вычислит IK-решение (то есть значения позиционных и вращательных ключей) для всех трех объектов. Проиграйте анимацию — движение цилиндров станет более точным, что проще всего заметить при просматривании анимации посредством медленного перетаскивания ползунка на слайдере времени. В анимации по методу Interactive IK средний цилиндр при отключенном флажке Ease начинает свое движение еще до того, как верхний цилиндр достигнет своего нижнего ограничения (что неправильно), а в анимации AppliedIK ничего подобного не происходит — цилиндры строго соблюдают последовательность перемещения.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 29. Появление фиктивного объекта

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 30. Вид сцены после связывания иерархической цепочки с Dummy-объектом

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


Крутящаяся булава


Вернитесь к сохраненной рабочей сцене с булавой. В проекции Top создайте произвольный криволинейный замкнутый сплайн (рис. 31). Выделите ручку булавы, назначьте ей контроллер HDSolver (команда Animation=>IKSolvers=>HDSolver) и укажите мышью на объект Hedra01. Свяжите ручку булавы со сплайном, который в итоге станет в иерархии Root-объектом (рис. 32). Выделите сплайн и в свитке RotationalJoints (панель Hierarchy, закладка IK) запретите для него вращение относительно всех трех осей (рис. 33). Назначьте созданный сплайн в качестве траектории движения для объекта Hedra01, выделив последний, открыв в меню Animation=>Constraints (Анимация=>Ограничения) команду PathConstraint (Ограничения пути) и указав сплайн в одном из окон проекций. Понаблюдайте созданную анимацию и для лучшего ее вида отрегулируйте форму сплайна и положение булавы относительно него (рис. 34). Возможный вид сцены в некоторых кадрах в полученном ролике представлен на рис. 35.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 31. Исходная сцена с булавой и сплайном

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 32. Вид иерархической цепочки

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 33. Параметры настройки свитка RotationalJoints для сплайна

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 34. Вид сцены в одном из кадров анимации

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 35. Крутящаяся булава

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение] [Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Свисающие бусы


Попробуем воспользоваться сплайновой инверсной кинематикой для моделирования эффектно свисающих с некоторой поверхности бус. Для начала создайте примитив Hedra — он сыграет роль одной бусины (рис. 36). Затем на его основе получите массив бусинок, воспользовавшись командой Array и настроив ее параметры примерно как на рис. 37. Получится полоска бусинок, вытянутых вдоль одной прямой, — обратите внимание, что бусинки должны располагаться вплотную друг к другу (рис. 38). Свяжите все бусинки в иерархическую структуру, начав с первой бусины и закончив последней (рис. 39).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 36. Исходная сцена

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 37. Параметры настройки операции Array

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 38. Полоска бусинок

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 39. Вид иерархической цепочки


Теперь нужно придать цепочке бусинок соответствующую бусам форму. Для этого вначале создайте произвольный криволинейный замкнутый сплайн. После этого объедините бусины в сплайновую IK-цепь, выделив первую бусину, открыв из меню Animation=> IK Solvers команду SplineIK Solver и указав на последнюю бусину — создастся объект IK Chain01, о чем внешне будет свидетельствовать появление линии, проходящей через всю длину цепи (рис. 40). Инструментом Select by Name выделите созданную IK-цепь, откройте на панели Motion вкладку SplineIKSolver, щелкните на кнопке None под надписью PickShape и укажите сплайн — вместо слова None появится имя сплайна (рис. 41). Данное действие приведет к тому, что имеющаяся цепочка бусин выстроится по форме сплайна, при этом совсем не исключено, что бусин для полного заполнения сплайновой кривой может не хватить, как и произошло в нашем случае (рис. 42). Тогда откажитесь от последней операции, дополнительно сформируйте группу недостающих бусин, свяжите их вместе с созданными ранее и вновь укажите сплайн в качестве формы для IK-цепи (рис. 43). Обратите внимание, что для ускорения процесса связывания можно клонировать весь набор бусин со связями, выбрав в окне клонирования вариант Reference (Подчинение), что позволит получить второй массив бусин уже сразу со связями, и тогда останется лишь связать данные наборы между собой.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 40. Результат создания сплайновой IK-цепи

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 41. Вид вкладки SplineIKSolver после указания сплайна

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 42. Неудачный результат распределения бусин по сплайну

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 43. Окончательный вид распределенных по сплайну бусин


Попробуем расположить полученную нитку бус на некоторой поверхности так, чтобы они с нее свисали. Создайте соответствующую поверхность, например в виде некой шкатулки (рис. 44). Активируйте сплайн, переключитесь в режим его редактирования и начните перемещать отдельные вершины сплайна относительно оси Z, наблюдая за ниткой бус и добиваясь естественности ее положения (рис. 45). По окончании текстурируйте сцену, возможный вид которой при визуализации представлен на рис. 46.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 44. Появление шкатулки

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 45. Редактирование сплайна

[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 46. Свисающие бусы
]

http://ru.inbforum.com

上一页INBforum   Перейти вниз

上一页INBforumПредыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения

Copyright ©2009-2010 LTD Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

IT:SINGLESERVGoogle谷歌翻译TranslateFORUMSOFTLAYERGoogle谷歌广告联盟AdSenseAsia

 

Создать форум на Forum2x2 | © PunBB | Бесплатный форум поддержки | Контакты | Сообщить о нарушении | Последние обсуждения