- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Написание скриптов для Blender 2.49 - Michel Anders
Шрифт:
Интервал:
Закладка:
Скажем, что мы создали хранилище для скриптов на сетевом устройстве хранения, и создали каталог проекта Блендера на нашей локальной машине. Для того, чтобы перевести наши скрипты под управление версиями, мы должны выполнить следующие шаги:
1. Подтвердить (Check out) хранилище скриптов внутри нашего каталога проекта Блендера (это называется рабочая копия хранилища).
2. Создать скрипт в нашем .blend файле во встроенном редакторе.
3. Сохранить этот скрипт в рабочую копию.
4. Каждый раз, когда мы что-то изменяем, мы нажимаем Ctrl + Alt + C, чтобы отправить наши изменения.
5. Каждый раз, когда мы начинаем работать с нашим скриптом снова, мы нажимаем сначала Ctrl + Alt + U, чтобы сразу увидеть, не изменил ли кто-нибудь еще что-нибудь.
Обратите внимание, что ничто не мешает включить все активы, такие как текстуры или .blend файлы, чтобы они выступали в роли библиотек под контролем версий, но нам понадобится использовать отдельный клиент для фиксации изменений. Это будет интересным упражнением, создать несколько скриптов, которые отправляют или обновляют все файлы в текущем каталоге Блендера.
The need for speed (жажда скорости) — использование Psyco
Питон является интерпретируемым языком: все инструкции в скрипте интерпретируются и выполняются снова и снова, когда они встречаются. Это может звучать неэффективным, но для разработчиков программ преимущество возможности быстро разработать и протестировать программу может перевесить недостаток медленного выполнения программы. И интерпретация может быть неэффективной но, это не идентично тому, что она всегда медленная. Питон является очень высокоуровневым языком, в котором единственный языковой элемент может быть эквивалентом множества низкоуровневых инструкций. Кроме того, с учетом современного аппаратного обеспечения, даже медленный скрипт может закончить работу быстрее, чем пользователь ожидает результат.
Тем не менее, существуют ситуации, где любое увеличение скорости весьма приветствуется. Из всех примеров, которые мы видели в этой книге, Pynodes, вероятно, наиболее интенсивные в вычислительном отношении, так как инструкции выполняются над каждым видимым пикселем в текстуре или шейдере, и часто даже много больше времени уходит на пиксель, если принять во внимание oversampling. Экономия нескольких миллисекунд от скрипта, который тратит меньше секунды на выполнение, не даст слишком многого, но экономия 20% времени рендера составит существенную экономию времени при рендере 500 кадров.
Ввод Psyco: Psyco - расширение Питона, которое пытается ускорять выполнение скрипта, компилируя часто используемые части скрипта в машинные инструкции, и сохраняя их для многократного использования. Этот процесс часто называется компиляция-на-лету (just-in-time compilation, JIT), и она родственна JIT-компиляторам на других языках, таких как Java. (Они аналогичны по концепции, но совершенно отличаются в реализации из-за того, что в Питоне динамическая типизация. Это никак не затрагивает разработчиков скриптов на Питоне.) Важно то, что Psyco может быть использовано в любом скрипте без каких-либо изменений в коде, за исключением добавления нескольких строк.
Psyco доступен как бинарный пакет для Windows, и может быть скомпилирован из исходных кодов на других платформах. Полные инструкции доступны на вебсайте Psyco: http://psyco.sourceforge.net/.
Проверьте, что Вы устанавливаете версию, которая подходит вашей версии Питона, поскольку, хотя сайт указывает, что версия, скомпилированная для Питона 2.5 должна работать также для 2.6, она все еще может потерпеть неудачу, поэтому лучше использовать версию, специально скомпилированную для 2.6.
На сайте http://psyco.sourceforge.net/ я не смог найти бинарной версии Psyco для Питона 2.6 под Windows (в Линуксе-то его легко самостоятельно скомпилировать). Но Гугл помог — такая версия обнаружилась здесь: http://www.voidspace.org.uk/python/modules.shtml#psyco. Вполне рабочая. Ввиду фактического умирания проекта Psyco (в википедии написано, что его преемником является PyPy – странная штука «Питон-на-Питоне», в данный момент не слишком работоспособная), сомневаюсь, что он когда-нибудь заработает для 3-го Питона, и, соответственно, для новых версий Блендера. - прим. пер.
Итак, какое увеличение скорости мы могли бы ожидать? Это трудно оценить, но достаточно легко измерить! Просто рендерите кадр и отмечайте время, которое потребовалось, затем импортируйте psyco в ваш код, рендерите снова и отмечайте различие. Если оно значимое, оставляйте в коде, в противном случае, Вы можете снова его удалить.
На следующей таблице указаны некоторые результаты для тестовой сцены, приведенной в psyco.blend, но ваши данные могут отличаться. Также заметьте, что тестовая сцена является довольно оптимистическим сценарием, так как большая часть оказалась покрыта текстурой, генерируемой Pynode. Если бы её было меньше, прирост в скорости бы уменьшился, но это дает оценку того, что возможно с Psyco. Показатель в два раза для важного кода легко достижим. В следующей таблице перечислены некоторые иллюстрирующие примеры времени расчёта:
Время в секундах
Нетбук
Без Psyco 52.7
С Psyco 26.3
Стационарный компьютер
Без Psyco 14.01
С Psyco 6.98
Включение PsycoСледующий код показывает дополнительные строки, которые нужны для включения psyco в нашем ранее встречавшемся Pynode raindrops (капли дождя). Изменения указаны жирным шрифтом.
<... все остальные строки остаются прежними ...>
__node__ = Raindrops
try:
import psyco
psyco.bind(Raindrops.__call__)
print 'Psyco configured'
except ImportError:
print 'Psycho not configured, continuing'
pass
Так что, по сути, было добавлено только несколько строк после определения Pynode. Убедитесь, что вы щелкнули на кнопке Update (обновить) на Pynode, иначе код не будет перекомпилирован, и изменения не будут видны.
Предшествующий код просто пытается импортировать модуль psyco. Если это терпит неудачу (по любой причине), в консоли выводится информационное сообщение, но, тем не менее, код будет работать правильно. Если он импортируется, мы указываем Psyco оптимизировать метод __call__(), вызывая функцию bind() со ссылкой на этот метод __call__ в качестве аргумента, и сообщаем пользователю в консоли, что мы успешно сконфигурировали Psyco.
Итог
В этой главе мы смотрели за пределы 3D и рендера, и увидели как сделать жизнь счастливее для разработчика на Питоне и художника, предоставляя некоторые скрипты, помогающие в нескольких общих служебных задачах, расширяя функциональность встроенного редактора поиском с регулярными выражениями и системой управления версиями, и показали как экономить ценное время рендера в некоторых ситуациях, используя Psyco. В частности, мы узнали:
• Как построить список активов, таких как карты изображений, и заархивировать их
• Как опубликовать отрендеренные изображения автоматически через FTP
• Как расширить функциональность встроенного редактора поиском с регулярными выражениями
• Как ускорить вычисления, используя Psyco - компилятор-на-лету
• Как добавить управление версиями к вашим скриптам с помощью Subversion

