- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Написание скриптов для Blender 2.49 - Michel Anders
Шрифт:
Интервал:
Закладка:
self.output.Distance = distance
Чтобы использовать этот Pynode, нужно иметь в виду некоторые моменты. Сначала, убедитесь, что рассчитанный цвет влияет только на цвет specular материала мыльного пузыря, в противном случае всё покажется вымытым.
Кроме того, важно добавлять некоторое изменение к толщине слоя, так как никакой реальный мыльный пузырь не имеет точной однородной толщины. Выбор текстуры шума может привести к очень различному виду. В следующем примере нодовой сети мы добавили на вход немного шумовой текстуры wood, чтобы получать вихревые полосы, часто обнаруживаемые на мыльных плёнках.
Наконец, сделайте материал мыльной плёнки очень прозрачным, но с высокой отражательной способностью (specular). Экспериментируйте с величинами, чтобы добиваться точного эффекта, и примите во внимание настройку освещения. Пример, показанный на иллюстрации – пробный, чтобы получить некий результат в черно-белом представлении, и, следовательно, не реалистичен, но сеть в файле примера iridescence.blend настроена производить красочный приятный результат при рендере.
Использование color ramp и текстуры шума показано на предыдущем скриншоте, куда мы добавили несколько нодов деления, чтобы масштабировать наше расстояние в дипазон в пределах [0,1], который можно использовать как вход для color ramp:
Итог
В этой главе мы увидели, что отсутствие компилируемого шейдерного языка в Блендере не препятствует использованию в нём cпроектированных заказных узоров и шейдеров. Pynodes - встроенная часть нодовой системы Блендера, и мы увидели как использовать их для создания эффектов, от простых цветных узоров до довольно сложных анимированных волн. В частности, мы узнали:
• Как писать Pynodes, которые создают простые цветные узоры
• Как писать Pynodes, которые производят узоры с нормалями
• Как писать анимированные Pynodes
• Как писать материалы, зависимые от высоты и наклона
• Как создавать шейдеры, которые реагируют на угол падающего света
В следующей главе мы посмотрим на автоматизацию процесса рендера в целом.
8
Рендеринг (визуализация) и обработка изображений
В предшествующих главах мы рассматривали в основном аспекты скриптования индивидуальных компонентов, составляющих сцену Блендера, такие как, например, меши, лампы, материалы, и так далее. В этой главе мы взглянем на процесс визуализации в целом. Мы будем автоматизировать процесс рендера, объединять различными способами результирующие изображения, и даже превратим Блендер в специализированный веб-сервер.
В этой главе Вы узнаете как:
• Автоматизировать процесс рендера
• Создавать множество видов для презентации продукта
• Создавать билборды из сложных объектов
• Манипулировать изображениями, в том числе результатами рендера, используя библиотеку обработки изображений Python Imaging Library (PIL)
• Построить сервер, который создает изображения по-требованию, которые могут быть использованы как вопросы в CAPTCHA
Различные виды - комбинирование множества направлений камеры
Теперь Вы можете ожидать, что визуализация также может быть автоматизирована, и Вы совершенно правы. API Питона Блендера обеспечивает доступ почти ко всем параметрам процесса рендера, и позволяет Вам рендерить индивидуальные кадры так же, как анимацию. Это позволяет автоматизировать многие задачи, которые было бы скучно делать руками.
Предположим, что Вы создали объект, и хотите создать единственное изображение, которое показывает его с различных углов. Вы могли бы отрендерить их отдельно и объединить во внешнем приложении, но мы напишем скрипт, который не только рендерит эти виды, но также объединяет их в единственном изображении, используя возможности манипуляции изображениями Блендера и внешний модуль, называемый PIL. Эффект, которого мы пытаемся достигнуть, изображен на иллюстрации Сюзанны, показывающей её со всех наилучших сторон.
Блендер является отличным средством, которое предоставляет Вам возможность не только моделировать, анимировать и настраивать рендер, но имеет также функциональность, необходимую для композиции. Одна из областей, которая не слишком выделяется, это "манипуляция изображениями". Блендер, конечно же, имеет окно редактора UV/Image, но оно разработано очень специфически для манипулирования UV-раскладками и для просмотра изображений, а не для работы с ними. Редактор нодов также способен на изощрённую обработку изображений, но у него нет документированного API, так что его нельзя сконфигурировать из скрипта.
Конечно, Блендер не может делать всё, и, несомненно, он не пытается конкурировать с графическими пакетами, такими как GIMP (www.gimp.org), но некоторые встроенные функции обработки изображений были бы кстати. (Каждым изображением можно управлять на уровне пикселей, но это довольно медленный процесс для больших изображений, и нам по-прежнему придётся осуществлять высокоуровневую функциональность, такую, как например, альфа-смешивание или поворот изображений).
К счастью, мы из Питона можем иметь доступ к любому изображению, сгенерированному Блендером, а в Питоне довольно просто добавить дополнительные пакеты, которые обеспечивают нужную функциональность, и использовать их из наших скриптов. Единственным недостатком является то, что любой скрипт, который использует эти дополнительные библиотеки, не будет автоматически переносимым, так что пользователи должны будут сами удостовериться, что у них имеются нужные библиотеки.
Python Imaging Library (PIL), библиотека, которую мы будем использовать, свободно доступна и просто устанавливается. Следовательно, это не должно стать проблемой для среднего пользователя. Тем не менее, возможно осуществить функциональность простой вставки (мы увидим ниже), просто используя модуль Image Блендера, мы предоставим её в полном коде минималистского модуля pim, в котором будет только необходимый минимум, чтобы иметь возможность использовать наш пример без необходимости устанавливать PIL. Эта независимость имеет цену: наша функция paste() - почти в 40 раз медленнее, чем такая же из PIL, и результирующее изображение может сохраняться только в формате TARGA (.tga). Но вы, наверное, и не заметите этого, так как Блендер может просто отлично отображать TARGA файлы. Полный код оснащен некоторой хитростью, позволяющей использовать модуль PIL (в случае, если он доступен), и наш заменяющий модуль в противном случае. (Это не показано в книге.)
The Python Imaging Library (PIL) (Библиотека Питона формирования изображений)
PIL - это пакет с открытыми исходными текстами, свободно доступный на сайте http://www.pythonware.com/ products/pil/index.htm. Он состоит из множества модулей Питона и основной библиотеки, который поставляется для Windows в скомпилированном виде (и его очень легко скомпилировать для Linux, или даже он может быть уже доступен в дистрибутиве). Просто следуйте за инструкциями на сайте, чтобы установить его (но не забывайте использовать правильную версию питона при установке PIL; если у Вас установлено более одной версии Питона, используйте для установки ту же, что использует Блендер).
Схема кода - combine.pyКакие шаги мы должны предпринять, чтобы создать наше комбинированное изображение? Нам понадобится:
1. Создать камеры, если нужно.
2. Настроить и откадрировать камеры на предмет.
3. Отрендерить виды со всех камер
4. Объединить рендеренные изображения в единственную картинку.
Код начинается с импорта всех необходимых модулей. Из пакета PIL нам нужен модуль Image, но мы импортируем его под другим именем (pim), чтобы предотвратить столкновение с именем модуля Image Блендера, который мы также используем:
from PIL import Image as pim
import Blender
from Blender import Camera, Scene, Image, Object,
Mathutils, Window
import bpy
import os
Первая функция-утилита, с которой мы столкнёмся, это - paste(). Эта функция объединяет четыре изображения в одно. Изображения передаются как имена файлов, а результат сохраняется как result.png, если не задано другое имя файла. Мы принимаем все четыре изображения, чтобы иметь одинаковые размеры, которые мы определяем, открывая первый файл, как изображение PIL и анализируя атрибут размера size (выделено в следующем коде). Изображения будут разделены и разграничены небольшой линией с однотонным цветом. Её ширина и цвет жестко кодируется в переменных edge и edgecolor, хотя Вы могли бы решить передавать их как аргументы:

