1 Уроки Maya Иерархия и прямая кинематика 3 Сб Окт 02, 2010 7:02 am
Admin
Admin
Предположим, что по некоторой достаточно длинной криволинейной трассе движется объект (в нашем случае примитив TorusKnot), перемещение которого должно фиксироваться камерой крупным планом — значит, в конкретный момент времени наблюдать можно только за отдельным участком трассы. Кроме того, небольшой фрагмент трассы с объектом в каждый конкретный момент времени должен освещаться тремя разноцветными прожекторами, напоминающими разноцветные театральные софиты. Получается, что помимо движения объекта по сложной траектории требуется также организовать слежение за ним камеры и трех источников света. Создайте плоскость и объект TorusKnot, а затем настройте освещение посредством внедрения в сцену слабого Omni-источника для общего освещения сцены и трех направленных прожекторов, например с лучами синего, красного и зеленого цветов и небольшими световыми конусами (в данном случае параметр Hotspot/Beam равен 10, а Falloff/Field — 20) — рис. 41. Добавьте трассу в виде произвольного криволинейного сплайна и переместите объект в начало трассы (рис. 42).
Анимируем перемещение объекта. Создайте объект-пустышку и организуйте его перемещение по траектории (команда Animation=>Constraints=>PathConstraint с включенным на панели Motion флажком Follow). Свяжите объект TorusKnot с фиктивным объектом и выровняйте его по объекту-пустышке по всем трем осям, убедитесь, что при проигрывании анимации объект TorusKnot совершает запланированное перемещение по траектории.
Теперь нужно настроить слежение источников света. В нашем случае источники направленные ( Target Spot), то есть для них уже задан контроллер Look At (Смотреть на), ограничивающий их вращение таким образом, чтобы они всегда были направлены на свои мишени. Поэтому самым простым решением представляется указать в качестве мишеней Dummy-объект, что автоматически приведет к тому, что источники всегда будут направлены на движущийся объект. Для этого достаточно выделить первый источник (без мишени), на панели Motion открыть свиток Look At Parameters (Параметры контроллера «Смотреть на»), щелкнуть на кнопке Pick Target (Указать мишень) и указать в одном из окон проекций объект Dummy01 (рис. 43). Затем данную операцию следует проделать в отношении двух других источников. После этого источники света будут действительно следить за движущимся объектом, только вот эффект разноцветных театральных софитов окажется утраченным, поскольку все три источника станут освещать одну и ту же область пространства, а значит, их разноцветные световые лучи полностью сольются (рис. 44). Получается, что мишень для каждого источника должна быть своя, но при этом все три мишени должны следовать за объектом Dummy01. Поэтому создайте еще три фиктивных объекта и разместите их так, чтобы они находились в центрах предполагаемых световых пятен (рис. 45). Выделите все три дополнительных объекта-пустышки и свяжите их с объектом Dummy01 (рис. 46). Теперь софиты будут не только следить за движущимся объектом, но и освещать каждый свою зону, что и обеспечит наличие трех разноцветных световых пятен (рис. 47).
В окне Left создайте камеру, окно Perspective замените на окно проекции камеры (команда Views=>Camera из меню окна проекции или клавиша C). Настройте положение и ориентацию камеры так, чтобы она была направлена на движущийся объект (рис. 48). К сожалению, направление ориентации на объект будет выдерживаться лишь для данного конкретного кадра анимации. Поэтому выделите камеру (без мишени), на панели Motion откройте свиток Look At Parameters, щелкните на кнопке Pick Target и укажите в качестве мишени камеры объект Dummy01 (рис. 49). Проиграйте анимацию — теперь камера добросовестно следит за объектом, вот только расстояние между камерой и объектом постоянно меняется, что затрудняет наблюдение (рис. 50). Поэтому свяжите камеру с объектом Dummy01 (рис. 51) — теперь камера будет не только продолжать слежение за объектом, но и автоматически настраивать позиционирование, а значит, наблюдение за объектом будет производиться с одного и того же расстояния (рис. 52). К сожалению, это еще не все — внимательно просмотрите всю анимацию, и вы увидите, что освещение софитами движущегося объекта на разных этапах анимации неодинаково, хотя все три световых пятна всегда присутствуют — дело в том, что меняется расстояние от источников света до объекта. Исправляется ситуация точно так же, как и вышерассмотренная с позиционированием камеры — достаточно связать все три источника с объектом Dummy01 (рис. 53), а затем установить их на желаемом удалении от объекта. Это и приведет к нужному результату — отдельные кадры полученной в итоге анимации представлены на рис. 54.
Шевеление щупалец морского обитателя
Применим метод прямой кинематики для имитации шевеления щупалец некоего морского обитателя. Вначале создайте три базовых объекта — один объект Spring01 и два обычных цилиндра, разместите их друг на друге в направлении оси Z (это и будет основа для щупальца). Между ними включите два Dummy-объекта (рис. 55). Выделите объект Cylinder02, откройте на панели Motion свиток Assign Controller (Назначение контроллеров), выделите строку Rotation и щелкните на одноименной кнопке Assign Controller (рис. 56). В открывшемся окне выделите опцию LookAt Constrant (рис. 57) и нажмите Ok. Затем щелкните на кнопке AddLookAt Target и в качестве цели, на которую будет смотреть данный цилиндр, укажите нижний объект-пустышку, а в области SelectLookAt Axis подсветите ось Z (рис. 58). Аналогичную операцию проведите в отношении объекта Spring01, только в качестве ограничивающей его вращение цели укажите объект Dummy02.
Теперь назначим обоим объектам-пустышкам постепенно затухающие колебания, что можно сделать путем добавления им контроллеров Spring (Пружина). Выделите объект Dummy01, откройте на панели Motion свиток Assign Controller, выделите строку Position, щелкните на Assign Controller, выберите контроллер Spring и увеличьте его параметр Mass примерно до 500 (рис. 59). Данный параметр отвечает за силу колебаний — чем выше его значение, тем колебания сильнее. Точно таким же образом назначьте контроллер Spring второму фиктивному объекту.
Свяжите объект Dummy01 с объектом Cylinder01, а объект Dummy02 с объектом Cylinder02 (рис. 60). В режиме автоматической генерации ключей в одном из начальных кадров (мы выбрали 10-й) переместите объект Cylinder01, являющийся родительским, на некоторое расстояние относительно осей X и Y (рис. 61). Проиграйте анимацию, и вы увидите, что щупальце шевелится (рис. 62). Размножьте щупальца, применив операцию Array (команда Tools=>Array) с параметрами как на рис. 63. Это приведет к получению сразу массива щупалец (рис. 64), которыми можно будет воспользоваться при создании какого-нибудь сказочного морского обитателя, только придется прочие элементы данного существа связать с главным родительским объектом сцены Cylinder01. В силу большого количества объектов сцены это окажется проблематичным. Поэтому вначале щелкните на кнопке Select by Name, выберите объекты, которые требуется связать. Затем активируйте инструмент SelectandLink и вновь щелкните на кнопке Select by Name — откроется окно Select Parent (а не Select Object); укажите в нем объект Cylinder01 (рис. 65) и щелкните на кнопке Link, что и приведет к требуемому связыванию. Теперь щупальца уже будут перемещаться не сами по себе, а вместе с прочими элементами морского существа. Вид полученной в итоге сцены в некоторых кадрах анимации может напоминать рис. 66.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 41. Исходная сцена
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 42. Появление трассы
Рис. 41. Исходная сцена
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 42. Появление трассы
Анимируем перемещение объекта. Создайте объект-пустышку и организуйте его перемещение по траектории (команда Animation=>Constraints=>PathConstraint с включенным на панели Motion флажком Follow). Свяжите объект TorusKnot с фиктивным объектом и выровняйте его по объекту-пустышке по всем трем осям, убедитесь, что при проигрывании анимации объект TorusKnot совершает запланированное перемещение по траектории.
Теперь нужно настроить слежение источников света. В нашем случае источники направленные ( Target Spot), то есть для них уже задан контроллер Look At (Смотреть на), ограничивающий их вращение таким образом, чтобы они всегда были направлены на свои мишени. Поэтому самым простым решением представляется указать в качестве мишеней Dummy-объект, что автоматически приведет к тому, что источники всегда будут направлены на движущийся объект. Для этого достаточно выделить первый источник (без мишени), на панели Motion открыть свиток Look At Parameters (Параметры контроллера «Смотреть на»), щелкнуть на кнопке Pick Target (Указать мишень) и указать в одном из окон проекций объект Dummy01 (рис. 43). Затем данную операцию следует проделать в отношении двух других источников. После этого источники света будут действительно следить за движущимся объектом, только вот эффект разноцветных театральных софитов окажется утраченным, поскольку все три источника станут освещать одну и ту же область пространства, а значит, их разноцветные световые лучи полностью сольются (рис. 44). Получается, что мишень для каждого источника должна быть своя, но при этом все три мишени должны следовать за объектом Dummy01. Поэтому создайте еще три фиктивных объекта и разместите их так, чтобы они находились в центрах предполагаемых световых пятен (рис. 45). Выделите все три дополнительных объекта-пустышки и свяжите их с объектом Dummy01 (рис. 46). Теперь софиты будут не только следить за движущимся объектом, но и освещать каждый свою зону, что и обеспечит наличие трех разноцветных световых пятен (рис. 47).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 43. Настройка параметров свитка LookAtParameters для первого Spot-источника
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 44. Результат назначения общей мишени для всех трех источников
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 45. Появление трех дополнительных фиктивных объектов
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 46. Вид иерархической цепочки после связывания дополнительных Dummy-объектов
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 47. Вид визуализированной сцены в одном из кадров анимации
Рис. 43. Настройка параметров свитка LookAtParameters для первого Spot-источника
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 44. Результат назначения общей мишени для всех трех источников
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 45. Появление трех дополнительных фиктивных объектов
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 46. Вид иерархической цепочки после связывания дополнительных Dummy-объектов
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 47. Вид визуализированной сцены в одном из кадров анимации
В окне Left создайте камеру, окно Perspective замените на окно проекции камеры (команда Views=>Camera из меню окна проекции или клавиша C). Настройте положение и ориентацию камеры так, чтобы она была направлена на движущийся объект (рис. 48). К сожалению, направление ориентации на объект будет выдерживаться лишь для данного конкретного кадра анимации. Поэтому выделите камеру (без мишени), на панели Motion откройте свиток Look At Parameters, щелкните на кнопке Pick Target и укажите в качестве мишени камеры объект Dummy01 (рис. 49). Проиграйте анимацию — теперь камера добросовестно следит за объектом, вот только расстояние между камерой и объектом постоянно меняется, что затрудняет наблюдение (рис. 50). Поэтому свяжите камеру с объектом Dummy01 (рис. 51) — теперь камера будет не только продолжать слежение за объектом, но и автоматически настраивать позиционирование, а значит, наблюдение за объектом будет производиться с одного и того же расстояния (рис. 52). К сожалению, это еще не все — внимательно просмотрите всю анимацию, и вы увидите, что освещение софитами движущегося объекта на разных этапах анимации неодинаково, хотя все три световых пятна всегда присутствуют — дело в том, что меняется расстояние от источников света до объекта. Исправляется ситуация точно так же, как и вышерассмотренная с позиционированием камеры — достаточно связать все три источника с объектом Dummy01 (рис. 53), а затем установить их на желаемом удалении от объекта. Это и приведет к нужному результату — отдельные кадры полученной в итоге анимации представлены на рис. 54.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 48. Появление камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 49. Настройка параметров свитка LookAtParameters для камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 50. Вид позиционирования камеры в нескольких кадрах анимации до связывания камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 51. Вид иерархической цепочки после связывания камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 52. Вид позиционирования камеры в нескольких кадрах анимации после связывания камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 53. Вид иерархической цепочки после связывания источников
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 54. Слежение за движущимся объектом
Рис. 48. Появление камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 49. Настройка параметров свитка LookAtParameters для камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 50. Вид позиционирования камеры в нескольких кадрах анимации до связывания камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 51. Вид иерархической цепочки после связывания камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 52. Вид позиционирования камеры в нескольких кадрах анимации после связывания камеры
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 53. Вид иерархической цепочки после связывания источников
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 54. Слежение за движущимся объектом
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение] |
Применим метод прямой кинематики для имитации шевеления щупалец некоего морского обитателя. Вначале создайте три базовых объекта — один объект Spring01 и два обычных цилиндра, разместите их друг на друге в направлении оси Z (это и будет основа для щупальца). Между ними включите два Dummy-объекта (рис. 55). Выделите объект Cylinder02, откройте на панели Motion свиток Assign Controller (Назначение контроллеров), выделите строку Rotation и щелкните на одноименной кнопке Assign Controller (рис. 56). В открывшемся окне выделите опцию LookAt Constrant (рис. 57) и нажмите Ok. Затем щелкните на кнопке AddLookAt Target и в качестве цели, на которую будет смотреть данный цилиндр, укажите нижний объект-пустышку, а в области SelectLookAt Axis подсветите ось Z (рис. 58). Аналогичную операцию проведите в отношении объекта Spring01, только в качестве ограничивающей его вращение цели укажите объект Dummy02.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 55. Исходная сцена
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 56. Кнопка AssignController
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 57. Выбор контроллера LookAtConstrant
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 58. Назначение LookAt-цели объекту Cylinder02
Рис. 55. Исходная сцена
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 56. Кнопка AssignController
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 57. Выбор контроллера LookAtConstrant
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 58. Назначение LookAt-цели объекту Cylinder02
Теперь назначим обоим объектам-пустышкам постепенно затухающие колебания, что можно сделать путем добавления им контроллеров Spring (Пружина). Выделите объект Dummy01, откройте на панели Motion свиток Assign Controller, выделите строку Position, щелкните на Assign Controller, выберите контроллер Spring и увеличьте его параметр Mass примерно до 500 (рис. 59). Данный параметр отвечает за силу колебаний — чем выше его значение, тем колебания сильнее. Точно таким же образом назначьте контроллер Spring второму фиктивному объекту.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 59. Назначение контроллера Spring объекту Dummy01
Рис. 59. Назначение контроллера Spring объекту Dummy01
Свяжите объект Dummy01 с объектом Cylinder01, а объект Dummy02 с объектом Cylinder02 (рис. 60). В режиме автоматической генерации ключей в одном из начальных кадров (мы выбрали 10-й) переместите объект Cylinder01, являющийся родительским, на некоторое расстояние относительно осей X и Y (рис. 61). Проиграйте анимацию, и вы увидите, что щупальце шевелится (рис. 62). Размножьте щупальца, применив операцию Array (команда Tools=>Array) с параметрами как на рис. 63. Это приведет к получению сразу массива щупалец (рис. 64), которыми можно будет воспользоваться при создании какого-нибудь сказочного морского обитателя, только придется прочие элементы данного существа связать с главным родительским объектом сцены Cylinder01. В силу большого количества объектов сцены это окажется проблематичным. Поэтому вначале щелкните на кнопке Select by Name, выберите объекты, которые требуется связать. Затем активируйте инструмент SelectandLink и вновь щелкните на кнопке Select by Name — откроется окно Select Parent (а не Select Object); укажите в нем объект Cylinder01 (рис. 65) и щелкните на кнопке Link, что и приведет к требуемому связыванию. Теперь щупальца уже будут перемещаться не сами по себе, а вместе с прочими элементами морского существа. Вид полученной в итоге сцены в некоторых кадрах анимации может напоминать рис. 66.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 60. Вид иерархической цепочки после связывания всех объектов
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 61. Формирование ключей анимации в автоматическом режиме
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 62. Вид щупальца в нескольких кадрах анимации
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 63. Параметры настройки операции Array
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 64. Массив щупалец
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 65. Выделение родительского объекта в окне SelectParent
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 66. Морской обитатель с шевелящимися щупальцами
]Рис. 60. Вид иерархической цепочки после связывания всех объектов
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 61. Формирование ключей анимации в автоматическом режиме
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 62. Вид щупальца в нескольких кадрах анимации
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 63. Параметры настройки операции Array
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 64. Массив щупалец
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 65. Выделение родительского объекта в окне SelectParent
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Рис. 66. Морской обитатель с шевелящимися щупальцами