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

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

OpenGL функции Блендера:

Документация по модулю Блендера BGL включает множество функций из библиотеки OpenGL. Многие из этих функций включены в большом количестве вариантов, которые выполняют одно и то же действие, но принимают свои аргументы различными   способами.   Например, BGL.glRasterPos3f() тесно   связана   с BGL.glRasterPos3fv(), которая принимает список трех чисел с плавающей точкой единичной точности вместо трех отдельных аргументов. За подробностями обратитесь к документации по API модулей Blender.BGL и Blender.Draw и к справочнику по OpenGL на http://www.opengl.org/sdk/docs/man/.

Если число подсветок, которые мы нарисовали, не нулевое, мы задаём цвет рисования в textcolor и затем вычисляем средние координаты всех подсвечиваемых вершин. Затем мы используем функцию glRasterPos3f(), чтобы установить стартовую позицию текста, который мы хотим отобразить в этих усреднённых координатах с небольшим пространством, добавленным к x-координате, чтобы немного сместить текст вправо. Затем функция Блендера Draw.Text() отобразит имя группы небольшим шрифтом в выбранной позиции.

<p>Снова о мешах — создание отпечатков</p>

Хотя мягкие тела (softbody) и имитаторы ткани (cloth), которые доступны в Блендере, во многих ситуациях делают свою работу отлично, иногда Вам может понадобиться иметь больше управления над процессом деформации меша, или Вы захотите сымитировать какое-либо специфическое поведение, которое совсем не охвачено встроенными системами симуляции Блендера. Это упражнение показывает, как вычислять деформацию меша, которого коснулся, но не порвал другой меш. Оно не сможет быть физически точным. Мы стремимся к тому, чтобы получить вероятные результаты для твердых вещей, касающихся легко деформируемой или клейкой поверхности, например, палец, продавливающий масло, или колесо, едущее по мягкой обочине.

На рисунке ниже приведены несколько возможных отпечатков. Дорожки созданы анимированием катящейся автомобильной шины по подразделенной плоскости:

В следующей части мы обратимся к объекту, меш которого будет деформироваться в качестве исходного, и к объекту или объектам, делающим деформацию в качестве цели. В некотором смысле, это очень похоже на ограничение (constraint) и мы могли бы осуществить эти деформации как pycontraints. Тем не менее, это не будет исполнимым, поскольку ограничения оцениваются всякий раз, когда исходный меш или цели двигаются; этим самым вызывается интерфейс пользователя, что приведёт к мучительным остановкам, так как расчет пересечений и результирующей деформации мешей требует интенсивных вычислений. Следовательно, мы выбираем метод, где мы вычисляем и кешируем результаты всякий раз, когда сменяется кадр.

Наш скрипт предоставит несколько функций, он должен:

• Вычислить и кешировать деформации при каждом изменении кадра

• Изменить координаты вершин, когда присутствует кешированная информация

А при автономном запуске, скрипт должен:

• Сохранять и восстанавливать первоначальный меш

• Подсказывать пользователю возможные цели

• Ассоциировать себя как скриптсвязь с исходным объектом

• Возможно, удалять себя как скриптсвязь

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

Если мы не хотим писать наше собственное устойчивое решение для сохранений, у нас есть два выбора:

• Использовать реестр Блендера

• Ассоциировать данные с исходным объектом в виде свойства

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

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

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

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

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

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

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

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

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

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