Читаем Написание скриптов для Blender 2.49 полностью

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

p.q(1.542,0.655,ob('DriveShaftPart').RotX)

Точные значения для L и R были взяты из меша, используя координаты соответствующих вершин шатуна и ведущего вала в окне Transform Properties. (кнопка N в окне 3D-вида)

Для самого шатуна можно использовать то же выражение для LocZ-канала, но нужно так тщательно сделать соединение поршня и шатуна, чтобы они точно совпадали.

Однако, движение шатуна не ограничено только перемещением по оси Z, так как он вращается вокруг оси X с центром в точке, соединяющей шатун с поршнем. Угол вращения (γ на диаграмме) можно вывести из значений L, R, и α:

def topa(l,r,a):

    Q=q(l,r,a)

    ac=acos((Q**2+l**2-r**2)/(2*Q*l))

    if a%(2*pi)>pi : ac = -ac

    return -ac

Pydriver выражение для RotX будет выглядеть вот так:

m.degrees(p.topa(1.542,0.655,ob('DriveShaftPart').RotX))/1 0.0

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

Наконец, в pydrivers.py мы определяем функцию spike(), которая принимает угол поворота распределительного вала как аргумент и возвращает значение между 0.0 и 1.0 которое резко возрастает в районе нулевого угла:

def spike(angle):

    t = (cos(angle)+1.0)/2.0

    return t**4

Сейчас клапан движется линейно, но линия, по которой он следует, наклонена на 10 градусов (вперед для впускного клапана, назад для выпускного клапана), теперь нам придется управлять двумя каналами, LocZ и LocY, каждый нужно умножить  на правильное значение для создания наклонного движения. Поэтому мы определим две функции в pydrivers.py:

def valveZ(angle,tilt,travel,offset):

    return cos(radians(tilt))*spike(angle)*travel+offset

def valveY(angle,tilt,travel,offset):

    return sin(radians(tilt))*spike(angle)*travel+offset

Обе функции возвращают расстояние в зависимости от угла поворота управляющего  объекта. Tilt (наклон) - наклон клапана (в градусах), travel — максимальная длина пути, по которому проходит клапан вдоль наклонной линии, а offset (компенсация) - значение, которое позволяет регулировать позицию клапана. Соответствующие pydriver-выражения для LocZ и LocY-каналов впускного клапана:

p.valveZ(ob('CamInlet').RotX+m.pi,-10.0,-0.1,6.55)

и

p.valveY(ob('CamInlet').RotX+m.pi,-10.0,-0.1,-0.03)

(Выражения для выпускного клапана аналогичны, но с положительным углом tilt.)

До сих пор, все IPO-каналы были каналами объекта, такими как расположение и вращение. Но также возможно управлять другими каналами, ведь нам нужно изменять энергию лампы, помещенной в свечу зажигания. В pydrivers.py мы для начала определим вспомогательную функцию  topi(), которая, в качестве аргументов, кроме угла вращения движущегося объекта принимает угол h (в радианах) и интенсивность i. topi() возвращает эту интенсивность, если угол двигающегося объекта находится между 0 и h, и ноль, если угол выйдет за  пределы этого ряда. Поскольку угол на входе функции, возможно больше, чем 2*pi (когда двигающийся объект пройдет больше чем полный круг), мы исправляем это выделенной операцией деления по модулю:

def topi(a,h,i):

    m = a%(2*pi)

    r=0.0

    if m

    return r

pydriver-выражение для канала энергии (называемый "Energ" в редакторе Кривых IPO), может быть выражено следующим образом:

    p.topi(ob('DriveShaftPart').RotX/2+m.pi,0.3,0.5)

Как видно, это выражение запустит «огонь» в свече зажигания при первых 17 градусах (0.3 радиан), установив энергию для этого цикла в 0.5 .

Больше мощности — комбинирование нескольких цилиндров в двигателе

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

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных