 | 3D-МАСТЕРСКАЯ :: Использование скрипта BMG |
Использование скрипта BMG (Blender Mechanical Gears)
Автор: Stefano Selleri
О статье: В рамках этой статьи рассматривается задача по моделированию и анимации зубчатой механической передачи, решаемая с помощью скрипта BMG.
Одна из задач моделирования и анимации механизмов — необходимость воспроизвести механическую зубчатую передачу. Шестерёнки передачи — не просто колёса с «зубами». Возможно таковыми они и были давно, на заре изобретения, но в современной механике хорошо изучены методы рациональной передачи вращения от одной оси к другой, а также точно известно какую шестерёнкам нужно спроектировать форму для максимальной эффективности.
Теоретическую базу можно почерпнуть из документации типа [1] (см. ссылкографию в конце статьи). Я не хотел бы рекламировать никаких конкретных производителей механических передач, но это руководство, с помощью которого я строил свои зубчатые передачи и на основании которого был написан мой скрипт и документация к нему [2].
В основном механизм должен быть спроектирован так, чтобы сцепление зубьев соседних шестерёнок было плотным без лишнего трения и износа. Это гарантирует эффективную передачу крутящего момента и низкий уровень шума. Математически рациональный профиль зубъев описывается теорией эвольвенты. Эвольвента окружности - плоская развёртка неподвижной окружности. Может быть представлена, как траектория точки на конце нити, сматываемой с неподвижной катушки. По эвольвенте строится профиль зубьев шестерёнок. Главная особенность эвольвентного профиля зубьев — то, что зубья соседних шестерёнок в период вращения сцепляются без проскальзывания, а как бы катятся профиль по профилю, что обеспечивает постоянные силу и угол давления. В принципе теории достаточно,поскольку всю математическую сторону дела будет в дальнейшем рассчитывать скрипт BMG, просто интересующиеся могут почитать документы [1]; [2] или поискать материалы в сети.
Скрипт
Скрипт BMG можно скачать по ссылке [3]. В принципе это комплект из двух скриптов. Моделирующий (BMGm) для построения шестерёнок и вращающий (BMGs) — для приведения передачи в движение. Для начала сосредоточимся на первом. BMGm относится к категории меш-скриптов и будучи правильно установленным располагается в скриптовой строке Mesh. При запуске должно появиться окно скрипта (Рис.1).
Пока скрипт может генерировать цилиндрические (Cylindrical) и конические (Conical) передачи. Вид червячной передачи (Worm) ещё пока не работает, хотя кнопка уже есть. В этой статье рассмотрим цилиндрическую передачу для демонстрации действия скрипта. Пройдёмся по группам свойств скрипта.
Основные параметры шестерни (Main Gear Parameters)Группа параметров определяет основной внешний вид шестерни. Основной параметр двух соседних сцепляющихся колёс — радиус передачи (
Pitch Radius). Это радиус окружности с центром на оси шестерни, проходящей через точку сцепления. Это первый важный параметр. Pitch Radius, как и другие параметры, задаётся в Блендер-единицах (BU). Оставим его значение пока такое, как установлено по умолчанию равным 5.
Тееth No — второй важный параметр. Он означает количество зубъев, которыми оснащена шестерня. Поставим значение -25.
Press Ang - Угол давления (Pressure Angle) – весьма важен с точки зрения механики, однако менее важен для компьютерной графики. Он обозначает угол между касательной плоскостью к контактной поверхности зуба шестерни в точке контакта и плоскостью, соединяющей оси вращения двух колёс. Возможно пока лучше оставить тоже параметр по умолчанию -20º.
Heli. Ang.(Helical Angle) – угол скручивания. Предназначен для построения геликоидальных шестерней с косыми зубьями. Обычные шестерни имеют прямые зубья. Геликоидальные производят меньше шума и меньший ход при включении — отключении передачи, но гораздо большую стоимость производства. Поскольку все эти параметры абсолютно не важны в CG, то оставим наши зубья прямыми. Heli. Ang.=0.
Addendum и
Dedendum — характеризуют общую длину зуба и обозначают расстояния соответственно выше и ниже точки контакта. Это критичный параметр. Во первых Addendum не может быть больше, чем Dedendum, иначе вы получите проблемы с мешем. Во вторых их значения связаны с количеством зубьев в шестерне и должны настраиваться с учётом правила: большое количество зубьев — меньшее значение A и D, малое количество зубьев — большее значение A и D. У нас среднее количество зубьев — 25, поэтому оставим значение обоих по умолчанию — 0.4.
Фаска (Beveling)В настоящих механизмах нет абсолютно острых граней. Грани обычно сглаживаются фасками. Фаски в BMG имеют две настройки.
Fillet обозначает радиус скругления при устройстве круглой фаски на верхней и нижней поверхности зуба.
Bevel — величина прямого скоса фаски.
Параметры меша (Mesh Parameters)Скрипт будет генерировать один зуб шестерни с заданным уровнем подробности. Уровень подробности представлен двумя параметрами.
Resolution(разрешение) — разрешение меша по периметру зуба. Его сохраняем дефолтным- 2, если вы планируете и приближать и удалять камеру.
Long. Res. (Longitudinal Resolution) – меридиональное разрешение — разрешение меша вдоль высоты зуба. Имеет значение только для геликоидальных шестерёнок с косыми зубьями. И, наконец,
Thickness (толщина) — задаёт толщину шестерни, а Width (ширина) — ширину обода колеса по направлению к центру вращения.
Приёмник передачи (Pinion)Мы не получим настоящую зубчатую передачу, не назначив тип зубчатого приёмника передачи от нашей шестерни. Здесь мы можем кнопками выбрать тип.
No Pinion – Нет приёмника;
Pinion – Стандартная — зубчатое колесо (gear);
Rack — прямая зубчатая полоса; Crown —зубчатое колесо с «обратными» зубьями — с зубьями, направленными к центру вращения. Ну и
Teeth No. - число зубьев приёмника. Выбираем для нашей передачи опцию
Pinion и
Teeth No.=12

Если теперь нажать нижнюю кнопку
Generate (Генерировать), то мы увидим сцену как на рис. 2.
Заметьте, что скрипт генерирует по одному зубу для передающего и принимающего колёс. Ведущее колесо располагается с центром вращения в точке начала координат (0, 0, 0), Радиус передачи (Pitch Radius) равен 5BU (в этой точке зубья соприкасаются) Радиус приёмного колеса скрипт рассчитывает автоматически и располагает его центр вращения на оси в виде жёлтой точки (на рисунке справа) и генерирует его слегка повёрнутым для ясности представления.
Наша следующая задача достроить полную форму ведущего и принимающего колёс.
Подгонка мешей шестерёнок
Сперва повернём меш зуба ведущей шестерни на 1/50 от 360º (то есть На 7,5º) вокруг центра вращения. Это выровняет нижний край зуба в плоскости
XZ. (Рис.3.1) В виде спереди экструдируем вершины верхнего края и выравниваем их к оси (Рис 3.2). Дублируем вершины, сдвигаем их к центру вращения и строим из них профиль внутренней части колеса (Рис 3.3). Теперь дублируем все новые вершины и зеркально отображаем их по оси Z относительно курсора.

Теперь оставляем все новообразованные вершины выбранными и переходим в вид сверху. В идеале нам нужно повернуть в режиме ЕМ опцией
Spin Dup в панели
Mesh Tools ([
F9])три копии вершин против часовой стрелки на 14.4º. К сожалению Blender здесь не поддерживает дробных чисел, поэтому повернём 15 копий на 72º против часовой стрелки. (Рис 4.1). Теперь выбираем вершины зуба и поворачиваем 5 копий на те же 72º. Вы получите лишнюю копию зуба. (Рис 4.2) Удалим её и удалим дубликаты вершин.

Поверните весь фрагмент колеса на 36º, чтобы он встал симметрично, относительно плоскости
XZ. Теперь экструдируем несколько вершин внутренней части до наружной и слегка масштабируем. Это сформирует спицу шестерни. (Рис. 5.1 и 5.2) Хорошо было бы применить к граням спицы Bevel, чтобы сделать фаски. (Рис. 5.3)
Теперь осталось применить Spin Dup в количестве 4-х копий на 288º, а также удалить дубликаты вершин. Также слегка удлиним внутреннее кольцо шестерни по оси Z, чтобы наше колесо не было совсем уж плоским.
А теперь всё то же самое проделаем с зубом ведомого колеса и сформируем шестерню-приёмник. Однако поскольку приёмник значительно меньше ведущего колеса, то вы не сможете сделать его таким же сложным. Не хватит места для моделирования спиц. Поэтому помним, что у приёмной шестерни 12 зубьев, следовательно один зуб занимает сектор круга в 30º (360º/12). В конце концов вы должны получить шестерню, похожую на ту, что изображена на рис. 6. Теперь дайте объектам подходящие имена. Веждущую шестерню назовём 'Gear', а принимающую — 'Pinion'. Или как-то так, вобщем, чтобы вам самим было понятно.
Подготавливаем шестерни к вращению!Для правильного отображения вращения шестерёнок следует сделать несколько подготовительных шагов, но сперва усложним слегка наш механизм, поскольку две шестерёнки — маловато. Продублируем обе наши шестерни и сдвинем копию так, чтобы новое ведущее колесо стало на одну ось с исходной ведомой шестернёй. (См. Рис. 7)

Теперь дадим новым объектам другие имена. Например новое ведущее колесо я назову 'GearB', а новое ведомое — 'PinionB'. Будьте внимательны. Объекты 'Pinion' и 'GearB' должны иметь абсолютное совпадение по осям X и Y, и смещение по оси Z.
Теперь добавим объект пустышку (empty) к каждому колесу. Пустышка должна размещаться в центре каждого объекта и ось z пустышки должна быть направлена вдоль оси вращения шестерни.

Даём всем пустышкам совпадающие имена (EmptyG; EmptyP; EmptyGB; EmptyPB) — см. рис. 8. Всё это необходимо, так как скрипт вращения (BMGs) генерирует вращение относительно оси Z, и если объекты будут смещены и не будут находиться в плоскости XY, то это приведёт к странным результатам.
Теперь сделаем пустышки родительскими по отношению к соответствующим колёсам, чтобы двигая или вращая только пустышки, заставить колёса двигаться должным образом. Запускаем скрипт BMGs из скриптового подменю '
Animation'. Появится небольшой интерфейс с кнопкой '
Add' (Добавить).
Нажимаем её 4 раза (поскольку у нас 4 колеса) — появятся 4 табличные строки. В этих строках 1-я колонка (
Ob:) представляет из себя список имён объектов-шестерёнок. Заполняем имена. В 1 строке пишем 'Gear'; во 2-й – 'Pinion'; в 3-й – 'GearB'; ну и в 4-й – 'PinionB'.

2-ю колонку (
Te:) заполняем в соответствии с количеством зубьев на соответствующих шестернях. 'Gear' и 'GearB' — 25, а 'Pinion' и 'PinionB' — 12. Так мы заполнили нашу базу данных шестерёнок (Gears Database). (Рис. 9.1) Эта база содержит информацию о тех объектах сцены, которые действительно являются шестернями и должны вращаться. Также вы видите кнопки Save и Load, то есть вы можете сохранять/загружать базу на диск (скрипт генерирует XML-файл). Я вам советую это сделать, потому что база данных будет потеряна, как только вы выйдете из Blender. (Хотя результаты, сгенерированные скриптом не будут потеряны!)
Теперь нажимаем кнопку Links (Связи) и заполняем базу данных связей (Links database). Добавим кнопкой
Add 3 строки. База содержит информацию о том, какое колесо с каким связано. Первая колонка каждой строки содержит имена ведущих колёс, а вторая — ведомых. Третья колонка — тип связи, определяющий способ взаимодействия мешей. Эта зависимость может быть типа Mesh, при которой ведомое колесо крутится в направлении, противоположном вращению ведущего колеса со скоростью, зависимой от количества зубьев. Для разных шестерён, находящихся на одной оси (соосных) тип связи должен быть Fixed (Фиксированный), так как скорость вращения у них одинаковая. В редких случаях для шестерён геликоидальных или типа «корона», когда ведомая шестерня вращается в одном направлении с ведущей применяется тип связи InvMesh.
В нашем примере в первой колонке первой строки пишем 'Gear', во второй — 'Pinion', а в третьей выбираем тип 'Mesh'. На второй строке в первой колонке 'Pinion' - теперь ведущее колесо, во второй 'GearВ' — ведомое, а в третьей 'Fixed' — тип связи для соосных шестерней. В третьей строчке: первая колонка 'GearВ' — ведущее, вторая колонка — 'PinionВ' — ведомое, тип связи в третьей колонке опять же 'Mesh'.

Таким образом База данных связей содержит информацию о последовательности связей при передаче вращения. Если шестерня вращается, то её вращение передаётся ведомой шестерне, от той к следующей и т. д. Строки в третьей колонке имеют кнопки, дающие выбор типа связи из списка. Выполнением настройки связей мы заканчиваем настройку скрипта (Рис.9.2) и можем нажать кнопку
Generate (Сгенерировать). Будет сгенерирован новый скрипт
DriverSL (Рис.10). Он хранится в .blend-файле и не будет потерян, когда вы выйдете из Blender (конечно, если вы его перед этим сохраните).

Для завершения настроек зайдите в панель
Script в
Buttons Window и добавьте новый связанный скрипт сцены. В качестве события выбираем
Frame Changed, а в качестве связанного скрипта ставим
DriverSL . (Рис. 11)
Поехали!Ну вот мы и добрались до финала. Для начала быстро переключитесь с кадра 1 на кадр 2 и обратно. Если какие-то шестерни не были в начальном положении это их вернёт к нему. (в нашем случае ведомые шестерни).
Теперь вы даже можете вращать пустышки (не сами шестерни!!) и понаблюдать верное взаимодействие при вращении колёс.
Теперь выбираем первое ведущее колесо (в нашем случае 'Gear') и в редакторе IPO добавляем к нему IPO вращения по RotZ (только RotZ)
Рис 12. Установки IPO.Теперь нажимаем Alt-A и видим, что наши шестерни правильно вращаются с верной скоростью!
Вот и всё.
Ссылкография:[
1]
http://www.bostongear.com/pdf/gear_theory.pdf[
2]
http://projects.blender.org/viewcvs/viewcvs.cgi/bstar/BMG/BMG-0.0.2.pdf?cvsroot=bstar[
3]
http://projects.blender.org/viewcvs/viewcvs.cgi/bstar/BMG/?cvsroot=bstar
Автор: Stefano Selleri
< назад ::
Оглавление ::
вперед >