Blender.Window.Redraw()
except Exception as e:
Blender.Draw.PupMenu('Error%t|'+str(e)[:80])
Полный скрипт доступен в файле leftright.py. Формуле, вычисляющей вес, возможно, нужно некоторое объяснение: для того, чтобы назначить максимальный вес 1.0 в точке, лежащей на наибольшем расстоянии от центра объекта, мы должны масштабировать максимально возможным расстоянием. Мы могли бы пройтись циклом по всем вершинам, чтобы сначала определить максимум, но здесь мы решаем аппроксимировать этот максимум корнем от суммы квадратов размеров. Это заведомо больше максимального расстояния, так что максимальный вес, назначаемый любой из вершин, вероятно, будет меньше чем 1.0. Тем не менее, получение размера - значительно быстрее, чем расчет точного максимума для больших мешей. Также заметьте, что мы вычисляем расстояние до центра (центр объекта в режиме просмотра вершин в меше - всегда в (0, 0, 0)).
Он может отличаться от того, что пользователь может воспринимать как центр меша. (Центр объекта отображается как розовая точка в Блендере и может быть изменён, чтобы лежать в средней позиции всех вершин, с помощью Object | Transform | Center new.)
Результирующий вес для меша может выглядеть похожим на это:
Модификаторы
Модификаторы - это инструменты, которые изменяют меш не-разрушающим способом, и могут корректироваться интерактивно. Другие объекты также могут иметь модификаторы: 3d-текст, Метаболлы и Кривые, например. Эти объекты могут быть представлены как сетки, так что их тоже можно модифицировать. Всё же не все модификаторы могут быть связаны с этими объектами. При желании, эффекты модификаторов можно сделать постоянными, применив их (apply). Блендер обеспечивает целый ряд модификаторов от subsurface до всех видов деформирующих модификаторов. Таблица показывает список доступных модификаторов:
Модификатор Влияние групп вершин
displacement (смещение) да
curve (кривая) да
explode (взрыв) да
lattice (решетка) да
mask (маскирование) да
meshdeform (деформация мешем) да
shrinkwrap (усаживающаяся упаковка) да
simpledeform (простая деформация) да
smooth (смягчение) да
wave (волна) да
array (массив) нет
bevel (скос или фаска) нет
boolean (объединение/пересечение/вычитание объектов) нет
build (построение) нет
cast (бросать) нет
decimate (уменьшение количества вершин) нет
edgesplit (разделение рёбер) нет
mirror (зеркально) нет
subsurface (подразделение поверхности) нет
uvproject (UV-проецирование) нет
Particle system (Система частиц) да
Примечание:
На многие параметры можно воздействовать различными группами вершин
armature (арматура) да
Примечание:
Влияние каждой кости может быть ограничено единственной группой вершин
Много модификаторов возможно настроить так, чтобы ограничить их влияние специфичной группой вершин, и есть несколько специальных модификаторов. Система частиц считается модификатором, хотя обычно системы частиц управляются через свой собственный набор инструментов. Также, связь с группами вершин у неё в некотором смысле обратная: вместо ограничивающего влияния на вершины в пределах группы вершин, веса вершин группы могут влиять на все типы параметров системы частицы, как например, плотность эмиссии и скорости частиц. Мы увидим пример этого в секции Полёт искр.
Модификаторы Арматуры также немного специфичны, так как они не ограничивают свое влияние единственной группой вершин. Тем не менее, их можно сконфигурировать так, чтобы ограничить влияние каждой отдельной кости на специфичную группу вершин, как мы изучим в секции Кости.
С точки зрения программиста на Питоне, список модификаторов является свойством объекта (то есть, НЕ меша, лежащего в его основе). Объекты, ссылающиеся на один и тот же меш, могут иметь различные модификаторы. Этот список содержит объекты Модификаторов, и их можно добавлять к нему и удалять из него, а отдельные модификаторы можно перемещать вверх или вниз по списку. Порядок модификаторов в некоторых случаях важен. Например, при добавлении модификатора subsurface после зеркального модификатора результат может выглядеть отличающимся от того, что получится при добавлении зеркального модификатора перед модификатором subsurface.
Объект модификатора имеет тип и имя (первоначально представленное типом, но оно может быть установлено во что-то более подходящее). Тип - один из типов в списке констант в Modifier.Types. Каждый объект модификатора может иметь множество настроек, которые индексируются ключами, определёнными в Modifier.Settings. Не все настройки подходят для всех типов.