3ds max
Меню сайта
Мини-чат
300
Наш опрос
Оцените мой сайт
Всего ответов: 171

Приlinkовываем стрелочку к жо.. к первой кости спины, и ставим на место - к первой ик, вы заметили, что шейп прошел половину расстояния от пройденной курсором мышки - потому, что на него действует два контроллера - если вы подвинете копыто, то он пройдет половину расстояния пройденного копытом. Создаем еще одну ик и прилинковываем все как на картинке. Не знаю как у вас, а у меня работает, правда стрелочка как то сильно кости равняет, (при беге лошадь старается поставить ногу так что бы первая и третья кость были параллельно ,по этому ставлю копыто в максимальное переднее положение и подвигаю стрелочку, так что бы кости были параллельны, отодвигаю в крайнее заднее положение копыто и в motion панели добавляю вес на Position Constrain пока кости не выровняются. То есть система получившаяся в ходе наших манипуляций действует автоматически, когда мы двигаем копыто - работает вся нога, но в тоже время мы в любой момент можем подкорректировать положение - такой полуавтомат получился. ( Мы не смогли бы этого сделать, если бы назначили одну ик на все ногу.) Маленькое замечание - так как на один из управляющих объектов действует два объекта, то при анимации следите, чтобы ключи ( пиковые)на оба шейпа были на одном кадре, позволяет избежать не нужных нам замедлений и внезапных ускорений. Теперь по вращаем копыто - у меня у нижней кости угол наклона такой же, как и у шейпа, но положение меняется (чуть не забыл пивот - то есть точка оборота, не только является тем, чем есть, но также эта точка, по которой пишется вся анимации ,положение объекта, например по оси х это положение не самого объекта, а его пивота - ведь пивот может быть смещен, по этому, прежде чем приступать к ригу - поставьте центр трансформаций по пивоту), Кость вращается вокруг пивота копта - мы можем убрать вращение, поставив пивот шейпа на мест третей ика, но мы сделаем немного по-другому - заходим в иерархи панель (рядышком с motion), и включаем Effect pivot only, ставим пивот на краешек копыта спереди - так как копыто топает не заметно при беге, но в самой дальней точке поворачивается на носке, то можно избежать добавочных контролеров сзади и посередине. Создаем пару Points -спереди и сзади. Назначаем на обе ik в Motion панели таргеты- точки куда будет повернута плоскость изгиба ( Pick Target) .



Написать это было намного труднее, чем сделать - честное слово.

Передняя нога

Рисунок 5


Буду краток - тоже самое, что и задняя.

Спина


Рисунок 6

Прежде чем приступать к созданию рига создадим несколько линий- для контроля сзади и назовем Ass , для контроля переда ( Brest) , для середины ( называйте как хотите) и еще одну линию при создании которой будем использовать Smooth vertices , для чего перед тем как создавать линию включим initial type - smooth - начинается эта линия в начале цепочки костей , вторая точка посередине и точка три в конце ( эта линия понадобится при создании spline IK)

Далее - Animation/IK Solvers/ SplineIK Solver-выбираем первую кость потом последнею и нашу линию. Появится Ik Goal (синенький крестик ) и три points .Совмещаем пивоты управляющих элементов с надлежащими points( Hierarchy panel/ Effect pivot only - Alt A , выбираем точку) , прилинковываем (см/ рис. 6). Теперь нужно написать скрипт на поворот спины вдоль продольной оси. Но прежде чем мы приступим к этой процедуре, мы должны выбрать правильную ось вращения для наших shapes , а для этого придется сделать маленькое отступление и познакомить вас с отстойной системой Gimbal .

Gimbal

Система в которой пишутся все повороты в программах по 3 D-графике ( макс отнюдь не исключение). И главное что стоит понять это зависимость осей вращения друг от друга и от порядка обхода


Рисунок 7

Порядок обхода мы можем узнать в motion панели, у данного объекта X Y Z - и это значит что ось Z не зависит от поворотов самого объекта, а зависит только от положения его родителя (предыдущего по иерархии объекта, в данном случае Scene Root и повернуть вы ее не сможете) ось Y -зависит только от оси Z .X - зависит от обеих осей вращения и (какое счастье) совпадает с локальной осью на туже букву, вот на эту ось (не на X, а на первую ось в обходе) и приходится львиная доля скриптов , wire parameters and expressions . Но как повернуть нужную нам ось в нужное положение? Если мы просто повернем объект, то получим вот такую картину-(см рис 7), то есть две оси схлопнутся в одну, так называемый Gimbal Lock ( кстати это основное положение для столь частых глюков в 3д программах) и если писать анимацию в другой системе, например Local, то скрипт будет выполняться на половину и или не будет вообще. По этому можно добавить еще одного родителя и поворачивать его или, что более правильно, поменять порядок обхода и сделать, так что бы нужная вам ось была первой в порядке обхода.

Обратно к лошади

У меня ось, которая мне нужна, это ось Y , по этому я выбираю обход YZX и приступаю к написанию скрипта. Выбираю IK Goal и перехожу в панель Motion.


Рисунок 8

Выбираю Twist End Angler, кликаю на знак вопроса и выбираю Float Script

Строка первая -

DependsOn $Ass $Brest

Описание влияющих объектов. Спереди и сзади .

p=DegToRad $Ass.Rotation.Y_Rotation.Controller.Value

присваиваю переменной p значение Y вращения объекта Ass

o=DegToRad $Brest.Rotation.Y_Rotation.Controller.Value

Переменная o , объект Brest

i=o-p

От вращения переднего объекта ( он задает поворот грудины ) отнимаю вращение задницы ( до этого она влияла на поворот всего туловища, теперь влияет только на заднюю часть.)

Ну вот и все. Может человек, который добросовестно прошел туториал макса, спросит, почему так просто, а где умопомрачительная иерархия, где второй скрипт на начальный угол. Отвечаю: во-первых, зачем усложнять? А во-вторых, если вы <правильный> скелет положите на бочок и покрутите, то ваш персонаж превратится в выжатую тряпочку - произойдет резкое перекручивание костей ( а ведь анимация смерти и падения входят в основной набор игровых анимаций Вы рожаете его в творческих муках, на ваших глазах он делает первые неуверенные шаги, как вы радовались, когда он побежал, а потом вы его убиваете. Убиваете! УБИВАЕТЕ!!!).

Я не знаю, где Discreet заказывал уроки, но мне интересно, откуда такие ошибки, и почему ни слова о Gimbal.

Шея


Рисунок 9

Шея последний элемент в настройке нашего скелета, и здесь мы будем использовать все то, что использовали раньше на полную катушку. Начнем с создания управляющих элементов и сплайна для ик решателя( особое внимание уделите голове, вы не должны вращать сам объект, и должны правильно выбрать порядок обхода) . Назначаем Spline IK .Назначаем на треугольники Position Constrain и прилинковываем. Настраиваем веса отношений приблизительно по отношению расстояний до управляющих элементов. Прилинковываем points . Создаем для кости головы orientation constrain относительно управляющего голову сплайна ( Animation/ Constrains/ Orientation) кость повернется под не нужным нам углом. Для того что бы избавится от этого выбираем кость и переходим в Motion панель и кликаем на Rotation (рис 10 )


Рисунок 10

Опускаемся ниже по панели. И ставим <сохранить смещение> (рис 11)


Рисунок 11


Рисунок 12

и теперь приступаем к написанию зависимости поворота продольной оси, но будем для разнообразия использовать Float Expression . Для этого выберем ик и в Motion панели (рис 12) на Twist End Angler (1.) назначаем (2.) Float Expression. В появившемся окне создаем две скалярные переменные < а> и < b> (3.) , выбираем переменную <а> (4.) и кликаем на Assign to controller (5.) (назначить контроллеру) и выбираем ротацию по игреку объекта head (6.) ( что бы легче было выбирать объект -перейдите в Isolate Selection), закрываем окошко(7.) и по аналогии назначаем переменной < b> ротацию < y> объекта Brest .

Пишем в окошке Expression -< a- b> , вот и все. 

1 2

Форма входа
Календарь новостей
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2024