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

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

Эти функции делают очень легким назначение одинакового индекса материала во все группы вершин, которые имеют аналогичные имена, например все хвосты и сегменты грудной клетки меша, создаваемого creepycrawlies.py (они все имеют такие имена как, например, tail.0, tail.1, , и так далее).

Функция доступна в Tools.py. Она зависит от функции Питона re.search(), которая  сопоставляет регулярное выражение со строкой. Выделенная строка показывает, что мы вставляем строку регулярного выражения в так называемые якоря (^ и $). Этим путём регулярное выражение, такое как например, aaaa, сопоставится только с группой вершин с именем aaaa, а не с именем aaaa.0, так что мы сможем различить их, если мы хотим. Если же мы хотим соответствия всем именам групп вершин, которые начинаются с tail, мы могли бы, например, передать регулярное выражение tail.* .

Регулярные выражения являются чрезвычайно мощным способом сопоставления строк. Если Вы незнакомы с ними, Вы должны обратиться к документации   по   модулю   Питона  re (http://docs.python.org/library/re.html).  Можно начать, например, с http://wiki.intuit.ru.

Другая вещь, которую нужно отметить в этой функции — использование операций с множествами. Они немного ускорят процесс, так как операции с множествами в Питоне чрезвычайно быстрые. Мы используем их здесь, чтобы проверять множество вершин (или, скорее, их индексов), которые составляют грань, на то, что все они входят в множество индексов вершин, находящихся в некоторой группе вершин. Мы заранее вычисляем оба множества индексов вершин, те, которые принадлежат группе вершин и индексы вершин каждой грани, и храним их в словарях для легкого доступа. Таким образом, мы создаем эти множества только однажды, для каждой группы вершин и для каждой грани соответственно, вместо воссоздания каждого множества всякий раз, когда мы сопоставляем регулярное выражение. Для больших мешей это потенциально сохранит много времени (за счет памяти).

import re

def matindex2vertgroups(me,matgroups):

   if len(matgroups)>16 :

      raise ArgumentError("number of groups larger than

                     number  of materials possible (16)")

   groupnames = me.getVertGroupNames()

   vertexgroupset={}

   for name in groupnames:

      vertexgroupset[name]=set(me.getVertsFromGroup(name))

      print name,len(vertexgroupset[name])

   faceset={}

   for f in me.faces:

      faceset[f.index]=set([v.index for v in f.verts])

   for i,matgroup in enumerate(matgroups):

      for name in groupnames:

         if re.search('^'+matgroup+'$',name):

            for f,vset in faceset.items():

               if vset.issubset(vertexgroupset[name]) :

                  me.faces[f].mat = i

            break

<p>Итог</p>

В этой главе, мы видели как сделать жизнь легче для наших конечных пользователей, определяя вершинные группы у мешей, чтобы упростить выбор определенных характеристик. Мы также видели, как назначать материалы вершинам, и как создавать новые материалы, если нужно. Первые шаги были предприняты, чтобы оснастить (rig) меш. В частности, мы узнали:

• Как определять вершинные группы

• Как назначать вершины в вершинные группы

• Как назначать материалы граням

• Как назначать вершинам вершинные цвета

• Как устанавливать свойства рёбер

• Как добавлять модификатор

• Как покрывать кожей кости

Далее мы выйдем за пределы статики, и увидим как управлять перемещением объектов.

<p>4</p><p>PyDrivers и Constraints (Управляющие объекты и Ограничения)333</p>

Перевод: S.Lavik, Striver

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

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

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

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

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

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

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

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

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