Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ”





Скачать 237.92 Kb.
НазваниеИсследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ”
Дата публикации27.06.2014
Размер237.92 Kb.
ТипИсследовательская работа
100-bal.ru > Информатика > Исследовательская работа


МОСКОВСКИЙ ГОРОДСКОЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ

МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ

КАФЕДРА ИНФОРМАТИКИ И ПРИКЛАДНОЙ МАТЕМАТИКИ

УЧЕБНО-ИССЛЕДОВАТЕЛЬСКАЯ РАБОТА
По теме: “Методика преподавания трехмерной графики

в старших классах c использованием программы 3 DStudioMax ”.

Выполнил студент

5 курса, специальности «информатика»

дневного отделения

А.В. Баранов

Научный руководитель

Профессор С.Г. Григорьев.


Москва, 2005



ВВЕДЕНИЕ
Актуальность исследования. Вероятно, ни для кого не секрет, что компьютерная графика окружает нас повсюду. Ее можно встретить на экране телевизора, газетной или журнальной полосе, рекламном плакате, даже на обертке любимой вашим ребенком жевательной резинки. Присутствию компьютерной графики в нашей жизни люди уже не удивляются. Она стала чем-то очень привычным и поэтому не вызывающим такого бурного восторга, который охватил почти все население планеты после просмотра "Звездных Войн" Лукаса. На современном этапе развития цивилизации, когда огромная часть всей человеческой деятельности выполняется на компьютере или при помощи такового, мы сталкиваемся с созданными машиной изображениями практически постоянно. При этом мнений относительно компьютерной графики практически столько же, сколько людей населяет нашу планету.

Сейчас, с появлением мощных персональных компьютеров, число людей, стремящихся реализовать себя в компьютерном искусстве, существенно увеличилось и продолжает расти огромными темпами. Ведь почти каждый пользователь компьютера когда-то пытался создать что-то красивое. Это сродни тому, что редко можно найти ребенка, не любящего рисовать. При помощи же компьютера это делается проще, и результаты зачастую бывают очень впечатляющими. Поэтому многие компьютерные компании выпустили продукты для наибольшего облегчения пользовательского труда. Так что у художников, творящих на компьютере, очень неплохой выбор инструментов. Это и Corel Draw! с Corel Photo Paint, и Adobe Illustrator с Adobe Photoshop, и множество других. Но это все инструменты для "плоской", двухмерной (2D) графики. Конечно, с помощью современных 2D-редакторов можно создавать псевдотрехмерные изображения, которые смотрятся, как объемные объекты. Но это требует определенных усилий. А между тем существует отдельный жанр, в котором работают компьютерные художники, - трехмерная (3D), объемная графика. Именно о ней и пойдет речь в данной статье. Для трехмерной графики вам потребуется несколько другой инструментарий, нежели для 2D. Сейчас существует также огромное количество 3D-редакторов, различающихся сложностью, требованиями к компьютеру, возможностями и, наконец, стоимостью. Среди них можно выделить несколько самых удачных. Это опять же продукты от Corel - Dream 3D и Motion 3D, программы Simply 3D, Cool 3D и т. д. Но наилучшей программой для работы с 3D справедливо считается продукт фирмы Kinetix - 3D Studio MAX.

Объект исследования – обучение программированию трехмерной графики на примере программы 3DmaxStudio .


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

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

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

В связи с поставленной целью и выдвинутой гипотезой были разработаны следующие задачи.

  1. Провести анализ теоретической и учебно-методической литературы по данной теме.

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

  3. Как разработать методику использования компьютерных программных пакетов при обучении школьников темы «Трехмерная графика ».


Методологическую основу исследования cоставляет: разработанная

О. Т. Иевлевой, Н. А. Евдокимовой методическая система обучения курсу “Трехмерная графика ” в школьном курсе информатики .

Методы исследования:

  1. Метод теоретического исследования:

  2. Метод эмпирического исследования:

Этапы исследования:

  • Изучение и анализ методической и научной литературы по проблеме исследования.

  • Изучение пакета программ разработанных для работы с трехмерной графикой .

  • Разработка методики использования программы 3DstudioMax в школьном курсе информатики

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

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

Положения выносимы на защиту:

  • Возможности компьютерных программ по работе с трехмерной графикой ;

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

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

Внедрение. Раскрытие методики и внедрение результатов исследования были осуществлены на математическом факультете МГПУ и в средней общеобразовательной школе №1097 г Москвы .

Апробация.

  • Выступление на семинаре по УИР в МГПУ;

  • Обсуждение методики с преподавателями МГПУ;

  • Педагогический эксперимент в МГПУ (студенты 2 курса)

  • Педагогический эксперимент в школе №1097 г. Москвы (10-11 класс).

Пример создания трехмерного образа на программе

Описание создание скелета животного в максе крайне редкое явление. Ну что ж попытаемся исправить это досадное упущение. И так темой сегодняшнего рассказа будет создание жизнеспособного рига непарнокопытного животного (хотя риг парнокопытного животного делать почти точно также).

Половину субботы у меня ушло на создание вот этой коняки - такое медиум поле получилось- и, не смотря на ее непритязательный вид, она нам вполне подойдет. В конце концов это руководство по ригу, а не по моделингу - поэтому прошу все комментарии по поводу модели оставить при себе :) )



Рисунок 1

Я не буду рассказывать как создавать кости - надеюсь любой, кто столкнется с данной задачей найдет в Интернете анатомию и срисует скелет (лично я так и сделал). Единственное о чем стоит упомянуть - хотя передние ноги стоят ровно, я создавал кости в согнутом положении. А потом их выравнивал (этим я добился правильной ориентации Preferred Angles, то есть если мы посмотрим на ориентацию костей, ось ротации Z (Gimbal) находится в той же плоскости, что и плоскость сгиба, только в этом случае можно гарантировать, что кости не будут крутиться, когда мы назначим IK-решатель). Маленький совет - двигайте кости только в плоскости изгиба, Если это невозможно (например скинпоза человека с полусогнутыми и полуопущенными руками (так действительно будет настраивать скин удобнее), то начиная от родителя и вниз по иерархии сначала поворачиваем кости - ставя плоскость изгиба в нужное нам положение и только потом двигаем суставы в нужное нам место.



Рисунок 2

Прежде чем приступить к настройке скелета встаньте на четыре свои конечности, на кончики пальцев, и сделайте пару кругов по комнате. Спросите зачем? Ну на это есть три важные причины:

  • Ну сколько можно сидеть за компьютером? - разомнитесь.

  • Своими выбрыками вы весьма повеселите окружающих.

  • Важно понять, где у лошади, какие суставы- то есть самый верхний (по середине туловища) это ваше плечо, второй (где начинаются ноги) - это локоть, третий (на <коленке>) - это запястье, ну и пальцы - это я про ваши передние ноги, с задними немного легче, там суставов поменьше, поэтому сами разберетесь, если нет то возвращайтесь к началу абзаца. Теперь мы знаем, например, что в передней ноге вторая и третья кости не могут разогнуться, образовав угол направленный вперед - ведь это наш локоть, ну и т.д.

Задняя нога



Рисунок 3

Итак, приступим. И начнем с задней ноги - три длинных кости - значит две пересекающихся IK (для тех, кто не знает, как создавать решатели инверсионной кинематики - Animation/IK Solvers/HI Solver именно этот тип мы будем использовать чаще всего). То есть создаем одну Ik от первой кости до третей, другую ik от второй до четвертой (я хочу, что бы вторая ik отвечала за положение ноги, а первая за углы наклона между костями). Проверяем, что получилось - действительно вроде первая икушка меняет углы, но не сдвигает всю ногу. А вторая делает что то странное и не то что я хотел. Отменяем все сдвиги которые мы только что сделали и создаем два shapes-линии которыми мы будем управлять ногой - копыто и стрелочку. Подвинем их на нужное место, и назначим стрелочке Position Constrain относительно копыта ( Animation/ Constrains/ Position Constrain-появится пунктирная линия которой вы тыкаете в копыто)- стрелочка прыгнет на копыто и все ваши попытки поставит ее на место нагло проигнорируются.

Position Constrain позволяет связать положение одного объекта с другим.

Мы выбрали этот способ создания констрейна (есть еще парочка) потому, что при этом автоматически был создан Position List-контроллер который правда ни чего не делает, но сильно облегчает жизнь. И так, что же мы наделали, давайте разберемся - для этого делаем раз ( c)



Рисунок 4

мы попали в motion панель, здесь мы можем узнать все о контроле над объектом, то есть что его контролирует,

если б это был объект, на который ни чего не назначено, то в окошке Assign controller было бы рядом с Position-

Position XYZ -то есть объект управляется с помощью трех треков x y z -мы его можем просто подвинуть или с анимировать -при чем у нас три трека -на каждую из осей, мы можем создавать ключи отдельно для каждого направления. Давайте разберемся, какие еще мы можем назначить контроллеры - выбираем position и кликаем на маленький знак вопроса в самом верху:

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

AudioPosition -положение согласуется с аудиотреком (скачет под музыку)

BezierPozition -один общий трек на положение объекта в кривых Безье (кривые имеет тангенсы и очень легко управляются -мои любимые кривые) но так как трек один ключи ставятся сразу на три оси и разделить вы их не сможете

Liner Position -то же самое , но кривые линейные, то есть кривая движется по прямой от ключа к ключу -не возможно сделать ускорение или замедление параметра, в некоторых случаях оно и не нужно -например равномерное движение камеры( то же самое можно сделать и с Безье задав линейность нужным ключам)

TCB Position то же самое -кривые ТСБ -плохо управляются, (пережиток от старых версий макса -раньше других кривых и не было) и я их не люблю и ими не пользуюсь, и рассказывать о них не буду

Path Constraint-движение по пути

Position Constraint -ну это я уже говорил

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

Position List-позволяет сводить несколько контроллеров в месте-до его использования мы дойдем довольно скоро

Position Reactor -можем задать несколько положений которые будут контролироватса каким то параметром -максовский аналог драйвен киз но реализован не лучшим способом (на мой личный взгляд)

Position Script -просто пишем скрипт

Position XYZ- назначаемый по дефолту, и разделяет матрицу на три трека для каждой оси

Spring-объект при анимации будет вести себя как на пружинке, полезная вещь, но одно "но"-тормозит

Surface -позволяет привязать объект к поверхности (Поверхность должна быть NURBS) вы не сможете контролировать положение на прямую - вам придется в моушен панели задавать координаты УВ ручками :(

Noise Position- настраиваемый шум- объект будет трястись случайным образом, но под вашим контролем

Я пропустил несколько контроллеров по простой причине - Совершенно не знаю, что они делают - Кто знает - подскажите, пожалуйста.

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

единственно тут добавилось

Boolean Controller-или 0 или 100

On/Off-выключает контроллер с сохранением анимации, потом можно вернуть предыдущий контроллер и все встанет на место

Waveform Float-изменение по синусоиде

Для ротации -

Oriental constraint -связать с ротацией другого объекта

LookAt Constrain-направляет одну из осей на выбранный объект

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

Может в следующий раз.

В нашем случае написано Position List- внутри которого находятся PositionXYZ и Position Constrain-то есть два контроллера - но почему тогда мы не можем подвинуть shape, потому что один из контроллеров не активен, и я знаю какой. Опускаемся по панели ниже - находим Position List-Выбираем PositionXYZ (Делай два), нажимаем на кнопку ( Set Active) (делай три) и последнее - делаем четыре - ставим галочку Average Weights- теперь на наш шейп действуют оба контроллера, причем делят между собой воздействие по отношению весов-100/100, то есть поровну. Потом мы сюда еще вернемся. При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





 Риг животного в максе








A horse, a horse

A kingdom for a horse

W. Shakespeare

Описание создание скелета животного в максе крайне редкое явление. Ну что ж попытаемся исправить это досадное упущение. И так темой сегодняшнего рассказа будет создание жизнеспособного рига непарнокопытного животного (хотя риг парнокопытного животного делать почти точно также).

Половину субботы у меня ушло на создание вот этой коняки - такое медиум поле получилось- и, не смотря на ее непритязательный вид, она нам вполне подойдет. В конце концов это руководство по ригу, а не по моделингу - поэтому прошу все комментарии по поводу модели оставить при себе :) )



Рисунок 1

Я не буду рассказывать как создавать кости - надеюсь любой, кто столкнется с данной задачей найдет в Интернете анатомию и срисует скелет (лично я так и сделал). Единственное о чем стоит упомянуть - хотя передние ноги стоят ровно, я создавал кости в согнутом положении. А потом их выравнивал (этим я добился правильной ориентации Preferred Angles, то есть если мы посмотрим на ориентацию костей, ось ротации Z (Gimbal) находится в той же плоскости, что и плоскость сгиба, только в этом случае можно гарантировать, что кости не будут крутиться, когда мы назначим IK-решатель). Маленький совет - двигайте кости только в плоскости изгиба, Если это невозможно (например скинпоза человека с полусогнутыми и полуопущенными руками (так действительно будет настраивать скин удобнее), то начиная от родителя и вниз по иерархии сначала поворачиваем кости - ставя плоскость изгиба в нужное нам положение и только потом двигаем суставы в нужное нам место.



Рисунок 2

Прежде чем приступить к настройке скелета встаньте на четыре свои конечности, на кончики пальцев, и сделайте пару кругов по комнате. Спросите зачем? Ну на это есть три важные причины:

  • Ну сколько можно сидеть за компьютером? - разомнитесь.

  • Своими выбрыками вы весьма повеселите окружающих.

  • Важно понять, где у лошади, какие суставы- то есть самый верхний (по середине туловища) это ваше плечо, второй (где начинаются ноги) - это локоть, третий (на <коленке>) - это запястье, ну и пальцы - это я про ваши передние ноги, с задними немного легче, там суставов поменьше, поэтому сами разберетесь, если нет то возвращайтесь к началу абзаца. Теперь мы знаем, например, что в передней ноге вторая и третья кости не могут разогнуться, образовав угол направленный вперед - ведь это наш локоть, ну и т.д.

Задняя нога



Рисунок 3

Итак, приступим. И начнем с задней ноги - три длинных кости - значит две пересекающихся IK (для тех, кто не знает, как создавать решатели инверсионной кинематики - Animation/IK Solvers/HI Solver именно этот тип мы будем использовать чаще всего). То есть создаем одну Ik от первой кости до третей, другую ik от второй до четвертой (я хочу, что бы вторая ik отвечала за положение ноги, а первая за углы наклона между костями). Проверяем, что получилось - действительно вроде первая икушка меняет углы, но не сдвигает всю ногу. А вторая делает что то странное и не то что я хотел. Отменяем все сдвиги которые мы только что сделали и создаем два shapes-линии которыми мы будем управлять ногой - копыто и стрелочку. Подвинем их на нужное место, и назначим стрелочке Position Constrain относительно копыта ( Animation/ Constrains/ Position Constrain-появится пунктирная линия которой вы тыкаете в копыто)- стрелочка прыгнет на копыто и все ваши попытки поставит ее на место нагло проигнорируются.

Position Constrain позволяет связать положение одного объекта с другим.

Мы выбрали этот способ создания констрейна (есть еще парочка) потому, что при этом автоматически был создан Position List-контроллер который правда ни чего не делает, но сильно облегчает жизнь. И так, что же мы наделали, давайте разберемся - для этого делаем раз ( c)



Рисунок 4

мы попали в motion панель, здесь мы можем узнать все о контроле над объектом, то есть что его контролирует,

если б это был объект, на который ни чего не назначено, то в окошке Assign controller было бы рядом с Position-

Position XYZ -то есть объект управляется с помощью трех треков x y z -мы его можем просто подвинуть или с анимировать -при чем у нас три трека -на каждую из осей, мы можем создавать ключи отдельно для каждого направления. Давайте разберемся, какие еще мы можем назначить контроллеры - выбираем position и кликаем на маленький знак вопроса в самом верху:

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

AudioPosition -положение согласуется с аудиотреком (скачет под музыку)

BezierPozition -один общий трек на положение объекта в кривых Безье (кривые имеет тангенсы и очень легко управляются -мои любимые кривые) но так как трек один ключи ставятся сразу на три оси и разделить вы их не сможете

Liner Position -то же самое , но кривые линейные, то есть кривая движется по прямой от ключа к ключу -не возможно сделать ускорение или замедление параметра, в некоторых случаях оно и не нужно -например равномерное движение камеры( то же самое можно сделать и с Безье задав линейность нужным ключам)

TCB Position то же самое -кривые ТСБ -плохо управляются, (пережиток от старых версий макса -раньше других кривых и не было) и я их не люблю и ими не пользуюсь, и рассказывать о них не буду

Path Constraint-движение по пути

Position Constraint -ну это я уже говорил

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

Position List-позволяет сводить несколько контроллеров в месте-до его использования мы дойдем довольно скоро

Position Reactor -можем задать несколько положений которые будут контролироватса каким то параметром -максовский аналог драйвен киз но реализован не лучшим способом (на мой личный взгляд)

Position Script -просто пишем скрипт

Position XYZ- назначаемый по дефолту, и разделяет матрицу на три трека для каждой оси

Spring-объект при анимации будет вести себя как на пружинке, полезная вещь, но одно "но"-тормозит

Surface -позволяет привязать объект к поверхности (Поверхность должна быть NURBS) вы не сможете контролировать положение на прямую - вам придется в моушен панели задавать координаты УВ ручками :(

Noise Position- настраиваемый шум- объект будет трястись случайным образом, но под вашим контролем

Я пропустил несколько контроллеров по простой причине - Совершенно не знаю, что они делают - Кто знает - подскажите, пожалуйста.

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

единственно тут добавилось

Boolean Controller-или 0 или 100

On/Off-выключает контроллер с сохранением анимации, потом можно вернуть предыдущий контроллер и все встанет на место

Waveform Float-изменение по синусоиде

Для ротации -

Oriental constraint -связать с ротацией другого объекта

LookAt Constrain-направляет одну из осей на выбранный объект

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

Может в следующий раз.

В нашем случае написано Position List- внутри которого находятся PositionXYZ и Position Constrain-то есть два контроллера - но почему тогда мы не можем подвинуть shape, потому что один из контроллеров не активен, и я знаю какой. Опускаемся по панели ниже - находим Position List-Выбираем PositionXYZ (Делай два), нажимаем на кнопку ( Set Active) (делай три) и последнее - делаем четыре - ставим галочку Average Weights- теперь на наш шейп действуют оба контроллера, причем делят между собой воздействие по отношению весов-100/100, то есть поровну. Потом мы сюда еще вернемся. При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






Добавить документ в свой блог или на сайт

Похожие:

Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconИсследовательская работа по теме: «Особенности преподавания истории...
I. Цели и задачи обучения истории в старших классах основной школы
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconНаучно-исследовательская работа Научно-исследовательская работа Научно-исследовательская...
Научно-исследовательская работа (нир) относится к циклу «Практики и научно-исследовательская работа» магистерской программы «Русский...
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconКомплексная работа с текстом в старших классах
Главное же – это задания речевого характера, направленные на формирование умения воспринимать текст. Особое внимание обращается на...
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconСтруктура рабочей программы дисциплины (модуля). Разработка мультимедийных продуктов
Цели курса умение использовать современные пакеты программ для создания презентаций, видео и трехмерной графики
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconПрограмма по русской литературе (особенно в старших классах) должна полностью соответствов
Инновационные технологии в преподавании русской литературы в старших классах средней школы
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconПрограмма государственного квалификационного экзамена по методике...
«Методика преподавания философии». Цели, предмет и задачи курса «Методика преподавания философии». Методика, дидактика, психология...
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconРеферат по математике на тему «Функции и графики»
Материал, связанный с этим вопросом на базе основной школы, изучается недостаточно полно, многие важные моменты не входят в программу,...
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconМетодическая разработка по теме «методика изучения курса физики в...
«Электродинамика» в 8-х и 9-х классах школы-интерната №9 для детей-сирот с отклонениями в развитии
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconСамостоятельная работа как средство обучения решению уравнений в 5 9 классах
Теоретические аспекты обучению уравнений в 5 9 классах с использованием самостоятельной работы
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconПрограмма по формированию навыков безопасного поведения на дорогах...
Начертательной геометрии, инженерной графики и компьютерной графики» по направлению «Информатизация образования» является ознакомление...
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconИсследовательская работа «Тайна имени». Выполнила ученица 6 класса...
Научно-исследовательская деятельность в Мокрушинской школе Канского района Красноярского края
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconМетодическая разработка На тему: Работа над техникой в старших классах дмш
Воспитание ощущения контакта с клавиатурой
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconИсследовательская работа школьников. 2007 №3 «Ученику необходимо...
Леонтович А. В. Исследовательская деятельность учащихся в современном образовательном пространстве: итоги научно-практической конференции....
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconМетодика преподавания декоративно-прикладного творчества учебно-методический комплекс дисциплины
Протокол согласования рабочей программы дисциплины «методика преподавания декоративно-прикладного творчества»
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconСмирнов Александр Валерьевич
Программа: MatrixBalancing – научно-исследовательская программа для нахождения решения задачи целочисленного сбалансирования трехмерной...
Исследовательская работа по теме: “Методика преподавания трехмерной графики в старших классах c использованием программы 3 dstudioMax ” iconФи ученика
Исследовательские работы школьников были представлены следующими жанрами: исследовательский реферат – 2, исследовательская работа...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск