Разработка системы автоматизированного риппинга в пакете Autodesk Maya

Анализ методов и средств построения антропоморфных динамических моделей в задачах компьютерной графики. Языки программирования и системы скриптов. Рассмотрение доступных средств трехмерной графики и анимации. Разработка технической документации.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 5,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Дипломная работа

Разработка системы автоматизированного риппинга в пакете Autodesk Maya

Введение

Данная работа носит название «разработка системы автоматизированного риггина в пакете Autodesk Maya», целью работы становится разработка и внедрение в разработку такой системы. Процесс риггинга описывается такими известными авторами, как Тина О'хейли и Келли Мудок, авторами книг по компьютерной графики и частности риггингу, как трудоёмкий и длительный процесс, значит одной из целей данной работы будет сократить время, необходимое для создания и настройки такой системы.

Ещё одна цель, которая ставится в данной работе, внедрение разработанного программного решения в работу отдела в разработке. Во время прохождения производственной практики в компании EXBO, было выяснено, что в работе отдела нет готового решения, которое облегчило бы работу с пакетом трёхмерной графики Autodesk Maya. В связи с этим было принято решение разработать собственную систему риггинга. Рассматривался не только пакет Autodesk Maya, но и его аналоги. Выбор необходимого программного пакета описывается в первой главе данной работы «Анализ методов и средств построения антропоморфных динамических моделей в задачах компьютерной графики».

Следующая цель, стоящая в данной работе, это создание концепта разрабатываемой системы. Здесь необходимо учесть все требования, которые к ней применяются. Основная единица системы - скелет, а именно его виртуальная версия. Структурно все скелеты бывают разными, в зависимости от требований художника может меняться число суставов, не смотря на низкую схожесть с аналогом из реального мира. Необходимо определить требования к разрабатываемой системе, и описать такую структуру скелета, поделив её на блоки, каждый из которых раскрывает определённую цепь виртуальных костей. Так же необходимо составить концептуальный алгоритм программы, отражающий основные этапы в исполнении проектируемой системы и схему диалоги внутри и вне программы. Эти этапы описываются во второй главе «Построение концептуальной модели системы автоматизированного риггина в пакете Autodesk Maya».

После построения концептуального алгоритма, примерного описания хода работы программы, нужно переходить к построению алгоритма настоящего. Зная то, как протекает процесс построения системы, алгоритм можно поделить на несколько частей, каждая из которых описывает каждый этап в программе. Так же необходимо описать каждый из этих блоков, раскрывая структуру, максимально приближенную к той, которая будет программироваться непосредственно в программе. Разработка этого алгоритма описывается в главе три «Разработка алгоритмов системы автоматизированного риггинга в пакете Autodesk Maya».

Главная цель данной работы это разработка системы автоматизированного риггинга. Программирование производится согласно этапам из третьей главы. После завершения работ по программированию данной системы необходимо описать её работу в общем виде, так же привести все атрибуты и программные функции, которые были использованы в ходе разработки этой программы. Описание функций и атрибутов представлено в главе четыре «Разработка и реализация программных модулей проектируемой системы».

Для обеспечения правильности работы разрабатываемой системы её необходимо протестировать. Тестирование затрагивает не только работу самого алгоритма, созданного в четвертой главе, но и результат выполнения этого алгоритма. Проверка должна быть выполнена как для пустого прогона программы, без использования трёхмерной модели, так и для различных вариантов позы по умолчанию. Исследование результатов работы программы описано в пятой главе «экспериментальное исследование системы автоматизированного риггинга в пакете Autodesk Maya».

Так же необходимо описать системные требования разрабатываемой системы, привести перечень необходимых для разработки документов и составить руководство пользователя, которое подробно описывает процесс взаимодействия с программой, её инициализацию и настройку. Всё это описано в шестой главе «Разработка технической документации».

Глава 1. Анализ методов и средств построения антропоморфных динамических моделей в задачах компьютерной графики

1.1 Анализ доступных средств трёхмерной графики и анимации

В современных реалиях эволюции компьютерных технологий, присутствует высокая степень развития программного обеспечения. Следовательно, существует большое количество программных решений для обработки информации в идентичных вопросах разработки. Насыщенность рынка позволяет выбрать оптимальные пакеты с базовым набором функций необходимых конкретному пользователю. Немаловажным фактором является совместимость пакета с операционными системами, быстродействие, удобство интерфейса и стоимость.

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

1) Autodesk maya;

2) Autodesk 3ds max;

3) Maxon Cinema 4d;

4) Blender.

Будет рассматриваться функционал данных программ в задачах связанных с анимацией трёхмерных объектов. Согласно руководству пользователя Blender, основные операции, используемые в создании скелетной системы это «риггинг» - базовый термин используемый для описания добавления объектов-контроллеров на компоненты, простейшие субъекты трехмерного пространства обладающие атрибутами, преимущественно для анимации, и «скиннинг» - термин описывающий процесс задания деформации трёхмерного объекта костной системой. Риггинг в комплексе включает в себя следующие этапы:

1) Редактирование базового меша (трёхмерной модели);

2) Создание и модификация скелета;

3) Методы и алгоритмы базового скиннинга;

4) Инструменты редактирования скиннинга;

5) Инструменты создания и управления ригом.

Так как в рамках ВКР разрабатывается система автоматизированного риггинга, то сравнивать будем готовые решения пакетов, названных выше. Для этих пакетов сравниваемые системы будут следующими:

- HumanIK для пакета Autodesk Maya;

- Biped и CAT для пакета Autodesk 3ds max;

- IKMAX для пакета Maxon Cinema 4d;

- Rigify для пакета Blender.

1.2 HumanIK

Стандартное средство, предлагаемое пакетом Autodesk Maya, это система риггинга носящая название HumanIK. HumanIK впервые был представлен в 2012 году, с выходом в свет переосмысленной Maya 2012.

HumanIK предлагает спектр возможностей по созданию скелета и контролирующего рига, а также «пикер», подпрограмму призванную облегчить взаимодействие с частями рига, их выделением, просмотром компонентов состояния и модификации атрибутов. Содержит в себе функционал для работы с «мокапом», особыми анимационными данными, представляющими из себя n массивов с информацией о положении костей, где n - количество кадров в анимации, получаемыми путем захвата движения с реальных актеров, являющимися экспертами в каких-либо движениях или работниками студии, одетых в специальный костюм, записывающий анимацию, и «ретаргетинга», переносом анимации с одного скелета на другой, зачастую несовместимый с первым.

Рисунок 1.1 - Интерфейс HumanIK

Но HumanIK имеет ряд недостатков, которые не удовлетворяют потребности разработчика-аниматора при работе с некоторыми трёхмерными моделями, а именно, моделями отличными от антропоморфных. Главным образом сказывается невозможность добавления дополнительных костей к основному скелету, созданному алгоритмом. Так же необходимым фактором работы с HumanIK является положение туловища в «т-позе» или «а-позе», стойке, при которой ноги находятся на ширине плеч, а руки расставлены в стороны под углом 90 или 45 градусов. Что делает невозможным настройку рига для скелета схожего с человеческим, например, кошки или собаки. Так же закрытая система взаимодействия костей и рига делает невозможным внедрение дополнительной математической логики, скриптов или связи узлов атрибутов компонентов через промежуточные действия с операциями преобразования величин, которая может пригодиться при анимировании дополнительных объектов, по типу волос или лица.

1.3 Biped

Biped, он же character studio, скелет предлагаемый пакетом 3ds max. До 2012 года представлялся отдельным платным плагином, но после 2012 года находится в пакете по умолчанию, в собственной колонке motion.

Biped предлагает широкие возможности по созданию гуманоидных скелетов с большим количеством настроек, например:

- изменение числа пальцев;

- изменение числа фаланг пальцев;

- изменение числа коленных суставов;

- добавление хвоста;

- добавление «твист» костей.

Так же имеющийся функционал позволяет сохранять позы, созданные при анимировании, процедурно генерировать анимации ходьбы, по заданным «следам», поддерживает кватернион и эйлеровую систему координат, имеет встроенный редактор кривых, позволяет смешивать анимационные клипы при помощи стандартных средств, имеет полный функционал инверсной и прямой кинематики. Поддерживает изменение контроллера позиции/ротации объекта скелета в пространстве. Имеет минималистичный, но приятный интерфейс, рисунок 1.2.

В то же время у такой замечательной и гибкой системы как biped есть большое количество недостатков, которые, в нашем случае являются критическими. Остановимся на них подробнее. Самый серьёзный недостаток, которым обладает Biped это собственный редактор кривых, который не позволяет редактировать кривые Безье, отвечающие за поведение анимации в отрезки времени, стандартными методами. В случае с эйлеровой системой координат, появляется возможность редактировать кривые некоторых объектов, но не всех. В случае с кватернионом, возможность редактировать кривые отсутствует вовсе. Слабая возможность добавления дополнительных костей, которые будут являться частью скелета, присутствует возможность добавить два хвоста и два помощника на кисти руки. Невозможность удалять конечности или конкретные части скелета является большой проблемой, так как скрыть эти объекты можно, но из иерархии скелета их не выкинешь, и приходится следить, чтобы эти объекты не влияли на то, на что влиять не должны, в некоторых ситуациях это довольно не очевидно.

Рисунок 1.2 - Интерфейс Biped

1.4 CAT

Среди всех представленных систем, CAT является самым гибким в настройке, и имеет самую богатую библиотеку существ, а точнее их скелетов, которые можно использовать в качестве рига, так же имеет удобный функционал переключения различных параметров, которые можно выставить самостоятельно. Имеет поддержку симуляции мускулов, необходимую для более качественной деформации модели по средствам натягивания меша на мышцы. Возможность работы с «мокапом» и последующей его обработкой. Библиотека представляет большой выбор стандартных вариаций скелетов, рисунок 1.3:

- гуманоид;

- парнокопытные;

-дракон;

-арахнид и т.д.

Рисунок 1.3 - Примеры скелетов CAT

Интерфейс позволяет создавать и изменять кости и их зависимости, в режиме редактирования, создавать и изменять анимацию, находящуюся в слоях, смешивать ключи из слоёв для обработки или генерации анимации, так же сохранять и загружать позы. Интерфейс и скелет представлены на рисунке 1.4.

Рисунок 1.4 - Интерфейс CAT

Однако использование слоёв для создания анимации может не всем показаться удачной идеей, по неосторожности можно переписать подобные слои, или случайно допустить их смешивание. Наличие переключателя начала записи ключей анимации способно привести к потере базовых кадров/набросков.

1.5 IKMAX

IKMAX - система риггинга разрабатываемая компанией «3d to all» поставляется как отдельный плагин для пакета Cinema 4d.

IKMAX имеет очень простой интерфейс, однако в нем содержатся все функции, предоставляемые плагином. Плагин предлагает пройти небольшую цепочку действий по установке суставов внутрь модели, путём выделения вершин полигональной модели в соответствии с маркерами, показанными на рисунках, которые возникают в процессе прохождения алгоритма. После расстановки всех суставов, программа предложит создать скелет и окрасить его. Далее необходимо привязать скелет к мешу, после этого можно будет создать опорный риг. Так же имеются некоторые функции для более удобного взаимодействия с мешем. Интерфейс программы представлен на рисунке 1.5.

Рисунок 1.5 - Интерфейс IKMAX.

За простым и понятным интерфейсом скрывается сильно урезанный функционал, если сравнивать с его конкурентами, описанными выше. Полное отсутствие прямой кинематики может сильно сказаться на удобстве аниматора при работе с данной системой. Невозможность добавления дополнительных твист-костей, дополнительных цепей костей, необходимых для более правильной деформации скручивания, средствами программы доставляет дискомфорт. Метод расставления суставов выполнен по типу средней точки фигуры, которая зависит от точности, с которой пользователь будет выбирать вершины. Точность расстановки суставов от этого страдает очень сильно.

1.6 Rigify

Rigify - плагин для blender, созданный для настройки скелета, скиннинга и рига для трёхмерных моделей. Обладает стандартным функционалом других трёхмерных пакетов, однако изначально в блендере подобного инструментария нет. Содержит в себе скелет и алгоритм создания рига для этого скелета. Вся настройка происходит вручную, однако создание рига выполняется автоматически. Так же содержит в себе редактор весов скиннинга, параметров деформации модели костями. Интерфейс Rigify представлен на рисунке 1.6.

Вероятно хорошая система риггинга не может быть использована в целях разработки видеоигровых приложений из-за бесплатности пакета Blender. Из-за полной бесплатности, Blender лишён лицензий на самые важные форматы содержащие информацию о трехмерных моделях и их риггинге. Любая попытка выйти с контентом из блендера гарантированно столкнётся с отсутствием поддержки необходимых форматов.

Рисунок 1.6 - Интерфейс Rigify.

Существуют способы экспорта при помощи самодельных программ, но современные популярные видео-движки рассчитаны на работу с лицензированными форматами по типу FBX.

1.7 Базовые костные системы

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

Рисунок 1.7 - Кости в 3ds max

Рисунок 1.8 - Кости в Maya

Рисунок 1.9 - Кости в Cinema 4d

Делая вывод о непригодности Blender, из приведённых выше доводов, рассматриваться скелет и программное обеспечение Blender далее не будет.

Сравнивая скелеты трёх программ будем рассматривать следующие пункты:

1) Простота создания;

2) Простота настройки;

3) Простота взаимодействия.

3ds max имеет довольно сложный процесс создания первичных костей, несмотря на удобный инструмент создания костей, процесс установки костей является довольно неудобным из-за отсутствия возможности «примагнитить» кость к определённой точке. Однако настроить готовый скелет под модель задача гораздо проще, 3ds max предоставляет возможность редактировать положение костей из изометрического отображения, добавлять и дробить кости на необходимых точках. Однако возвращать положение костей в изначальное состояние задача очень сложно выполнимая, так как отсутствует возможность настроить «оффсеты» - допустимые отступы, для каждой из костей.

Maya, в свою очередь, имеет удобное создание костей, методом установки «суставов» в нужных местах. Дальнейшая настройка происходит гораздо сложнее, так, например, для создания дополнительной цепи костей внутри существующей кости будет необходимо собирать её отдельно и далее вставлять. После настройки скелета с ним довольно просто взаимодействовать, в любое время можно вернуть его в изначальное положение нажатием одной клавиши.

Cinema 4d имеет лучшую систему создания скелета, из плюсов можно выделить возможность создавать кости зеркально, а значит не придётся в будущем отзеркалить их вручную, так же имеется наглядная иерархия всех костей и быстрый доступ к её редактированию. Настройка готового скелета также не вызывает особых трудностей, функционал имеет функции обоих пакетов, описанных выше. Со взаимодействием снова возникают проблемы, в основном из-за недостаточно проработанной системы сохранения начальной позы скелета.

1.8 Языки программирования и системы скриптов

В процессе разработки автоматизированной системы риггинга не обойтись без использования программного кода, который необходимо писать с нуля. Каждый из названных пакетов трёхмерной графики имеет поддержку программирования на встроенных языках. Необходимо оценить удобство каждого из этих языков, его простоту и доступность руководств пользователя.

3ds max использует собственный язык, который называется MAXScript. Этот язык использует собственную структуру и синтаксис, с его помощью довольно сложно производить отладку написанного кода.

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

Cinema 4d предлагает использовать свои библиотеки для языка Python, на котором можно составлять скрипты. К сожалению, не имеет такого же функционала как Maya.

Ниже приведена таблица, в которой представлено сравнение пактов по трём признакам, по пятибалльной шкале, где 1-очень плохо, 5-очень хорошо. Сравнение проводится на основе выводов, сделанных по описанию этих системы, представленных выше.

Таблица 1.1 - сравнение программных пакетов

Удобство скелета

Удобство языка

Потенциал скиннинга

Итог

3d max

4

3

1

8

maya

5

4

5

14

Cinema 4

3

4

4

11

Подводя итоги анализа, исходя из комплексного сравнения самых популярных пакетов трёхмерной графики, учитывая все плюсы и минусы каждого программного обеспечения, можно сделать вывод, что оптимальным решением и программной средой, для разрабатываемой системы автоматизированного риггинга станет пакет Autodesk Maya. В качестве конфигурации пакета была выбрана последняя, на момент написания ВКР, версия Autodesk Maya 2019, полная версия, студенческая лицензия.

Глава 2. Построение концептуальной модели системы автоматизированного риггинга в пакете Autodesk Maya

В основе всей проектируемой системы лежит понятие скелета. Скелет, в компьютерной анимации, имеет прямое отношение к скелету реальных существ. Цель разрабатываемой системы - антропоморфные модели, значит и рассматриваться будет реальный скелет, на основе которого будет создаваться виртуальный. Скелет человека изображён на рисунке 2.1.

Рисунок 2.1 - Скелет человека

Основные части, которые необходимо изучить это:

1) Тазобедренный сустав;

2) Коленные суставы;

3) Плечевые суставы;

4) Суставы локтей;

5) Суставы кистей;

6) Позвонки шейного отдела;

7) Позвоночник.

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

Рисунок 2.2 - Пример виртуального скелета

Как было отмечено выше, вставлять суставы необходимо в соответствии с реальным прототипом, анатомическая модель представлена на рисунке 2.3.

Рисунок 2.3 - Реальное расположение суставов

Имея опыт вставки виртуальных скелетов в трёхмерные модели можем прикинуть, подходит ли структура, выбранная для разработки автоматизированной системы риггинга. Для этого воспользуемся трёхмерными моделями, имеющимися в собственной библиотеке, которая была составлена при прохождении производственной практики. Модель соответствует анатомии и физиологии реального человека, поэтому ошибок, связанных с неточностью трёхмерной модели, не будет. Вставленный скелет показан на рисунке 2.4.

Рисунок 2.4 - Трёхмерная модель со скелетом

Теперь необходимо проверить, будет ли такая установка суставов соответствовать правдоподобности сгибания, будем рассматривать плечевой сустав, локтевой сустав, тазобедренный сустав и коленный сустав. Здесь нам придёт на помощь один из следующих этапов риггинга - скиннинг. Для начальной настройки воспользуемся одним из алгоритмов - geodesic voxel. И изучим примерную деформацию трёхмерной модели в обозначенных местах, рисунки 2.5-2.6.

Рисунок 2.5 - Сгиб локтя и в плече

Рисунок 2.6 - Сгиб тазобедренного сустава и колена

Из полученных результатов делаем вывод, что подобная структура виртуального скелета полностью подходит нашим требованиям при разработке системы автоматизированного риггинга будем использовать эту структуру скелета.

Рассмотрим структуру скелета подробнее. Она представляет собой упрощённую модель реального скелета человека, так, позвоночник человека состоит из большого количества позвонков, а используемый скелет наоборот, имеет всего 3 «позвонка». Так же на упрощение структуры уходит стопа, пренебрегаются все пальцы ног, остаётся только один сустав, который отвечает за сгиб всех пальцев одновременно.

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

Основную структуру скелета можно разбить на 3 основные части: верхнюю часть тела, спину и нижнюю часть тела.

Рисунок 2.7 - Основная структура скелета

«Спина» включает в себя два элемента, которые являются позвонками скелета.

Рисунок 2.8 - Раскрытые структуры «спина»

Теперь рассмотрим узел «верхняя часть тела», он будет более комплексным.

Рисунок 2.9 - Раскрытие структуры «верхняя часть тела»

Здесь появляются ещё две сложные структуры - руки. Они имеют идентичную структуру, значит рассматривать их будем как одно целое.

Рисунок 2.10 - раскрытие структуры «рука»

«Рука» включает в себя ещё одну сложную структуру - «кисть».

Рисунок 2.11 - Раскрытие структуры «кисть».

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

Рисунок 2.12 - Раскрытие структуры «нижняя часть тела»

И раскроем узлы ног, которые могут рассматриваться так же, как и «руки».

Рисунок 2.13 - Раскрытие структуры «нога»

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

Концептуальная модель описывается на рисунке 2.14.

Рисунок 2.14 - Концептуальная модель программы

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

Внешний уровень описывает данные пользователя, с которыми он взаимодействует по ходу алгоритма. Определяются данные, доступ к которым будет заблокирован для увеличения быстродействия интерфейса пользователя или программы. Рабочей средой пользователя является оболочка пакета трёхмерной графики, в частности окно просмотра трёхмерного пространства.

Внутренний уровень описывает процессы протекающие внутри алгоритма. Совокупности данных, имеющихся в программе. Формируются временные записи, называемые внутренними. Внутренняя модель здесь - процедуры программы, выполняемые непосредственно пакетом трёхмерной графики.

Глава 3. Разработка алгоритмов системы автоматизированного риггинга в пакете Autodesk Maya

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

Весь алгоритм настройки можно разить на несколько этапов:

1) Инициализация программы;

2) Создание базового скелета;

3) Настройка базового скелета;

4) Вычисление необходимых величин;

5) Создание контроллеров;

6) Установка кинематики;

7) Создание переключателей;

8) Финальные установки.

На основе существующих процедур программной среды, необходимо построить алгоритм для создаваемой системы, который будет выполняться автоматически. Но во время некоторых этапов алгоритм приостанавливается, давая пользователю возможность отредактировать предыдущие этапы, для получения необходимого результата. Работу алгоритма можно представить в виде блок схемы, они имеет линейную структуру, так как отображает работу отдельных подпрограмм, которые выполняются друг за другом и полностью зависят от предыдущего этапа. В этапы алгоритма, выполняющихся автоматически, невозможно ввести изменения, что защищает алгоритм от вмешательства пользователя, что обеспечивает устойчивость внутренних данных от искажения, и этим можно обеспечить правильную работу программы на всей области определения. Блок схема алгоритма представлена на рисунке 3.1.

Рисунок 3.1 - блок-схема работы блоков программы

Каждый из блоков, выполняемых автоматически, так же можно представить в виде блок схемы, так как они включают в себя ряд действий, так же выполняемых одновременно. Разложим их и опишем то, что в них выполняется.

Рисунок 3.2 - Блок-схема «создание базового скелета»

Здесь описывается порядок создания виртуального скелета, от создания суставов, до связи в граф.

Рисунок 3.3 - Блок-схема «вычисление необходимых величин»

Здесь происходит получение некоторых атрибутов определённых костей и вычисляются переменные необходимые для построения рига.

Рисунок 3.4 - Блок-схема «создание контроллеров»

Здесь создаются кривые основываясь на переменных, полученных в предыдущем блоке.

Рисунок 3.5 - Блок-схема «установка кинематики»

Здесь происходит выбор цепей для создания линии инверсной кинематики.

Рисунок 3.6 - Блок-схема «создание переключателей»

Здесь происходит вставка дополнительных атрибутов в контроллеры и установление связей между компонентами разных объектов.

Рисунок 3.7 - Блок схема «финальные установки»

Здесь происходить финальная установка готового рига, удаление контроллеров «пустышек» и временных объектов.

Глава 4. Разработка и реализация программных модулей проектируемой системы

Опираясь на концептуальную модель и алгоритм системы, разрабатываются процедуры программы. Каждая такая процедура описывает один из этапов алгоритма программы.

Первым этапом программы является «создание базового скелета». Главные функции пакета, используемые на этом этапе это joint и mirrorJoint, они позволяют использовать функционал программы необходимый для взаимодействия с виртуальными суставами.

Рисунок 4.1 - Часть блока «создание базового скелета»

Здесь создаются виртуальные суставы и выставляется их позиция, так же определяются отношения родительский объект - дочерний объект.

Далее пользователю предлагается настроить новый скелет в соответствии с имеющейся трехмерной моделью.

Так как пользователь настраивает скелет так, как он хочет, в атрибутах могут появиться значения, которые, технически, могут исказить дальнейший ход программы. Соответственно необходимо выставить эти атрибуты в отступ, значит понадобятся функции makeIdentity и joint с параметрами для реориентации суставов.

Рисунок 4.2 - Применение изменений пользователя

Помимо исправления изменения пользователей, в данном блоке производится отражение изменений на другую сторону скелета.

Следующий блок «вычисление необходимых величин» отвечает за сбор данных и использование в вычислении атрибутов. Все используемые атрибуты представлены в таблице 4.1.

Таблица 4.1 - атрибуты программы

Имя атрибута

Тип данных

Расшифровка

Семантика

1

2

3

4

$pv

Float

Pelvis value

Значение таза

Определяется ширина таза

$pva

Float

Pelvis value absolute

Значение таза по модулю

Определяется модуль значения $pv

$rv

Float

Root value

Ширина массы

Определяется ширина главного контроллера

$lh

Float

Leg height

Высота ноги

Определяется длинна бедра

$lha

Float

Leg height absolute

Высота ноги по модулю

Определяется модуль значения $lh

$lf

Float

Length foot

Определяется расстояние от колена до голеностопного сустава

$pvah

Float

Pelvis value absolute half

Половина значения таза по модулю

Определяется половина значения $pva

$ph

Float

Point height

Высота точки

Определяется высота ступни

$pha

Float

Point height absolute

Высота точки по модулю

Определяется модуль значения $ph

$ah

Float

Arm height

Длина руки

Определяется длина плеча

$aha

Float

Arm height absolute

Длина руки по модулю

Определяется модуль значения $ah

$eh

Float

Elbow height

Высота локтя

Определяется длина предплечья

$eha

Float

Elbow height absolute

Высота локтя по модулю

Определяется модуль значения $eh

$hh

Float

Head height

Высота головы

Определяется высота посадки головы

$hha

Float

Head height absolute

Высота головы по модулю

Определяется модуль значения $hh

$hch

Float

Hand control height

Высота контроллера руки

Определяется радиус контроллера руки

$hcha

Float

Hand control height absolute

Высота контроллера руки по модулю

Определяется модуль значения $hch

Следующий блок «создание контроллеров» содержит в себе процедуру отрисовывающую набор кривых, для отражения контроллеров, используемых в визуальном представлении отношений между компонентами разрабатываемой системы.

Рисунок 4.1 - Отрисовываемая система контроллеров

Главная функция пакета, с которой проводится работа на данном этапе, это curve.

Следующий блок «создание кинематики» подразумевает создание прямых и инверсных кинематических отношений в цепях костей виртуального скелета. В этом помогают контроллеры, созданные в предыдущем блоке. Для установки прямой кинематики воспользуемся различными родительски-дочерними отношениями, среди которых отношения родительского следования, позиционное следование и ориентационное следование. Для которых, соответственно используются функции пакета, такие как doCreateParentConstraintArgList, doCreateOrientConstraintArgList, doCreatePointConstraintArgList.

Для инверсной кинематики нам понадобятся иерархические решатели, их можно создать выбрав начало и конец иерархической цепи, и воспользоваться командой ikHandle. После этого новые контроллеры так же необходимо привязать к графическим, для этого необходимо воспользоваться функциями, которые использовались при создании прямой кинематики.

Для более гибкой настройки разрабатываемой системы понадобятся дополнительные атрибуты на некоторых из объектов, создать такой атрибут возможно при помощи функции addAttr. Используя параметры этой функции можно настраивать типы данных и граничные значения создаваемых атрибутов.

Для финальных установок потребуется сгруппировать объекты спеиальным образом и удалить временные или ненужные объекты, для группировки служит функция parent, а для удаления delete.

Как было упомянуто выше, процедуры имеют параметры, необходимые для выполнения определенных частей этих функций, применимо к отдельным объектам, требующим разные операции. Воспользуясь «MEL scripting a Character Rig in Maya» и «MEL scripting for MAYA animators» опишем эти параметры.

Таблица 4.2 - описание функций

Функция

Семантика функции

Фараметр

Семантика параметра

1

2

3

4

select

Выбор компонентов находящихся внутри сцены

-r

Заменяет текущую выборку объектов

-add

Добавляет объекты в выборку

-all

Выбирает все объекты

-ado

Выбирает все объекты допустимые для удаления

-cl

Очищает выборку

-hi

Выбирает все объекты в иерархии вниз

joint

Функция для создания и редактирования суставов

-p

Выставление позиции по трем координатам

-n

Присваивание имени

-oj

Реориентирование на дочерние суставы

-sao

Вторичная ось ориентации

-szo

Игнорирование ориентации на масштаб

-sym

Опция симметрии

mirrorJoint

Определение симметрии скелета

-mxy

Отражение от плоскости XY

-mxz

Отражение от плоскости XZ

-myz

Отражение от плоскости YZ

-mb

Отражение параметров суставов

-sr

Поиск и замена имен на создаваемых костях

makeIdentity

Функция сброса имеющихся атрибутов в отступ

-a

Параметр применения

-t

Применение к позиции

-r

Применение к повороту

-s

Применение к масштабу

setAttr

Присвоение атрибуту значения

parent

Добавляет выбранный объект в иерархию

-w

Выводит объект в верхний уровень иерархии

doCreateParentConstraintArgList

Имитирует отношение родительский дочерний объект

doCreateOrientConstraintArgList

Устанавливает следование по позиции

doCreatePointConstraintArgList

Устанавливает следование по повороту

group

Группирует объекты

-n

Ввод имени создаваемой группы

-w

Создает группу вне иерархии

-p

Создает группу внутри иерархии

-em

Создает пустую группу

curve

Отрисовывает кривые

-d

Определяет угол между вершинами кривых

-n

Задает имя кривой

-p

Устанавливает точку в координатах

duplicate

Создает дубликат объекта

-rr

Создает дубликат по главному объекту иерархии

-n

Задаем имя дубликата

delete

Удаляет объект

addAttr

Создает атрибут в объекте

-ln

Задает название атрибута

-sn

Задает имя атрибута

-dv

Задает начальное значение

-dt

Задает тип переменной

-min

Минимальное значение

max

Максимальное значение

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

Глава 5. Экспериментальное исследование системы автоматизированного риггинга в пакете Autodesk Maya

Для исследования надёжности разработанной системы проведем процесс настройки для двух разных трёхмерных моделей. Первая из них будет находится в «Т-позе», состоянии при котором руки разведены в стороны, а ноги находятся на ширине плеч, и «А-позе», здесь руки подняты на 45 градусов и ноги стоят немного шире уровня плеч.

Исследуем модель в «Т-позе» с примененным ригом.

Рисунок 5.1 - Трёхмерная модель в «Т-позе» с ригом

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

Рассмотрим трёхмерную модель в «А-позе».

Рисунок 5.2 - Трёхмерная модель в «А-позе» с ригом

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

Глава 6. Разработка технической документации

6.1 Системные требования

-Операционная система Microsoft windows 7 или старше;

-x64 процессор Intel или AMD;

-4ГБ озу;

-Autodesk Maya 16 версии или старше.

6.2 Руководство пользователя

Инициализация программы:

Для создания вкладки с программой необходимо распаковать скрипт shelf_autorigger.mel по пути “documents/maya/%maya version%/prefs/shelves”. После этого на панели инструментов появится новая вкладка «autorigger».

Рисунок 6.1 - Полка с кнопками управления

На панели находится пять кнопок, каждая из которых запускает определённую процедуру.

Нажмите на кнопку «create» чтобы создать базовую структуру скелета, Рисунок 6.2. Структуру необходимо отредактировать соответственно с трёхмерной моделью, которую нужно подготовить. Редактирование может происходить любым способом, существующую структуру можно вращать и двигать её структурные блоки, либо суставы по отдельности. Редактирование необходимо осуществлять на левой стороне скелета, узнать сторону можно по префиксу, где “l_” означает левую сторону, а “r_” правую.

Рисунок 6.2 - базовая структура

Нажмите на кнопку «mirror» чтобы применить изменения, сделанные на левой стороне, на правую, обратите внимание, что при этом все измененные данные, на левой стороне перейдут в «отступ» для более корректного применения операции симметрии на правую сторону скелета. Обратите внимание, что данные этап позволяет проводить дальнейшие изменения скелета, и кнопка «mirror» может быть использована повторно.

Нажмите на кнопку «hand» для создания кисти на левой стороне скелета. Отредактируйте положение кисти и пальцев на ней с помощью любых инструментов вращения и перемещения.

Нажмите на кнопку «mhand» для создания симметричной кисти на правой стороне скелета.

Нажмите на кнопку «rig it» для начала процесса риггинга. В ходе этого процесса будут созданы контроллеры для прямой и инверсной кинематики, так же дополнительные контроллеры для спины и головы.

После завершения процесса риггинга, новая система готова к работе, для переключения между режимами кинематики зайдите в корневой контроллер «root_ctrl» и используйте атрибуты ik/fk с соответствующими префиксами.

6.3 Перечень используемых документов

1) Пакет трёхмерной графики Autodesk Maya;

2) Язык программирования Python версии 3.6;

3) Язык программирования MEL;

4) Текстовый редактор Notepad++.

Заключение

В ходе выполнения данной работы были достигнуты все поставленные цели. Была изучена вся необходимая литература для разработки системы. Проведено сравнение доступных пакетов трехмерной графики, изучены их достоинства и недостатки, и на основе полученных данных проведены сравнения этих пакетов. Исходя из этого был выбран пакет, полностью удовлетворяющий требованиям, поставленным в начале разработки/

Далее были построены концептуальные модели скелета и структуры программы. При этом были учтены требования, предъявляемые к виртуальным скелетным системам в современных реалиях компьютерной графики, была выбрана максимально простая, при условиях достаточности его структуры для потребностей пользователей. Структура программы была максимально упрощена для большей эффективности и скорости работы программы, так же была произведена поверхностная оптимизация концептуального алгоритма.

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

В четвертой главе была выполнена разработка программы в соответствии с алгоритмом, было выполнено разбиение программы на процедуры и внедрение их в интерфейс программы в качестве кнопок, находящихся на «полках» с инструментами. Так же были подготовлены файлы к переносу на другие компьютеры на которых установлено программное обеспечение Autodesk Maya.

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

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

Данная система полностью удовлетворяет требованиям, которые были предъявленные перед началом разработки. Полученные в ходе разработки знания имеют практическую значимость в профессии аниматора/риггера. Разработанная система будет использована на практике при разработке контента для видео-игр.

Список использованных источников

1) Мараффи Х. MEL Scripting a Character Rig in Maya / Х. Мараффи. - М.: Peachpit Press, 2010. - 333 с.

2) Вилкинс М.Р. MEL Scripting for Maya Animators / М.Р.Вилкинс, К.Казмер. - М.: Elsevier, 2005. - 552 с.

3) О'хейли Т. Rig it Right! Maya Animation Rigging Concepts / Т. О'хейли. - М.: Taylor & Francis, 2013 - 384 c.

4) Мурдок Л. Body Language: Advanced 3D Character Rigging / Л.Мурдок, Э.Аллен, Д.Фонг, А.Сидвэл - М.: John Wiley & Sons, 2011 - 395 c.

5) Ричи К. The Art of Rigging / К. Ричи, Д.Келлери, К.Бири. - M.: CG Toolkit, 2005 - 251 c.

6) Родригез Д. Animation Methods - Rigging Made Easy / Д. Родригес. - М.: CreateSpace, 2013 - 172 c.

Кларк Б. Ispired 3D Advanced Rigging and Deformations / Б. Кларк. - Course Technology, 2005 - 288 c.

Приложение А

//select root;

delete;

select -cl ;

joint -p 0 0 0 -name "root" ;

joint -p 0 43 0 -name "pelvis" ;

joint -p 0 47.5 0 -name "spine_0" ;

joint -p 0 52.1 0 -name "spine_1" ;

joint -p 0 58.7 0 -name "spine_2" ;

joint -p 0 67.8 0 -name "neck" ;

joint -p 0 73 0 -name "head" ;

joint -p 0 81.7 0 -name "head_nub" ;

select -r spine_2 ;

joint -p 1.7 68 0 -name "l_clavicle" ;

joint -p 7.7 68 0 -name "l_uparm";

joint -p 21 68 0 -name "l_forearm";

joint -p 36 68 0 -name "l_hand_proxy" ;

joint -p 38 68 0 -name "l_hand_nub" ;

select -r pelvis;

joint -p 4 42.3 0 -name "l_thigh" ;

joint -p 4 22.9 0 -name "l_calf" ;

joint -p 4 3.2 0 -name "l_foot" ;

joint -p 4 -0.18 6 -name "l_toe" ;

joint -p 4 -0.18 8 -name "l_toe_nub" ;

select -r l_thigh ;

mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "l_" "r_";

select -r l_clavicle ;

mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "l_" "r_";

select -cl;

//mirrorBehavior

select -r root ;

select -hi;

makeIdentity -r true -a true;

joint -e -oj xyz -secondaryAxisOrient xup -ch -zso;

select -r l_thigh;

parent -w;

joint -e -oj yzx -secondaryAxisOrient xup -ch -zso;

select -r l_thigh;

select -tgl pelvis;

parent;

select -r r_clavicle;

delete;

select -r r_thigh;

delete;

select -r l_thigh ;

mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "l_" "r_";

select -r l_clavicle ;

mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "l_" "r_";

select -cl;

//hand

joint -p 0 0 0 -name "l_hand";

joint -p -1.33 0 0.7 -name "l_thumb_dis";

joint -p -2.36 0 2.1 -name "l_thumb_mid";

select -r l_hand;

joint -e -oj xyz -secondaryAxisOrient yup -ch -zso;

setAttr "l_thumb_dis.rotateX" 90;

select -r l_thumb_dis;

select -r l_thumb_mid;

joint -p -3.1 0 3.1 -name "l_thumb_end";

joint -p -3.8 0 4.2 -name "l_thumb_nub";

select -r l_hand;

joint -e -oj xyz -secondaryAxisOrient yup -ch -zso;

select -cl;

select -r l_hand;

joint -p -1.19 0 3.82 -name "l_index_dis";

joint -p -1.46 0 5.6 -name "l_index_mid";

joint -p -1.6 0 6.8 -name "l_index_end";

joint -p -1.8 0 7.9 -name "l_index_nub";

select -cl;

select -r l_hand;

joint -p -0.1 0 4 -name "l_middle_dis";

joint -p -0.13 0 6.1 -name "l_middle_mid";

joint -p -0.16 0 7.7 -name "l_middle_end";

joint -p -0.17 0 8.7 -name "l_middle_nub";

select -cl;

select -r l_hand;

joint -p 0.8 0 3.7 -name "l_ring_dis";

joint -p 0.9 0 5.5 -name "l_ring_mid";

joint -p 1 0 7.1 -name "l_ring_end";

joint -p 1 0 8.1 -name "l_ring_nub";

select -cl;

select -r l_hand;

joint -p 1.7 0 3.25 -name "l_pinky_dis";

joint -p 1.9 0 4.8 -name "l_pinky_mid";

joint -p 2.06 0 6 -name "l_pinky_end";

joint -p 2.1 0 6.7 -name "l_pinky_nub";

select -cl;

select -r l_hand;

joint -e -oj xyz -secondaryAxisOrient yup -ch -zso;

select -cl;

select -r l_thumb_dis l_index_dis l_middle_dis l_ring_dis l_pinky_dis ;

parent -w;

select -r l_hand ;

setAttr "l_hand.jointOrientY" -90;

select -r l_thumb_dis l_index_dis l_middle_dis l_ring_dis l_pinky_dis ;

parent l_thumb_dis l_hand ;

parent l_index_dis l_hand ;

parent l_middle_dis l_hand ;

parent l_ring_dis l_hand ;

parent l_pinky_dis l_hand ;

select -r l_hand_proxy ;

select -tgl l_hand ;

doCreateParentConstraintArgList 1 {"0","0","0","0","0","0","0","0","1","","1" };

select -r l_hand_parentConstraint1 ;

delete;

makeIdentity -apply true -rotate true l_hand;

parent l_hand l_forearm ;

select -r l_hand_proxy ;

delete;

//mirrorhand

select -r r_clavicle ;

delete;

select -r l_clavicle ;

mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "l_" "r_";

select -cl;

//find leg distace

float $pv = `getAttr l_thigh.translateY`;

float $pva = `abs $pv` *2;

float $rva = `abs $pv` *2.5;

//create pelvis curve

curve -d 0 -p (-($pva)) 0 (-($pva)) -p (-($pva)) 0 (($pva)) -p (($pva)) 0 (($pva)) -p (($pva)) 0 (-($pva)) -p (-($pva)) 0 (-($pva)) -name "pelvis_ctrl";

group -n pelvis_ctrl_grp pelvis_ctrl;

curve -d 0 -p (-($rva)) 0 (-($rva)) -p (-($rva)) 0 (($rva)) -p (($rva)) 0 (($rva)) -p (($rva)) 0 (-($rva)) -p (-($rva)) 0 (-($rva)) -name "root_ctrl";

group -em -name root_ctrl_grp;

parent root_ctrl root_ctrl_grp;

parent pelvis_ctrl_grp root_ctrl ;

//apply position

select -r pelvis ;

select -add root_ctrl_grp ;

doCreateParentConstraintArgList 1 {"0","0","0","0","0","0","0","0","1","","1" };

setAttr "root_ctrl_grp.rotateAxisZ" 90;

select -r root_ctrl_grp_parentConstraint1 ;

delete;

//spine loop

for($i=0; $i<3; ++$i)

{

curve -d 1 -p (-($pva)) 0 (-($pva)) -p (-($pva)) 0 (($pva)) -p (($pva)) 0 (($pva)) -p (($pva)) 0 (-($pva)) -p (-($pva)) 0 (-($pva)) -name ("spine_" + $i + "_ctrl");

group -n ("spine_" + $i + "_ctrl_grp") ("spine_" + $i + "_ctrl");

if ($i>0)

{

parent ("spine_" + $i + "_ctrl_grp") ("spine_" + ($i - 1) + "_ctrl");

}

select -r ("spine_" + $i) ;

select -add ("spine_" + $i + "_ctrl_grp") ;

doCreatePointConstraintArgList 1 { "0","0","0","0","0","0","0","1","","1" };

pointConstraint -offset 0 0 0 -weight 1;

doCreateOrientConstraintArgList 1 { "0","0","0","90","0","0","0","1","","1" };

orientConstraint -offset 0 0 90 -weight 1;

select -cl;

select -r ("spine_" + $i + "_ctrl_grp_pointConstraint1") ;

select -add ("spine_" + $i + "_ctrl_grp_orientConstraint1") ;

delete;

}

parent spine_0_ctrl_grp root_ctrl ;

//fk arms

select -r l_uparm ;

duplicate -rr;

select -r l_uparm1|l_forearm|l_hand|l_pinky_dis l_uparm1|l_forearm|l_hand|l_ring_dis l_uparm1|l_forearm|l_hand|l_middle_dis l_uparm1|l_forearm|l_hand|l_index_dis l_uparm1|l_forearm|l_hand|l_thumb_dis ;

delete;

rename "l_uparm1" "l_uparm_fk";

rename "l_uparm_fk|l_forearm" "l_forearm_fk";

rename "l_forearm_fk|l_hand" "l_hand_fk";

select -r r_uparm ;

duplicate -rr;

select -r r_uparm1|r_forearm|r_hand|r_thumb_dis r_uparm1|r_forearm|r_hand|r_index_dis r_uparm1|r_forearm|r_hand|r_middle_dis r_uparm1|r_forearm|r_hand|r_ring_dis r_uparm1|r_forearm|r_hand|r_pinky_dis ;

delete;

rename "r_uparm1" "r_uparm_fk";

rename "r_uparm_fk|r_forearm" "r_forearm_fk";

rename "r_forearm_fk|r_hand" "r_hand_fk";

//fk legs

select -r r_thigh ;

duplicate -n "r_thigh_fk";

select -r r_thigh_fk|r_calf ;

searchReplaceNames "$" "_fk" "hierarchy";

select -r l_thigh ;

duplicate -n "l_thigh_fk";

select -r l_thigh_fk|l_calf ;

searchReplaceNames "$" "_fk" "hierarchy";

//ik

select -r l_thigh_fk ;

select -add r_thigh_fk ;

select -add r_uparm_fk ;

select -add l_uparm_fk ;

duplicate;

searchReplaceNames "fk1" "ik" "hierarchy";

searchReplaceNames "fk" "ik" "hierarchy";

//fk leg control

float $pv = `getAttr l_thigh.translateY`;

float $pva = `abs $pv`;

float $lh = `getAttr l_calf.translateY`;

float $lha = `abs $lh` / 2;

float $lf = `getAttr l_foot.translateY`;

float $lfa = `abs $lf` / 2;

float $lft = `getAttr l_foot.translateY`;

float $lfta = `abs $lft` / 2;

float $pvah = $pva/2;

curve -d 0 -p (-($pva)) $lha (-($pva)) -p (-($pva)) $lha (($pva)) -p (($pva)) $lha (($pva)) -p (($pva)) $lha (-($pva)) -p (-($pva)) $lha (-($pva)) -name "l_thigh_ctrl";

group -em -name l_thigh_ctrl_grp;

parent l_thigh_ctrl l_thigh_ctrl_grp ;

select -r l_thigh ;

select -add l_thigh_ctrl_grp ;

doCreateParentConstraintArgList 1 {"0","0","0","0","0","0","0","0","1","","1" };

select -r l_thigh_ctrl_grp_parentConstraint1 ;

delete;

curve -d 0 -p (-($pva)) $lfa (-($pva)) -p (-($pva)) $lfa (($pva)) -p (($pva)) $lfa (($pva)) -p (($pva)) $lfa (-($pva)) -p (-($pva)) $lfa (-($pva)) -name "l_calf_ctrl";

group -em -name l_calf_ctrl_grp;

parent l_calf_ctrl l_calf_ctrl_grp ;

select -r l_calf ;

select -add l_calf_ctrl_grp ;

doCreateParentConstraintArgList 1 {"0","0","0","0","0","0","0","0","1","","1" };

select -r l_calf_ctrl_grp_parentConstraint1 ;

delete;

group -em -name test1;

select -r l_foot ;

select -add test1 ;

doCreateParentConstraintArgList 1 {"0","0","0","0","0","0","0","0","1","","1" };

float $ph = `getAttr test1.translateY`;

float $pha = `abs $ph`;

select -r test1 ;

delete;

curve -d 0 -p (-($pvah)) (-($pha)) (-($pvah)) -p (-($pvah)) (-($pha)) (($pva)) -p (($pvah)) (-($pha)) (($pva)) -p (($pvah)) (-($pha)) (-($pvah)) -p (-($pvah)) (-($pha)) (-($pvah)) -name "l_foot_ctrl";

group -em -name l_foot_ctrl_grp;

parent l_foot_ctrl l_foot_ctrl_grp ;

select -r l_foot ;

select -add l_foot_ctrl_grp ;

doCreatePointConstraintArgList 1 { "0","0","0","0","0","0","0","1","","1" };

select -r l_foot_ctrl_grp_pointConstraint1 ;

delete;

group -em -name test1;

select -r l_toe ;

select -add test1 ;

doCreateParentConstraintArgList 1 { "0","0","0","0","0","0","0","0","1","","1" };

float $ph = `getAttr test1.translateY`;

float $pha = `abs $ph`;

select -r test1 ;

delete;

curve -d 0 -p (-($pvah)) (-($pha)) 0 -p (-($pvah)) (-($pha)) (($pvah)) -p (($pvah)) (-($pha)) (($pvah)) -p (($pvah)) (-($pha)) 0 -p (-($pvah)) (-($pha)) 0 -name "l_toe_ctrl";

group -em -name l_toe_ctrl_grp;

parent l_toe_ctrl l_toe_ctrl_grp ;

select -r l_toe ;

select -add l_toe_ctrl_grp ;

doCreatePointConstraintArgList 1 { "0","0","0","0","0","0","0","1","","1" };

select -r l_toe_ctrl_grp_pointConstraint1 ;

delete;

parent l_toe_ctrl_grp l_foot_ctrl ;

select -r l_foot_ctrl_grp ;

parent l_foot_ctrl_grp l_calf_ctrl ;

select -r l_calf_ctrl_grp ;

parent l_calf_ctrl_grp l_thigh_ctrl ;

//duplicate leg ctrl

select -r l_thigh_ctrl_grp ;

Group;

duplicate;

searchReplaceNames "l_" "r_" "hierarchy";

setAttr "group2.scaleX" -1;

select -r r_thigh_ctrl_grp ;

select -add l_thigh_ctrl_grp ;

parent -w;

select -r group2 ;

select -add group1 ;

delete;

//arm control

float $sh = `getAttr l_uparm.translateX`;

float $sha = `abs $sh`;

float $hh = `getAttr head.translateX`;

float $hha = `abs $sh`;

curve -d 1 -p 0 (-($...


Подобные документы

  • Методы создания двумерных и трехмерных изображений. Классификация средств компьютерной графики и анимации. Системы для работы с видео и компоновки. Обзор программных продуктов для создания презентаций, двумерной и трехмерной анимации, 3D-моделирования.

    реферат [30,5 K], добавлен 25.03.2015

  • Рассмотрение понятия компьютерной графики; характеристика ее видов - растровой, векторной, фрактальной, трехмерной. Описание интерфейса и основных инструментов графического программного обеспечения - Adobe Photoshop, Corel Draw, Autodesk 3ds Max.

    реферат [387,8 K], добавлен 02.01.2012

  • Ознакомление с понятием компьютерной графики. Области применения конструкторской и рекламной графики, компьютерной анимации. Рассмотрение преимущества графической визуализации бизнес-процессов. Особенности кольцевой, биржевой и лепестковой диаграмм.

    реферат [94,6 K], добавлен 02.02.2016

  • Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.

    реферат [25,7 K], добавлен 31.03.2014

  • Рассмотрение областей применения компьютерной графики. Изучение основ получения различных изображений (рисунков, чертежей, мультипликации) на компьютере. Ознакомление с особенностями растровой и векторной графики. Обзор программ фрактальной графики.

    реферат [192,9 K], добавлен 15.04.2015

  • Разработка программных средств автоматизированного анализа динамических свойств позиционной следящей системы с учетом люфта редуктора. Проектирование алгоритма и программы расчета и построения фазовых портретов или переходных процессов данной системы.

    курсовая работа [432,5 K], добавлен 28.11.2012

  • Рзработка библиотеки, которая позволит моделировать динамику частиц в трехмерной графики. Выбор средств и методов разработки. Варианты моделирования систем частиц. Моделирование на вершинном шейдере. Диаграммы класса Particle System и PSBehavior.

    курсовая работа [4,4 M], добавлен 07.02.2016

  • Виды компьютерной графики: растровая, векторная, фрактальная и трёхмерная. Основные понятия компьютерной графики. Кодирование аудиоинформации, основные аудио форматы. Смешение сигналов и видео форматы. Разработка программы построения фракталов.

    дипломная работа [1,2 M], добавлен 14.01.2015

  • Особенности графики системы MATLAB и ее основные отличительные черты. Построение графика функций одной переменной. Графики в логарифмическом масштабе, построение диаграмм, гистограмм, сфер, поверхностей. Создание массивов данных для трехмерной графики.

    реферат [1,4 M], добавлен 31.05.2010

  • Описание и изучение техники построения плоских и трехмерных изображений чертежей машиностроительных деталей средствами компьютерной графики: втулка, гайка, штуцер. Выполнение упрощенного теоретического чертежа судна на плоскости: бок, корпус, полуширота.

    курсовая работа [832,6 K], добавлен 15.08.2012

  • Преимущества использования библиотеки ОpеnGL для создания программ с применением технологий трехмерной графики. Прорисовка основных частей модели лунохода, разработка интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.

    курсовая работа [261,3 K], добавлен 02.07.2011

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

    презентация [1002,0 K], добавлен 23.06.2015

  • Методы и средства создания и обработки изображений с помощью программно-аппаратных вычислительных комплексов. Основные понятия компьютерной графики. Особенности применения растровой, векторной и фрактальной графики. Обзор форматов графических данных.

    реферат [49,1 K], добавлен 24.01.2017

  • Понятие и виды компьютерной графики. Применение спецэффектов в кинематографе. История развития компьютерной графики. Изменение частоты киносъемки с помощью спецэффектов. Виды компьютерной графики как способ хранения изображения на плоскости монитора.

    реферат [34,8 K], добавлен 16.01.2013

  • Обзор существующих программ трехмерной графики: 3D Studio MAX, iClone, Blender, выявление их возможностей. Анализ истории разработки программ 3D и направлений их дальнейшего развития. Практическое применение программы iClone для создания 3D-анимации.

    курсовая работа [1,8 M], добавлен 20.11.2010

  • Сферы применения машинной графики. Виды компьютерной графики. Цветовое разрешение и цветовые модели. Программное обеспечение для создания, просмотра и обработки графической информации. Графические возможности текстовых процессоров, графические редакторы.

    контрольная работа [21,9 K], добавлен 07.06.2010

  • История развития компьютерной графики. Возникновение компьютерной (машинной) графики: научной, деловой, конструкторской, иллюстративной, художественной и рекламной. Компьютерная анимация. Графика для Интернета. Векторная графика и художественные эффекты.

    курсовая работа [692,0 K], добавлен 12.11.2014

  • Виды и способы представления компьютерной информации в графическом виде. Отличительные особенности растровой и векторной графики. Масштабирование и сжатие изображений. Форматы графических файлов. Основные понятия трехмерной графики. Цветовые модели.

    контрольная работа [343,5 K], добавлен 11.11.2010

  • Суть принципа точечной графики. Изображения в растровой графике, ее достоинства. Обзор наиболее известных редакторов векторной графики. Средства для работы с текстом. Программы фрактальной графики. Форматы графических файлов. Трехмерная графика (3D).

    дипломная работа [764,7 K], добавлен 16.07.2011

  • Разработка технической демонстрационной версии трехмерной компьютерной ролевой игры "After Reset". Установка, запуск и минимальные требования программы. Анализ алгоритмов. Архитектура системы и иерархия классов. Тестирование программного обеспечения.

    дипломная работа [3,4 M], добавлен 19.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.