Michel Anders - Написание скриптов для Blender 2.49

Здесь есть возможность читать онлайн «Michel Anders - Написание скриптов для Blender 2.49» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Написание скриптов для Blender 2.49: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Написание скриптов для Blender 2.49»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Расширьте мощность и гибкость Блендера с помощью Питона: высокоуровневого, легкого для изучения скриптового языка

Написание скриптов для Blender 2.49 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Написание скриптов для Blender 2.49», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

idprop['NormalAlign']= align.val

Как показано, свойство NormalAlignпо умолчанию будет установлено в True(Истина). Опция затем будет представлена как простое выпадающее меню с кнопкой-переключателем. Если пользователь щелкает за пределами меню или нажимает клавишу Esc , PupBlock()вернёт значение None, мы не будем изменять свойство NormalAlign. В противном случае, оно будет установлено в соответствии со значением кнопки-переключателя.

Эффекты показаны на иллюстрациях. Первая показывает небольшую ёлку с ограничениемпривязки к вершине простой подразделенной плоскости земли. Она привязана в точную позицию вершины, но ось z указывает ровно вверх вдоль глобальной оси z. Скриншот показывает ёлку с ограничениемк вершине в скалистом пейзаже.

Если мы включим свойство NormalAlign, мы увидим, что модель дерева больше не указывает ровно вверх, но что ось z выровнена вдоль направления вершинной нормали той вершины, к которой она привязана. Следующий скриншот показывает елку с ограничениемк вершине и выравниванием вдоль вершинной нормали.

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

Привязка к вершинам в вершинной группе

Что, если мы хотим определить конкретно те вершины, к которым мы можем привязать объект? Это можно достигнуть, определив группу вершин, и, затем, рассматривая только вершины из этой группы в качестве кандидатов, к которым можно привязывать. Код необходимый для этого, увеличится всего на несколько строк, и важная часть doConstraint()будет выглядеть примерно так (выделенный код показывает дополнительные строки, имеющие дело с проверкой на принадлежность к группе вершин):

# получаем целевой меш

to = Blender.Object.Get(idprop['target_object'])

me = to.getData(mesh=1)

# получаем положение целевого меша

tloc = targetmatrices[0].translationPart().resize3D()

# ищем ближайшую вершину в целевом объекте

smallest = 1000000.0

delta_ob=tloc-obloc

try:

verts = me.getVertsFromGroup(idprop['VertexGroup'])

for vi in verts:

d = (me.verts[vi].co+delta_ob).length

if d < smallest :

smallest = d

si = vi

obloc = me.verts[si].co+tloc

vnormal = me.verts[si].no

except AttributeError:

for v in me.verts:

d = (v.co+delta_ob).length

if d < smallest:

smallest=d

sv=v

obloc = sv.co + tloc

vnormal = sv.no

Автор здесь нарушил одно из важнейших правил качественного программирования, которое гласит «Нет дублированию кода!» Текст после try желательно переписать, например, так:

try:

verts = me.getVertsFromGroup(idprop['VertexGroup'])

except AttributeError:

verts = range(len(me.verts))

for vi in verts:

d = (me.verts[vi].co+delta_ob).length

if d < smallest :

smallest = d

si = vi

obloc = me.verts[si].co+tloc

vnormal = me.verts[si].no

Примечание занудного и наглого переводчика Striver'а

Конструкция try/exceptгарантирует, что если свойство VertexGroupссылается на несуществующую группу вершин, мы получим шанс проверить все вершины. Конечно, нам теперь нужен способ для пользователя, позволяющий выбирать группу вершин, так что функцию getSettings()нужно тоже адаптировать. Мы довольствуемся простым полем ввода строки, где можно набрать имя группы вершин. Нет проверки на существование группы, и если мы не хотим ограничиваться привязкой к группе вершин, тогда мы можем или оставить это поле ввода пустым, или занести имя несуществующей группы. Не слишком изящно, но это работает (дополнительные строки выделены):

def getSettings(idprop):

if not idprop.has_key('VertexGroup'):

idprop['VertexGroup'] = 'Zone'

if not idprop.has_key('NormalAlign'):

idprop['NormalAlign'] = True

vgroup = Draw.Create(idprop['VertexGroup'])

align = Draw.Create(idprop['NormalAlign'])

block = []

block.append("Additional restrictions: ")

block.append(("Vertex Group: ",vgroup,0,30,"Vertex

Group to restrict location to"))

block.append(("Alignment: ",align,

"Align along vertex normal"))

retval = Draw.PupBlock("Zoning Constraint", block)

if (retval):

idprop['VertexGroup']= vgroup.val

idprop['NormalAlign']= align.val

Следующий скриншот показывает, как может выглядеть поле ввода для группы вершин:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Написание скриптов для Blender 2.49»

Представляем Вашему вниманию похожие книги на «Написание скриптов для Blender 2.49» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Написание скриптов для Blender 2.49»

Обсуждение, отзывы о книге «Написание скриптов для Blender 2.49» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x