Информатика и образование
  Мобильная версия сайта            
               
[Главная] [Новости]
[Статьи]
[Проекты]
[Ссылки]
[Автор]
               
    [Архив новостей]        
               
  [Форум] на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы  
       
  Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...]    
       
  [Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi]    
  [Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX]    
       
 

Продолжаем Создание скелета для данной модели

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

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

   
       
  Итак, вот цепочка костей для левой руки -    
       
  кости левой руки    
       
  При создании костей со значениями размеров по умолчанию они будут слишком большими (0,254m). Чтобы этого избежать предварительно задайте нужный размер или используйте панель модификаций (Modify). Расположите цепочку костей так, чтобы она лежала наиболее естественно и находилась внутри руки (кроме концевой кости - она носит вспомогательный характер, поэтому должна находиться снаружи модели и это нормально! далее поймете почему). На виде сверху видно что цепочка костей идет не строго прямо, а слегка под углом, что соответствует модели руки персонажа.    
       
  Переименуйте кости так, чтобы к ним в дальнейшем было легко обращаться, например так - плечо-предплечье-кисть-кончик - что будет соответствовать 3ds max'овскому - LArm_Bone_shoulder - LArm_Bone_forearm - LArm_Bone_fingers - LArm_Bone_tip    
       
  Названиям следует уделять такое пристальное внимание потому, что имея сложную модель Вам легче будет ориентироваться в составляющих ее объектах.    
       
  Для того, чтобы сгиб руки происходил естественно применим к цепочке костей инструмент IK - HI Solver.    
       
  Выберите кость LArm_Bone_shoulder. Она будет корнем иерархии костей левой руки. Выберите пункт меню Animation > IK Solvers > HI Solver и щелкните на кости LArm_Bone_tip    
       
  иерархическая цепочка костей левой руки с примененным HI Solver    
       
  Откройте панель Motion, переименуйте IK Chain01 в LArm_IK_Chain, там же несколько уменьшите размер Целевой (Goal) точки IK -    
       
  изменение размеров указателя целевой (goal) точки прикрепления HI Solver    
       
  Что нам дает созданный IK - Hi Solver? А попробуйте теперь выбрать Целевую (goal) точку и перемещать ее инструментом Select And Move добиваясь даже сгиба руки.    
       
  Инструмент IK Solver - HI Solver моделирующий сгиб руки    
       
  Как видите сгиб связки костей происходит, но не с точки зрения того как на самом деле сгибается рука. Такой изгиб костей для нормальной руки выглядит неестественным. Следовательно мы расположили кости не совсем правильно. Как это исправить?    
       
  Сначала проведем небольшой эксперимент по созданию цепочки из трех костей, коррекции их положения и применения инструмента HI Solver.    
       
  экспериментальная цепочка костей с примененным HI Solver    
       
  Как видно из рисунка для достижения правильного сгиба кости должны располагаться не строго в одну линию, а с небольшим сгибом в ту сторону, в которую мы хотим сгибать их при помощи IK HI Solver.    
       
  Удалите все экспериментальные и созданные для левой руки кости и переделайте работу так, чтобы сгиб руки в горизонтальном направлении происходил правильно.    
       
  новая цепочка костей левой руки с корректным сгибом    
       
  Для того, чтобы легче было манипулировать перемещением используем вспомогательный объект Dummy. Это пустой (не отрисовываемый) объект, который можно использовать как ручку для управления конечностью модели.    
       
  Выберите панель Create нажмите кнопку Helpers и создайте объект Dummy. Расположите его так, чтобы он охватывал Целевую точку (goal) инструмента инверсной кинематики (LArm_IK_Chain) для левой руки.    
       
  создание вспомогательного управляющего объекта    
       
  Сам по себе объект Dummy не играет никакой роли, но если осуществить привязку к нему нужных объектов (в нашем случае LArm_IK_Chain), то он действительно будет работать как удобная рукоятка - смещая LArm_Dummy (так его можно назвать) вы будете смещать LArm_IK_Chain, который будет в свою очередь смещать все связанные с ней кости левой руки. Впоследствии, когда Вы осуществите привязку вершин модели к скелету, смещения костей будут вызывать смещения связанных с ними вершин. Таким образом получится иерархическая цепочка, но результатом будет - смещая LArm_Dummy вы сместите нужные вершины модели относящиеся к руке.    
       
  Привязка (link) осуществляется от подчиненного (привязываемого объекта) к главному (в нашем случае - от LArm_IK_Chain к LArm_Dummy).    
       
  Выберите LArm_IK_Chain и нажмите кнопку Select and Link на панели инструментов -    
       
  ние движения курсора для установления связи    
       
  И протащите связывающий курсор мыши от подчиненного объекта (LArm_IK_Chain) к главному (LArm_Dummy). При этом Dummy на какое-то мнгновение станет выделенным, а потом выделение исчезнет. Проверьте что связь работает - перемещения LArm_Dummy должны приводить к соотвествующим перемещениям скелета левой руки. Если это не так или если Вы ошибочно связали LArm_Dummy с другим объектом, то можно выделить оба неверно связанных объекта и разорвать связь кнопкой Unlink Selection (правее от Select and Link).    
       
  Для того, чтобы визуально удостовериться в правильности сделанной связи можно открыть окно схематического вида - Graph Editors > New Schematic View    
       
  окно схематического вида сцены    
       
  В нём Вы визуально проследите все имеющиеся в сцене иерархические связи. На рисунке стрелка идет от LArm_Dummy к LArm_IK_Chain - значит связь установлена верно. Можете закрыть окно Схематического вида.    
       
  Если Вы экспериментировали с перемещением LArm_Dummy и связанной с ним цепочки скелета левой руки - отмените сделанные перемещения, чтобы скелет руки располагался в первоначальной позиции.    
       
  Аналогичным путем можно создать скелет для правой руки. Советую потренироваться еще. Если Вы уже преуспели в создании костей скелета, применении HI Solver и установлении связей с управляющим Dummy-объектом, то можете просто клонировать и зеркально отобразить всю цепочку объектов скелета левой руки (кости, HI Solver и Dummy) и расположить их для правой руки. Не забудьте только переименовать созданные объекты, чтобы они соответствовали наименованиям для правой руки - RArm_Bone_shoulder, RArm_Bone_forearm, RArm_Bone_fingers, RArm_Bone_tip, RArm_IK_Chain, RArm_Dummy.    
       
  Подобным же образом Вам нужно построить скелет для левой и правой ног, спины и головы. Окончательно всё это будет выглядеть так -    
       
  готовый скелет модели    
       
  Щелкнув по данному изображению Вы можете скачать готовую модель с внедренным скелетом.    
       
 

Архив имеет размер 204 Кб. Текстуру к нему Вы можете взять из архива nn. Архив включает следующие файлы -

fedja_skinned_char.max - готовый скелет модели и привязка посредством модификатора Skin

fedja_anim.max - готовый к анимации персонаж

fedja_anim_go.max - анимация хотьбы

   
       
  Изучив модель скелета и установленные связи между объектами (их можно посмотреть в схематическом виде - Schematic View) вы увидите, что корнем иерархии является объект Body_Dummy. К нему привязаны все остальные объекты Dummy, которые в свою очередь привязаны к IK цепочкам костей. У костей спины (Spine_Bone, Head_Bone) вы увидите выступы. Они создаются для облегчения наблюдения за ориентацией кости. Чтобы создать их в панели модификаций кости установите в группе Bone Fins соответствующие нужным выступам флажки, если требуется - откорректируйте их размеры.    
       
  создание выступов кости    
       
  Следующие важные моменты. Под ногами модели персонажа вы увидите схематичный рисунок человечка. Он означает, что все относящиеся к скелету объекты - кости, IK HI Solver, Dummy были выделены в сцене и преобразованы в персонаж (Character) командой меню Character > Create Character. Такое формирование позволяет теперь обращаться ко всем объектам скелета как к единому целому - отвечающему за скелет персонажа.    
       
  Для привязки скелета к модели персонажа используется модификатор Skin. После применения модификатора в него добавляются все объекты скелета, которые будут влиять на модель данного меша. Это делается кнопкой Add в панели модификаций в группе Parameters с последующим выбором нужных объектов скелета.    
       
  настройка огибающих костей скелета    
       
  Далее осуществляется настройка огибающих костей скелета (Envelopes). И ведется настройка степени влияния каждой кости на вершины модели, т.е. осуществляется настройка весовых коэффициентов. Внутренний (красный) контур огибающей задает степень влияния всех попадающих в нее костей дополняя сумму весовых коэффициентов до 1. Внешний (коричневый) контур представляет отсутствие влияния (спад влияния до 0).    
       
  Обратите внимание - настройка огибающих осуществляется только инструментов Select And Move (остальные будут недоступны). Полезными функциями в группе Envelope properties в окне параметров модификатора Skin при открытом и выбранном узле Envelope (см. рисунок - в стеке модификаций выбран желтым пункт Envelope) являются Copy и Paste. Они позволяют Вам копировать огибающие костей для одной конечности (например для выбранной кости левой руки) и вставлять ее в аналогичную (или подобные) кости правой руки. Это значительно ускоряет процесс настройки огибающих.    
       
  Для настройки огибающих выбирайте внутренние обработчики (серые квадратики) для смещения огибающих и внешние (на красной и коричневой области) для масштабирования области огибающей.    
       
  В окне параметров вы также найдете и другие полезные функции, в том числе Weight Table которая позволяет задать или изменить весовые коэффициенты для каждой вершины и влияющих на нее костей вручную. Это бывает полезно для тех вершин, которые плохо охватываются огибающими.    
       
  Перед экспортом в формат X обязательно задайте следующие параметры модификатора Skin -    
       
  установка подходящих для экспорта параметров модификатора Skin    
       
  Установите флажок для выбора вершин, выделите все вершины, установите параметры Rigid, Rigid Vertices. Количество костей одновременно влияющих на одну вершину (Bone Affect Limit) не задавайте более 4. Меньшие значения сделают анимацию вершин менее плавной, но и сократят сложность анимации и количество вычислений на обработку и вывод анимации.    
       
  [назад] [далее]    
       
       
  [Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi]    
  [Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX]    
       
 

Обновления и новости о развитии Delphi DirectX проекта
смотри на сайтах:

http://www.megainformaticsite.pochta.ru

http://www.megainformatic.boom.ru

http://www.megainformatic.narod.ru

 

   
       
     
 

по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме

 
     
   Обмен ссылками  
     
     
             
 
 
         
(с) МЕГА ИНФОРМАТИК 2006-2009
Hosted by uCoz