Для анимации кривошипно-шатунного механизма мы будем использовать HD
Solver. Скажу честно, я перепробовал много разных способов и этот мне
кажется самым приемлемым. Впрочем, о вкусах не спорят.
Не будем рассматривать моделирование, думаю, с этим вы справитесь.
Можно просто слепить из кучки примитивов некое подобие одноцилиндрового
двигателя. Это только начало, потом можете сделать их столько, на
сколько хватит мощности вашего компьютера. Скажу только, если кто не
догадывается, размеры деталей все-таки имеют значение. Мне в процессе
создания, из за отсутствия чертежей, пришлось не по одному разу
изменять размеры почти всех объектов, что бы все, что вы видите ниже,
более – менее напоминало двигатель. Но вам необязательно заниматься
дизайном – вместо чертежей можете использовать скриншоты. Начинал я с
коленчатого вала в окне front.
Получилось следующее:
Обратите внимание, что на коленвале оставлено место для второго шатуна.
Еще я создал Circle - это то, чем впоследствии мы будем вращать весь наш механизм. Я назвал его – привод КВ
Теперь, когда объекты готовы важно выровнять их опорные точки. Выделяем
последовательно, или сразу все наши объекты, и жмем на кнопку Align to
World. Это выровняет направление осей координатной системы опорной
точки по осям глобальной системы координат. Для коленвала нажмем еще и
Center to Object - без комментариев.
Обратите внимание на расположение опорной точки шатуна – она должна
находиться в верхней его части, в том месте, где он будет соединён с
поршнем. Это важно!
Коленвал поместите в начало координат – так нам будет проще в дальнейшем.
Выровняйте объекты как показано ниже.
Привод КВ ( Circle) поместите перед коленвалом - просто чтобы не мешал.
Нам понадобятся еще две пустышки. Я взял Point.
Point01 размещаем в месте присоединения шатуна к коленвалу, выравниваем
глобально опорную точку, если это уже не так и клонируем ее.
Point02 поместим чуть выше поршня.
Дальше нам нужна иерархическая цепочка. Вернее две.
Выделяем Point01 жмем Select and Link и связываем в последовательности: Point01- шатун – поршень – Point02.
И вторая: коленвал – привод КВ
Должно получиться следующее.
Затем выделяем Point01 и в меню Animation выбираем IK Solvers - HD Solver.
И тянем пунктир к Point02.
HD Solver мы выбрали потому, что он лучше других подходит для анимации
различных машин и механизмов, содержащих в себе какие-либо скользящие
детали. В нашем случае это поршень.
Помнится, кто-то предлагал анимировать двигатель по кадрам, в ручную.
Можно конечно. Хорошо если это будет одноцилиндровый двухтактный мотор.
Ну а если от мессершмитта? Эх! Хотел бы я на это посмотреть, но такого
количества свободного времени у меня никогда не было и никогда не
будет.
- Однако я отвлекаюсь!
Движение каждого объекта будет определено координатной системой его предка, поэтому выберите систему координат – Parent.
Теперь нужно определить какой объект и куда должен двигаться.
Обычно настройку начинают с самого младшего объекта в цепи IK. У нас
это Point01. Но, так как нам будет нужно связать ее с коленвалом, то
оставим ее пока в покое и начнем с шатуна.
Выделяем шатун и идем в панель Hierarchy, нажимаем кнопку IK и…
…и немного подумаем: наш шатун должен вращаться вокруг только одной
оси. И не должен никуда скользить. А посему, в свитке Sliding Joints не
должно быть установлено ни одной галочки. Впрочем по умолчанию там
ничего и нет.
Теперь вращение - очевидно, что у нас это будет только ось Y. В разделе Y Axis свитка Rotation Joints оставляем галочку Active.
Для осей X и Z – снимаем.
Поршень может скользить только по оси Z и не может вращаться - расставляем и снимаем галочки соответственно.
Итого: шатун – Rotational Y, поршень – Sliding Z.
Теперь Piont02.
Она нужна нам только потому, что у нас будет V- образный двигатель,
если бы цилиндры располагались вертикально то она была бы лишней. Ниже
я покажу почему.
Для нее снимаем галочки в обоих свитках, или все на той же панели
Hierarchy, но уже в свитке Object Parameters ставим галочку Terminator
- это остановит вычисление цепи и предотвратит нежелательные движения.
Осталось связать Point01 с коленвалом. Выделите ее и перейдите на
панель Motion. В разделе End Effectors свитка IK Controller Parameters
нажмите кнопку Link и щелкните на нашем коленвале.
После этого вам, вероятно, придется выровнять положение Концевого Эффектора (зеленое перекрестье) для Point01.
Имеет смысл сразу увеличить значение в разделе Solution свитка IK
Controller Parameters. По умолчанию оно зависит от активного временного
сегмента. Поставьте немного больше того количества кадров которые вы
впоследствии будете визуализировать. Просто чтобы не возвращаться.
Поскольку мы в свободном полёте и делаем не по чертежам, то пускай цилиндры этого мотора будут расположены под углом 90˚.
Если сейчас попробовать повернуть всю цепь –( Point01- шатун – поршень
– Point02), то у нас ничего не получиться. Мы можем это сделать
переместив Point 02, но в этом случае проблем с последующим
выравниванием объектов нам не избежать. А нам нужно не просто повернуть
нашу цепь, а ещё и создать её копию. Но задача решается очень просто –
выделяем любой объект нашей цепочки, скажем шатун, и на панели Motion,
в свитке IK Controller Parameters устанавливаем галочку
( показать начальное состояние) – это позволит нам повернуть всю цепь без учёта действия контроллера IK.
Следующая задача - повернуть всю цепь относительно коленвала.
Выделяем Point02. Поскольку мы поместили коленвал в начало координат,
то выбираем инструмент Select and Rotate, выбираем координатную систему
World и Use Transform Coordinate Center, включаем Angle Snap Toggle -
как показано ниже.
И поворачиваем Point02 на 45 градусов по оси Y.
Затем при нажатой клавише Shift поворачиваем на 90 градусов в отрицательном направлении по оси Y и получаем копию нашей цепи.
Остаётся только переместить новую полученную цепь в положительном
направлении по оси Y на ширину шатуна, так чтобы она заняла свое
законное место,
и снять галочки.
И все встаёт на свои места.
Заметьте, что в случае с HD Solver, для копирования всей цепи
достаточно выделить лишь один из ее объектов. То же самое относится и к
удалению. Если какой-то из объектов вдруг оказался вам не нужен, то
следует нажать кнопку Delete Joint свитка IK Controller Parameters.
Попробуйте временно удалить Point02 и воспроизвести анимацию. Как было
сказано выше, движение объекта в цепи определено координатной системой
его родителя. Поскольку поршень, теперь сам оказался родительским
объектом, то ему ничего не остаётся, как перемещаться, используя
глобальную систему координат. Именно для этого нам и нужна Point02.
Отмените удаление.
Таким образом, мы можем быстро создать любое количество уже настроенных цилиндров нашего мотора.
Но не будем забегать вперед. Чтобы придать нашему мотору более или
менее законченный вид нам понадобится еще много деталей – клапана,
распределительный вал, шестерни и пр.
Продолжим с создания привода распред. вала.
Схемы привода бывают разные – цепная или ременная передача, набор
шестерен. Я выбрал последнее, для этого нам понадобятся две шестерни.
Одна из них, ведущая – это только название. На самом деле она ничем не
управляет, а наоборот является дочерним объектом по отношению к приводу
КВ. То есть, вращение коленвала и ведущей шестерни будет управляться
Circle. Вторая, ведомая – с ней впоследствии мы свяжем распред. вал.
В реальном четырехтактном двигателе частота вращения распределительного
вала должна быть в два раза меньше частоты вращения коленчатого вала.
Поэтому ведомая шестерня должна иметь радиус и количество зубьев в два
раза больше чем ведущая.
Для этой цели, в окне Front, создадим два цилиндра. Ваши параметры,
скорее всего, будут совсем другими, но нам важны только относительные
значения Radius и Sides, которые для ведомой шестерни в два раза больше.
Причем значение Sides должно быть четным.
И сделаем из них некое подобие шестерен - выдавив полигоны.
Я сделал их с помощью лофтинга, но суть остается прежней.
Разумеется, придется выровнять положение шестеренок. Ведущую относительно коленвала, а ведомую относительно ведущей.
Для анимации ведомой шестерни используем Wire Parameters - свяжем ее с приводом КВ.
Выделяем ведомую шестерню, щелкаем правой кнопкой мыши и выбираем Wire Parameters.
затем
дальше тянем пунктир к приводу КВ и выбираем следуещее
Откроется окно Parameter Wiring
Привод КВ будет управлять вращением ведомой шестерни поэтому нажмем
кнопку со стрелкой указывающей влево – то есть на ведомую шестерню.
В левом нижнем окошке показано выражение для ведомой шестерни
Y_Rotation. Это означает, что ведомая шестерня будет вращаться в том же
направлении по оси Y и с той же скоростью что и привод КВ. Прежде чем
нажать кнопку Connect мы изменим это выражение.
Где –Y означает, что вращение будет происходить в противоположном направлении по оси Y.
А /2 – то, что вращение будет в два раза медленнее.
Жмем Connect.
Возможно, после этого вам придется немного повернуть ведущую шестерню, чтобы зубья не проходили друг через друга.
Затем нам потребуется механизм газораспределения.
Хоть я и сказал в начале урока, что его целью не является сборка
двигателя, как такового, но на некоторых аспектах мне волей неволей
останавливаться приходится.
Для начала сделаем всего один кулачек распределительного вала,
остальные добавим потом и соберем из них единый объект, который будет
связан с ведомой шестерней, просто так нам будет удобнее работать.
Затем делаем следующие объекты
и выравниваем глобально опорные точки, как показано ниже.
обратите внимание на расположение опорной точки штанги и клапана – они
находятся в верхней их части, там, где они соединяется с коромыслом.
Дальше все выглядит примерно следующим образом.
Для удобства можно создать выделенный набор из новых объектов и назвать его – ну скажем, ГРМ.
Следующая задача повернуть вновь созданные объекты таким образом, чтобы
штанга и клапан располагались параллельно движению поршня. Помните, как
мы делали это с цепочкой (Point01 – шатун – поршень – Point02)? Тогда у
нас была иерархическая цепь с уже назначенным ей HD Solver. Мы снимали,
и вновь устанавливали какие то там галочки, поворачивали ее
относительно глобальной системы координат.
Сейчас рассмотрим немного другой подход – сначала выровняем, вернее,
повернем наши объекты, а уже потом создадим иерархию и назначим
контроллер IK.
Выделяем наш набор ГРМ. Выбираем инструмент Select and Rotate,
раскрываем список Reference Coordinate System и выбираем координатную
систему Pick (выборочная) и …
…и щелкаем на нашем кулачке.
Выбираем Use Transform Coordinate Center
, включаем Angle Snap Toggle
.
Таким образом, мы сможем повернуть весь наш выделенный набор на 45˚ относительно кулачка распредвала. См. рис. Выше.
Далее выделяем Толкатель, выбираем инструмент Select and Link и
связываем – (толкатель - штанга - коромысло). Снова выделяем толкатель
и в меню Animation выбираем IK Solvers – HD Solver, тянем пунктир и
щелкаем на коромысле.
Затем выбираем клапан и связываем с Point клапана – и назначаем этой цепи HD Solver.
Осталось все это настроить.
Помните, как мы делали это с шатуном и поршнем? Нам нужно расставить и
снять ненужные галочки Active в свитках Sliding Joints и Rotational
Joints на панели Hierarchy, определив тем самым возможное движение
объектов по выбранным осям.
Выберем систему координат - Parent и посмотрим, какой из объектов и куда должен двигаться.
Штанга должна немного поворачиваться в месте соединения с коромыслом –
устанавливаем галочку - Y Rot. ( то же самое у нас получилось с шатуном
). Все остальное снимаем.
Коромысло – Y Rot.
Клапан – Z Sliding.
Для Point клапана установите галочку Terminator.
Клапан необходимо связать с коромыслом . Выделите его и перейдите на
панель Motion. В разделе End Effectors свитка IK Controller Parameters
нажмите кнопку Link и щелкните на коромысле. При необходимости
выровняйте. Точно также мы поступили с Point01 когда связывали ее с
коленвалом.
Подвигайте толкатель вдоль его локальной оси Z. Это заставит клапан открываться и закрываться.
В реальном двигателе открытие клапана, как впускного так и выпускного,
происходит с некоторым опережением, т. е. еще до прихода поршня в
верхнюю или нижнюю мертвую точку соответственно. Закрытие производится
с запаздыванием. Кроме того, имеется период, когда оба клапана открыты
одновременно, - так называемое перекрытие клапанов. В разных двигателях
все эти углы отличаются. В этом уроке я не буду это описывать и
учитывать - чтобы никого не запутать. Да и урок, и без того
немаленький, может превратиться в научный доклад. Если кому очень
хочется то подробную информацию, о фазах газораспределения, вы найдете
без особого труда.
Да! Если бы нашей целью было - показать крупным планом именно работу
газораспределительного механизма, то это бы имело смысл сделать, а так,
клапана все равно будут открываться и закрываться вовремя и разницу в
несколько градусов все равно никто не заметит. Отсюда вывод – никогда
не делайте того, что все равно не будет видно.
В окне Top сделайте три копии кулачка и расположите их примерно следующим образом.
1 и 3 кулачек будут приводить в движение выпускной и впускной клапан правого цилиндра соответственно.
2 и 4 – выпускной и впускной левого цилиндра.
Выделяем набор ГРМ и выровняем их положение относительно первого кулачка.
Затем делаем копии и отражение выделенных объектов .
В окне Front выделите коленвал и выберите инструмент Select And Rotate
и координатную систему World. Убедитесь в том, что коленвал ни куда не
повернут – значения по всем осям должны быть равны нулю.
Выделите Привод КВ и поверните на -45 ˚ по оси Y. Таким образом, поршень левого цилиндра окажется в его верхней мертвой точке.
Затем повернем кулачки по оси Y.
1 кулачек, на рисунке ниже он показан красным, на 35˚.
2 ( синий ) на -100˚.
3 ( розовый ) на 135˚.
4 ( голубой ) на 0˚
В окне Front должно быть следуещее:
далее выделите все кулачки и свяжите их с ведомой шестерней.
Далее, для анимации толкателей и всего что за этим последует ( штанга, коромысло, клапан ), мы используем Reaction Manager.
Выбираем меню Animation – Reaction Manager.
Откроется, пока еще пустое, окно.
Хочу сразу заметить, что это не самый простой инструмент, но с его
помощью и при правильном подходе можно решить множество различных
задач, облегчив себе работу в будущем. Поэтому с ним стоит разобраться
подробнее. Тем, кто столкнулся с этим в первый раз, советую прежде
выполнить пару более простых уроков и покопаться в хелпе.
Выделяем ведомую шестерню и на панели Motion раскроем свиток Assign Controller.
Затем в Reaction Manager нажимаем кнопку Add Master
и щелкаем на треке вращения нашей шестерни.
В результате в списке Reactions появится имя нашей шестеренки – она добавлена как Master.
Мой Reaction Manager отказывается понимать кириллицу, поэтому пришлось немного переименовать объекты.
Прежде чем добавить сюда толкатель, давайте посмотрим, что у нас должно получиться.
Нам нужно создать три состояния для толкателя при определенном положении кулачка.
Я решил начать с левого цилиндра нашего двигателя, если конечно смотреть на него в окне Front.
Для удобства оставьте видимыми только кулачек2, соответствующий ему толкатель и привод КВ.
Затем повернем привод КВ, чтобы кулачек занял положение как на рис.1 выше.
Выделяем толкатель и нажимаем кнопку Add Slave
и на панели Motion щелкнем на треке -
Это автоматически назначит толкателю контроллер Reaction и создаст первое состояние – State01
Ваши значения в столбце Value, разумеется, будут отличаться от тех, что на рисунке, но это не важно.
Затем, нажимаем кнопку Create Mode и повернем приводКВ, так чтобы кулачек занял положение как на рис.2 выше.
Нажимаем кнопку Create State
В списке States появится второе состояние.
Дальше снова поворачиваем приводКВ чтобы кулачек занял положение как на
рис.3 выше, перемещаем толкатель и нажимаем кнопку Create State.
Выходим из способа создания, отжав кнопку Create Mode.
Таким образом мы создали три состояния. Попробуйте вращать приводКВ –
теперь наш толкатель движется, но его движение не совсем точно – он
немного проходит через кулачек. Что бы избежать этого нам следовало бы
создать ещё пару промежуточных состояний.
Теперь добавим следующий толкатель.
Оставьте видимыми приводКВ, кулачек 4 и соответствующий ему толкатель4.
Поверните приводКВ так-же как и в предыдущем случае, т. е.чтобы кулачек
4 занял положение как на рис.под номером1. Выделяем толкатель и
нажимаем кнопку Add Slave, при этом в списке Reactions строка с
надписью - vedom. sh./ Rotation должна быть выделена. И снова на панели
Motion щелкаем на треке.
В результате имя толкателя 4 появится в списке Reactions, а в списке States появится новое созданное состояние – State04.
Далее в списке Reactions выделяем строчку
Дальнейшие действия аналогичны тем, что мы уже выполняли.
Нажимаем кнопку Create Mode и поворачиваем приводКВ чтобы кулачек 4
занял положение под номером 2 на рис. выше и щелкаем на кнопке Create
State. Затем снова повернем приводКВ чтобы кулачек занял положение 3 и
переместим толкатель как на рисунке. Снова щелкаем на кнопке Create
State и выходим из способа создания отжав кнопку Create Mode.
В Reaction Manager должно быть примерно следующее
Итак! Мы заставили открываться и закрываться клапана для одного из
наших цилиндров. Если вам ясен принцип, то вы без особого труда, по
аналогии, сможете продолжить настройку для оставшихся двух толкателей.
Таким образом, у нас получился анимированный двухцилиндровый четырёхтактный
двигатель,
но вся прелесть в том, что мы имеем только два ключа анимации и
соответственно не составит ни какого труда увеличить скорость его
вращения, остановить и запустить снова.