Простое позиционирование зрачка это конечно хорошо, но хочется чего-то лучшего. Ну что же, попробуем улучшить.
На рисунке ниже наведено то, с чего будем начинать.
Как видно в наличии лишь голова соникосвибогра состоящая из собственно головы (head, синий цвет), белка глаз (white, белый цвет, вырезан из сферы), двух зрачков (mesh_eye_L и mesh_eye_R, зеленого цвета) и арматуры (Armature). Арматура в свою очередь состоит из основной кости (root) и двух костей для управления зрачками (eye_k_L и eye_k_R). В данном случае зрачки привязаны к костям. То есть используется самый простой метод из рассмотренных выше.
Итак, суть проблемы.
Некрасиво, не так ли?
Для начала создадим мешевые ограничители для каждого полубелка (странное слово, но все же). Для этого выделим и скопируем меши головы и белка (
Shift + D, Enter), перенесем их на другой слой (
M, 2, Enter). Теперь перейдем на второй слой (
2). В данном примере на меши были наложены модификатор
Subsurf, которые нужно применить нажав
Apply.
На данный момент выделен белок. Добавим к нему модификатор
Boolean, настроим его на копию головы и выберем режим
Difference. Примечание: лучше для органики не использовать булевые модификаторы, но для примера вполне сойдет.
Применим данный модификатор (
Apply) и удалим уже не нужную копию меша головы. У нас останется меш соответствующий видимым частям белка.
Теперь необходимо избавится от краев, появившихся после усечения. Для этого добавим мешу модификатор
EdgeSplit.
У меша появилась резкая грань по периметру изгиба. Мне было достаточно значений по умолчанию, если у вас не так, то можете подобрать угол изгиба. Применим данный модификатор. Перейдем в режим редактирования, снимем выделения если они были и выделим только вершины кромки, для чего следует подвести к ней курсор и надавить
L.
Удалим выделенное. Выделим оставшиеся вершины и удалим дубликаты (
W, Remove Doubles)
Удалим правую (слева) половину вершин, часть вершин у середины, слегка уменьшим оставшуюся часть и сгладим острые углы. Для сравнения, первоначальный вариант окрашен.
Создадим копию (
Shift + D, Enter) и сделаем ее зеркальную по оси Х (
S, X, -1, Enter). Назовем меши mesh_kut_eye_L и mesh_kut_eye_R соответственно. Для демонстрации они окрашены в желтоватый цвет.
Что же, мешевые ограничители готовы.
Перейдем на слой с головой (
1). Выделим скелет, перейдем в режим редактирования и экструдируем две симметричные кости из костей eye_k_L(R). Они будут названы eye_k_L.001 и eye_k_R.001 соответственно. Переименуем их в eye_t_L и eye_t_R, отсоединим каждую (!) от родителя и выберем родителем кость root. Это ограничивающие кости, которые будут привязаны к мешевым ограничителям.
Создадим еще две кости (eye_ik_L и eye_ik_R) с родителем root и расположим их как на рисунке (при взгляде сверху они должны идти вдоль оси Y (бинокулярное зрение ведь), начало должно располагаться ближе к зрачкам и ниже центра, концы — совпадать с началом костей eye_t_L и eye_t_R соответственно). Это направляющие взгляда.
Перейдем в режим редактирования позы. Сначала настроем ограничители. Для кости eye_k_L добавим ограничитель
TrackTo, настроим следовать за костью eye_t_L и установим галочку на TargetZ, чтобы не было вращения лишний раз. Для правой стороны аналогично.
Для кости eye_t_L добавим ограничители:
-
Copy Location с настройкой на кость eye_ik_L, ползунок Head/Tale установите на 1.0;
-
Shrinkwrap с настройкой на меш mesh_kut_eye_L.
Для правой стороны аналогично.
Теперь при вращении костей eye_ik_L и eye_ik_К зрачки будут следовать за ними, но не будут выходить за пределы глазниц.
Вроде бы красиво, но хочиться еще большей простоты в управлении. Создадим еще кости, которые будут играть роль направляющих для зрения.
Кости названы соответственно центральная — root_eyes, боковые root_eyes_L и root_eyes_R.
Костям eye_ik_L и eye_ik_R установим ограничитель
TrackTo с настройкой на кости root_eyes_L и root_eyes_R соответственно.
Теперь наш свиборгосоник может смотреть в выбранном вами направлении или за выбранным объектом ну очень просто. Для этого достаточно переместить одну кость направления зрения в нужное вам положение (часть костей скрыта).
Примечание: при сильных поворотах взгляда дальний зрачок иногда спускается вниз, для компенсации подобного поведения достаточно наклонить кость root_eyes в соответствующую сторону, на рисунке выше это видно.
Простая анимация:
Для совсем ленивых файл в придачу (blender 2.65а)
-файл-