Jump to content


Риггинг головы фуря


  • Please log in to reply
No replies to this topic

#1 Axon Dezno

Axon Dezno

    Участник

  • Писатели
  • PipPipPip
  • 217 posts
  • Пол:М
  • Основной цех:Строители
  • Второй цех:Художники
  • SL Status: 

Posted 09.07.09 - 18:23

Цикл статей резидента Axon Dezno

Хочешь жить – умей вертеться…

Так, мы познакомилисць с настройкой IK и целеуказателями, но для создания удобного в работе скелета головы необходимо уметь настраивать ограничения по повороту, размеру, положению в пространстве и некоторым другим свойствам.

Зачем?

Attached Image: image081_trans.png

Однако… Где вы видели, чтобы рука или нога у человека или животного, могла гнуться во все стороны, как тряпка? О.о

Или например неограниченно растягиваться, как кусок жвачки?

Вот для устранения подобных глюков нам и нужны ограничители.

Хоть мускулы лица, это не есть кости суставов, но определённые пределы деформации и у них имеются…

Сохраняем нашу предыдущую сцену, чтобы потом её доработать.

Создаём новую сцену, уменьшаем и отодвигаем появившийся по дефолту кубик.

Затем создаём кость и…

А вот тут сделаю небольшое отступление от непосредственно практики и объясню что такое локальная и глобальная системы координат.

Глобальная система координат это система, в которой хранятся позиции и углы поворота каждого объекта, например нашей кости и кубика:

Attached Image: image083.png

Как бы вы не повернули объект в этой системе координат, её оси всегда будут направлены в одном направлении.

У каждого объекта есть так же ещё и своя собственная локальная система координат, в которой ось „Z“ остаётся там, где она была с момента создания объекта (правда её при желании можно и подвинуть, и повернуть в специальном режиме редактирования).

Зачем нужна локальная ось?

Эмм… ну хотя бы затем, что все трёхмерные каркасы строятсця следующим образом:

Сперва создаются точки в пространстве (они же вертексы, у каждой точки есть свой порядковый номер), потом между ними проводятся линии (они же рёбра – Edges в информации о каждой точке есть также информация о том, к каким точкам линии вести, а к каким нет), затем по теореме гласящей, что «через любые три точки в пространстве можно провести плоскость и при том тока одну» вычисляются специальные вектора, которые называются «нормали» (термин «карта нормалей» aka „Normal map“ слыхали? Ну вот это они и есть…), нормали нужны для определения затенения каждого треугольника модели (а модели на самом деле состоят ТОЛЬКО ИЗ ТРЕУГОЛЬНИКОВ — полигоны (многоугольники) это группы из нескольких треугольников), ну и наконец, происходит расчет положения модели относительно камеры и источника света — то есть происходит затенение модели (о том, как происходит рассчёт шейдеров, текселей, текстур, амбиент окклюжна, бампа, нормал маппинга, спекуляр колора, спекуляр левела, параллакса, glow-карт, текстур детализации, расчета MIP-карт, рефлекта, рефракта и прочего я, пожалуй, говорить не буду ибо боюсь, что от такого количества инфы за раз, вывих или перелом мозгов вам тогда точно гарантирован… :) ).

Возвращаемся к нашим бара… э… в смысле к костям.

Для дальнейшей работы, нам понадобится окно Transform Propertries, спряталось оно в Object → Transform Propertries, ну или можете нажать „N“.

Attached Image: image085.png

Attached Image: image087.png

Отодвиньте его куда-нибудь в угол, чтобы не мешалось, но было под рукой.

Переместите кубик в позицию <X=0.0,Y=2.254,Z=0.0>.

Включите локальную систему координат (Attached Image: image089.png ) и поверните кость на -90 градусов по оси „X“ (хотите манипулятором поворота, а хотите вписыванием значения в соответствующее поле Transform Propertries)

(…или по очереди нажав: R, X, X, -90, Enter (SOb))

Attached Image: image091.png

Включаем манипулятор перемещения и смотрим что получилось:

Attached Image: image093.png

Так, теперь нацеливаем кость на наш кубик ограничителем Track to и пробуем подвигать его:

Attached Image: image095.png

Ну, конструкция вроде шевелится, тока вот вращается наша кость во всех направлениях, а нам надо заставить её крутиться, только в определённом диапазоне.

А вот тут нам на помощь придёт такой ограничитель, как Limit Rotation.

Применяем его к нашей кости и выставляем в нём следующие параметры:

Attached Image: image097.png

Пробуем сдвинуть наш кубик-цель и смотрим, что с изменилось:

Attached Image: image099.png

Как вы можете заметить, поворот теперь осуществляется только в диапазоне от -30° до 30° от локальной оси „Z“.

Поскольку мы теперь уже знаем, как настраиваются целеуказатель, IK и ограничитель поворота — едем дальше.

Загружаем нашу предыдущую сценку с двумя группами костей и перед ними создаём кубик:

Attached Image: image101.png

Так, у нас есть две группы костей, которые чрезвычайно неудобно двигать по одиночке и есть кубик…

Как бы нам нахимичить так, чтобы обе группы костей приводилисць в движение одним кубиком?

Значит во-первых — кости должны поворачиваться только по вертикали, но… в определённых пределах.

Потом, обе группы костей НЕ ДОЛЖНЫ смотреть точно на сам кубик…

Затем, не плохо было бы, если бы кубик контролировал ещё и масштабирование самой большой кости каждой группы, — то есть ещё и сгибал-разгибал наши цепи костей…

Мда, блин, нихрена се задачка…

Attached Image: image198.gif

Ладно, — не смертельно…

Нацеливаем рутовые кости обеих групп на кубик (Track To).

Теперь приминаем к каждой из рутовых костей ограничитель поворота (Limit Rotation).

Смотрим, что получилось, чешем тыкву:

Attached Image: image105.png

Так, в ограничителе ротации у нас есть по два параметра на каждую ось… тока вот относительно какой системы координат они устанавливаются — глобальной или локальной?

Угу, вы правильно догадались, данные параметры устанавливаютсця относительно Local-ной системы координат (Attached Image: image089.png ) :)

Включив данную систему координат, мы теперь можем на глаз (или методом проб и ошибок, как кому удобней) определить, каков предельно допустимый угол вращения кости по каждой из осей:

Attached Image: image109.png

Поскольку в данном примере я задумал сделать что-то типа пальцев, они не должны вращаться ни по какой оси, кроме локальной „X“, да и то на небольшой угол.

Ну, в таком случае и вводим эти параметры в ограничитель (в тот, у которого на рисунке выше угол цифрами помечен):

Attached Image: image182.png

Ну и поскольку для нашего урока одна из цепей должна быть повёрнута на 30° вбок, вводим в одну из рутовых костей следующий ограничитель:

Attached Image: image184.png

Так, всё вроде у нас пока идёт, как задумывали, осталосць только понять, как заставить кубик изменять размер нужной кости.

Выделяем одну из больших костей и применяем к ней ограничитель Copy Scale.

Возник вопрос — а что эта штука делает?

Э… ну, как явствует из названия, она устанавливает исходному объекту то же значение параметра Scale, какое имеет целевой объект.

То есть, мы просто присваиваем размер кубика размеру кости:

Attached Image: image115.png

Пробуем, смотрим, что получается:

Attached Image: image117.png

Так, а почему у нас при масштабировании большая кость растягивается так сильно?

Не порядок! Исправляем…

Накладываем на нашу кость ограничитель Limit Scale:

Attached Image: image119.png

Поскольку сгибаться наши пальцы будут тоже в диапазоне «от и до» — ставим значения параметров в соответствии с конкретными нуждами. :)

У имеющихсця в нашем распоряжении параметры следующие:

Attached Image: image121.png

Во! Вот теперь у нас имеется хитро съёжившаяся цепочка костей, которая приводится в движение посредством одного-единственного кубика. :)

Хотелось бы конечно ещё, чтобы кубик слушал наши мысли и перемещался туда, куда мы подумаем, но мечтать, как говориться — не вредно… :)

продолжение…
X________________________________________________x

Хто хочет - ищет способ, хто не хочет - ищет причину.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users