b3dgraph.gif (7140 bytes)

Гироскопический маятник.

      На этой страничке:

Описание примера
Download (Скачивание)

pend2.jpg (6339 bytes)

Начало страницы


      Описание примера.

      Начать наверное следует с того, что в этом примере рассматривается не маятник в чистом виде, а гироскоп, пусть стилизованный, но гироскоп, который совершает периодичеки повторяющиеся вращательные движения. Если кратко, то просто у него нет положения минимальной либо максимальной энергии. Гироскоп всегда в положении равновесия. потому он не колеблется, а вращается с определенной периодичностью.
      Упор на то, как создать эту игрушку делать не буду, потому как состоит он, в основном, из примитивов (торы, цилиндры, параллелепипеды) и составить его из них по идее не трудно. Основная изюминка в том, как заставить гироскоп правильно вращаться, затратив при этом минимум усилий.
      Сама идея не нова, она на прямую следует из иерархической (или, как ближе мне, как программисту - объектно ориентированной) структуры среды 3D Studio Max. Суть заключается в формировании вложенных групп. То, как это сделано в данном случае показано на рисунке.

scr00.jpg (110919 bytes)

      Центральная сфера и тор объеденены в первую группу, которая является подгруппой для второй группы. Во вторую группу входит первая и еще один тор. Эта группа является подгруппой третьей группы, в которую входит вторая и самый большой тор. Цилиндры, соединяющие торы, разбиваются по группам по смыслу.
      Анримация производится для фильма с 24 кадрами в секунду, с периодом вращения гироскопа 2 секунды (т.е. 48 кадров). Выбираем локальную систему координат, центром которой выставляем центр сферы. В этой системе координат и будем производить действия над всеми объектами модели. На 0-м кадре углы поворота у первой второй и третьей групп равны 0. Первую группу будем вращать относительно оси Oz, вторую - относительно Ox, и третью опять относительно Oz. Начинается все с того, что последовательно открывается третья, и вторая группы, предоставляя непосредственный доступ к первой. Переходим к 47-му кадру и ставим угол поворота этой группы отнсительно Oz равным 352.5 градуса. После чего закрываем вторую группу. Опять переходим к 0-му кадру. Для второй группы выставляем начальный угол поворота 0 градусов, а на 47-м кадре уже 352.5 градуса, относительно оси Ox. Закрываем третью группу. После чего проделываем с ней те же действия, что и с первой группой.
      Почему все работает?! Поскольку все изменения, что были произведены над группой, отражаются на всех ее подобъектах, то когда мы поворачиваем, например, вторую группу, вместе с этим мы поворачиваем и первую, т.к. она является подгруппой второй. В то же время, предварительно, первая группа уже была нами повернута относительно собственной локальной системы координат. В результате получается, что первая группа вращалась сразу относительно двух осей! Абсолютно аналогично происходит взаимодействие между третьей, второй и первой группами, когда мы начинаем вращать третью группу. Это и есть одно из проявлений объектно-ориентированного подхода к созданию моделей в 3DSMax, хотя, как правило, в пример приводят стек модификаций, деформации и т.п.
      Теперь к вопросу, почему не 360, а 352.5 градуса? Дело в том, что предполагается, что вращение гироскопа будет зациклено, что предполагает непрерывность череды изображений на экране. Если бы мы поставили угол поворота равный 360 градусов, то последний кадр содержал бы ту же картинку, что и первый. В результате, если зациклить картинку, между последним и первым кадром гироскоп не движется. Кажется, что он, как будто, замирает на мгновение. 352.5=360-360/48. Подразумевается, что между последним кадром предыдущего периода и первым следующего маятник еще будет двигаться, пройдя 1/48 всего пути (пути, который он проходит за период) т.е. 1/48*360. Как результат этих размышлений и получаем 352.5 градуса.


      А это то, что получается в результате:

p6x0000.jpg (1864 bytes) p6x0006.jpg (1608 bytes) p6x0012.jpg (1879 bytes) p6x0018.jpg (1700 bytes)
p6x0024.jpg (1859 bytes) p6x0030.jpg (1699 bytes) p6x0036.jpg (1887 bytes) p6x0042.jpg (1604 bytes)

Начало страницы


      Download (Скачивание).

      Собственно для скачивания доступны:
      pend2end.avi (201 Kb) - клип с гироскопическим маятником (рекомендуется запускать в режиме автоповтора). Использован кодек DivX (MPEG-4).
      pend2end.zip (216 Kb) - архив, содержащий исходный файл для 3D Studio Max 4.0.

      Вопросы, предложения, пожелания и даже критика принимается по адресу il_mattheus@mail.ru.
     


Рубрики сайта
Главная | Новости | Книги| Программы | Игры | Программисту| 3D графика | Графика| Стихи | Ссылки | Об авторе

Hosted by uCoz