My-library.info
Все категории

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

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Michel Anders - Написание скриптов для Blender 2.49. Жанр: Программы издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Написание скриптов для Blender 2.49
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
254
Читать онлайн
Michel Anders - Написание скриптов для Blender 2.49

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

Michel Anders - Написание скриптов для Blender 2.49 - описание и краткое содержание, автор Michel Anders, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Расширьте мощность и гибкость Блендера с помощью Питона: высокоуровневого, легкого для изучения скриптового языка

Написание скриптов для Blender 2.49 читать онлайн бесплатно

Написание скриптов для Blender 2.49 - читать книгу онлайн бесплатно, автор Michel Anders

Регулярные выражения являются чрезвычайно мощным способом сопоставления строк. Если Вы незнакомы с ними, Вы должны обратиться к документации   по   модулю   Питона  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



Итог

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

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

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

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

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

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

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

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

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


4

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

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

Проектируя сложные объекты с подвижными частями, мы хотели бы управлять перемещением этих частей относительно друг друга. Иногда, для достижения цели мы можем использовать физические движки, например, такие как Bullet physics, но часто этого не достаточно для точного воспроизведения анимации, физический движок  не всегда предоставляет необходимый контроль над сценой. Большую часть времени умное использование многократных ограничений будет вполне достаточным, но иногда взаимосвязи между объектами (другими словами хорошая анимация) не могут быть выражены с точки зрения простых ограничений и ключевой анимации. В таких случаях мы можем расширить возможности Блендера, определив собственные ограничения или отношения между анимируемыми объектами, используя Питон.

В этой главе мы увидим, как можно связать встроенные ограничения с объектами Блендера и как определить сложные отношения между анимированными объектами используя так называемые pydrivers. Мы также определим новые сложные ограничения, которые могут использоваться точно так же, как и встроенные ограничения. Мы пока не будем изучать такие определения, как ключевые кадры (key frames), поскольку мы столкнемся с ними в более поздних главах.

В этой главе мы узнаем:

• Как управлять одним IPO из другого в выражениях Питона

• Как работать с некоторыми ограничениями, присущими pydrivers

• Как управлять движением объектов и костей, добавляя ограничения

• Как написать ограничение в Питоне, которое привяжет один объект к ближайшей к нему вершине на другом объекте

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


Акцентируем внимание на свойствах анимации

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


IPO

В Блендере почти любой объект может быть анимирован. Обычно это делается, с помощью фиксации некоторых параметров, таких как положение в пространстве некоего объекта в определенных ключевых кадрах и интерполяция этих параметров для остальных промежуточных кадров. В Блендере группы объектов, задействованные в анимации собираются в так называемые кривые IPO. Например, все пространственные параметры, такие как местоположение, вращение, и масштаб сгруппированы как тип объекта IPO и могут быть связаны со многими объектами Блендера: мешем, камерой, или лампой. Большинство свойств  материалов в Блендере также могут быть сгруппированы в соответствующем IPO. Получается, что ''Материальный'' тип IPO может быть связан с любым объектом, которому присвоен  материал. Аналогично, тип IPO Лампы должен быть связан с объектом Лампы.

IPO это аббревиатура, но что она обозначает кажется немного неясным. Wiki Блендера заявляет, что она происходит от слова InterPOlation, то есть от математической функции (почитайте Wiki там есть интересная информация на этот счет - прим. пер), но в Блендере мы столкнемся с интерполяцией как с объектом. И большую часть времени будем использовать  IPO как существительное, однако,  это обсуждение становится немного академическим.

Каждый IPO может быть связан с более чем одним объектом. Например, возможно анимировать вращение нескольких объектов, объединив их с одним объектом IPO. В Блендер API кривые IPO представлены объектами IPO. Объект IPO может быть связан с другим объектом посредством метода setIpo(). Следующая таблица дает краткий обзор типов IPO,  IPO-каналов, и список объектов с которыми они могут взаимодействовать. Обратитесь к API документации о модуле Blender.IPO за подробной информацией.

(http://www.blender.org/documentation/249PythonDoc/index.html).


Тип IPO

Object

IPO каналы (некоторые примеры, см. полный список в API документации)

LocX, LocY, LocZ (перемещение)

RotX, RotY, RotZ (вращение)

ScaleX, ScaleY, ScaleZ (маштаб)

Соответствующие объекты в Блендере

Все объекты Блендера, которые можно перемещать: Меш, Лампа, Камера и др.


Тип IPO

Pose

IPO каналы (некоторые примеры, см. полный список в API документации)

RotX, RotY, RotZ (вращение)

Соответствующие объекты в Блендере

Кости (Bone)


Тип IPO

Material

IPO каналы (некоторые примеры, см. полный список в API документации)

R,G,B (рассеянный цвет)

Соответствующие объекты в Блендере

Любые объекты, использующие материалы


Тип IPO

Texture

IPO каналы (некоторые примеры, см. полный список в API документации)

Contrast (контрастность)

Соответствующие объекты в Блендере

Любые объекты, использующие текстуры, например: Меш, Лампа, Мир и др.


Тип IPO

Curve

IPO каналы (некоторые примеры, см. полный список в API документации)

Speed (скорость)

Соответствующие объекты в Блендере

Кривые (Curve)


Тип IPO

Lamp

IPO каналы (некоторые примеры, см. полный список в API документации)

Energ (энергия)

R,G,B (цвет)

Соответствующие объекты в Блендере

Лампы


Тип IPO

World

IPO каналы (некоторые примеры, см. полный список в API документации)

HorR,HorG,HorB (цвет горизонта)

Соответствующие объекты в Блендере

Мир (World)


Тип IPO

Constraint

IPO каналы (некоторые примеры, см. полный список в API документации)

Inf (влияние)


Michel Anders читать все книги автора по порядку

Michel Anders - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Написание скриптов для Blender 2.49, автор: Michel Anders. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.