Blender-Empire 8

Page 1


2

blender-empire

Содержание

4

ОБЛОЖКА НОМЕРА

8

ИНТЕРВЬЮ С АНДРЕЕМ ПРАХОВЫМ

6

РАССКАЗ ОБ СОЗДАНИИ РАБОТЫ ДЛЯ ОБЛОЖКИ

НАШ МИР

НОВАЯ РУБРИКА, КОТОРАЯ ЗАМЕНЯЕТ РАЗДЕЛ “НОВОСТИ”

11

АВТОР ПЕРВОЙ КНИГИ О BLENDER НА РУССКОМ ЯЗЫКЕ

24

МОДИФИКАТОРЫ В BLENDER

ПЕРЕВОД ДОКУМЕНТАЦИИ ПО МОДИФИКАТОРАМ

28

ВИДЕО-ТЕКСТУРА

ИСПОЛЬЗОВАНИЕ ВИДЕО ИЗОБРАЖЕНИЯ В КАЧЕСТВЕ ТЕКСТУРЫ В BGE

30

ПРИНЦИП ДОМИНО

УРОК ПРО СОЗДАНИЕ ПАДАЮЩЕГО ДОМИНО

КАМЕРА ДЛЯ ГЕРОЯ ИГРЫ

32

СОЗДАНИЕ МЕНЮ ДЛЯ ИГРЫ

42

СТРУКТУРА ПРОЕКТА ДЛЯ BIG BUCK BUNNY

ОПРЕДЕЛЕНИЕ СТОЛКНОВЕНИЯ ДЛЯ КАМЕРЫ ПЕРСОНАЖА (ОТ ТРЕТЬЕГО ЛИЦА)

36

ПЕРВЫЙ УРОК О СОЗДАНИИ МЕНЮ ДЛЯ ИГРЫ

ПРИМЕНЕНИЕ ШАБЛОНА МЕНЮ ДЛЯ ИГРЫ

ВТОРОЙ УРОК ПРО СОЗДАНИ МЕНЮ ДЛЯ ИГРЫ

48 ГАЛЕРЕЯ

НОВАЯ РУБРИКА. ТЕОРИЯ О ТОМ, КАК СОЗДАЮТСЯ МУЛЬТФИЛЬМЫ ОТ А ДО Я КОНКУРС НА БАННЕР «BLENDERУКРАИНА», ТЕМА «РЕАЛИЗМ»


От редактора

3

На номером работали:

Редактор: Вычегжанин Владимир nocemperor@gmail.com

Корректоры: Симанькина Светлана Шилов Сергей Балезин Дмитрий Балашов Вадим Буторина Екатерина

Авторы: Калинин Диметр Зарыпов Владимир Привет всем.

В этот раз я не стал морочить вам мозги и переписывать содержание номера. С ним вы можете ознакомиться на соседней странице. Не знаю, как для вас будет, но для меня, этот номер, оказался очень полезный. Пока он создавался, пришлось узнать много полезного. И основной акцент был взят на игровой движок. Его понимаю, уделена львиная доля этого номера. Также появились две рубрики, которые не оставят никого равнодушным. Думается, каждый выскажет свое мнение по рассматриваемым в них темам. На этом хочу откланяться, и пойти отмечать юбилей журнала Blender-Empire. Ровно год назад свет увидел первый номер журнала. Так что сам себе хочу пожелать долголетия и творческих успехов. А вам – чтобы вы скачивали и читали этот журнал еще много лет. Теперь все. Ваш Император.


автор: Диметр Калинин aka Dimetrii

4

blender-empire

Обложка номера

Идея сделать персонажа изначала была для тестирования ригинга и анимации в Blender. Персонаж должен был иметь простую геометрию и текстуры. Но в процессе захотелось чего-то большего.

Началось всё с очень простого эскиза. Эскиз меня самого не порадовал. Получились только примерные очертания будущей модели.

Персонаж уже был не похож на эскиз, но выглядел он как дистрофик. Для исправления его болезни воспользовался скульптурингом. И записал видео урок по этому инструменту. Довольно подробно описал инструменты скульптуринга и показал его возможности на примере головы. Может, что-то и упустил. На этапе текстурирования перерыл весь Google. Нашёл пару интересных примеров кожи жабы. Был выбран основной цвет и поверх него, с помощью альфа кистей, прорисовывал детали. Так же не надо забывать о качественной UV – развёртке, без сильных сжатий и растяжений сетки.

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

http://vimeo.com/4608166


Обложка номера

5

Для рендера воспользовался V-ray (Blender/V-ray exporter (http://blender.bevice.ru)). Настраивал сцену очень долго, т.к. V-ray никогда до этого не использовал. Получилось три тестовых варианта. Выбрал второй вариант. Понравился он мне.

Остались недостающие детали. За несколько часов сделал микрофон и хлопушку. Скульптурингом выдавил складки на ткани и добавил текстурой крестики. Отрендерил картинку, дополнительно альфа-канал и карту глубины. Затем загнал всё это в compose. Была добавлена цветокоррекция отдельно для сцены и отдельно для персонажа. Добавлен blur и gain. Вот он тот самый момент – анимация. Сначала попробовал сделать цикл ходьбы. Вроде бы получилось. Можно делать теперь что-то посложнее. Например: петь, прыгать, махать руками и т.д. У меня получилось такое:

http://vimeo.com/5389037

Автор: Диметр Калинин


6

blender-empire

Наш мир

Наш мир – это рубрика, где хочется выразить свое мнение о некоторых событиях, которые происходят в нашем дорогом сообществе любителей Blender.

зация – это весьма не плохо, но как говорят люди: «Несколько по-детски». Думается, что на это не надо обращать большого внимания. Чувство стиля у каждого свое. Во-вторых, хочется отметить минусы, за которые ругают Blender-Empire: они Расскажу вам о появлении еще одного любитель- присутствуют и в этом журнале. ского журнала о Blender. Журнал носит гордое имя Blender Russia Magazine. За последний месяц, Але- Например, это грамматические ошибки: «Импександр Григорьев (Respect32) (автор журнала) уже рия» пользуется услугами корректоров, и для выпустил два номера своего журнала, что говорит «BRM» это было бы не лишним. К тому же об этом о его целеустремленности. Они сильно отличаются говориться в интервью с Сандрой Гилберт. Далее, в каждом уроке есть описание и рисунки. Придруг от друга. Над первым номером Blender Russia Magazine Але- мерно половина всех рисунков плохо читаема. ксандр проделал весьма «длительную» работу по Особенно те, где показаны меню настроек. Обраподбору материала. Оформлен он в интересной тите внимание, большая часть статей - это переводы. Переводы, это конечно не минус, но многие форме, показана специфичная натура автора. читатели «Империи» высказываются за оригинальность, т.е. хотят читать те уроки, которые сложно найти или те, которые были сделаны русским пользователем. К тому же Александр не соблюдает негласное правило. Если ты перевел урок, то статья все равно остается за автором, а тебе принадлежит только перевод. Т.е. ссылки на оригиналы статей нужно оставлять, иначе в дальнейшем могут быть большие проблемы с авторством.

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

Во-первых, бросается в глаза оформление. Стили-

Во втором номере кардинально меняется настрой автора. Оформление журнала значительно лучше.


наш мир

Содержание также весьма неплохо, выделяет направленность русскоязычного интернета. Есть полезные уроки и статьи. Некоторые замечания не были исправлены, и в целом работа оставляет противоречивые ощущения.

На этом хочется закончить мысли о BRM. «Империя» пока еще сама неидеальна. Так что новая кровь в сообществе это хорошо. Хочется также отметить активность многих любителей программы. Каждый несет что-то новое в развитие нашего сообщества. Есть несколько весьма полезных ресурсов, но сейчас мне хочется отметить один, который помог в создании этого номера журнала. Это сайт Blender-Narod. Сайт обладает интересным и полезным набором материала. Особо хочется отметить материал про игровой движок. На данный момент это единственный сайт, где я нашел урок про создание меню для игры.

И учитывая, что этого материала мало и он был бы полезен, в этом номере вы можете ознакомиться с двумя уроками по созданию меню. Но после не забудьте посетить сайт Blender-Narod. На этом все. Мы сами создаем «Наш мир». Удачи!

7


8

blender-empire

Интервью с Андреем Праховым

Здравствуйте, Андрей. Я хочу вас поздравить и поблагодарить за ваш труд. Первая книга о Blender, это просто великолепная работа. Я приобрел ее и не грамма не пожалел. Я думаю, что читатели книги хотят знать больше о книге и об её авторе. Здравствуйте, Владимир! Рад, что мой скромный труд кому-то пригодился. Книга писалась в очень сжатые сроки и, наверное, содержит немало ляпов. Открою небольшой секрет, в своей повседневной работе с Blender я при выполнении определенных операций... Павсегда держу ее “под рукой”, так, на всякий слу- раллельно с 3Ds Max я понемногу изучал и Blenчай, если что-то забуду :). der, но активно в своей работе не использовал. Все поменялось, когда четыре года назад я, с неДля начала расскажите немного о себе. Как большой командой, приступил к работе над игродавно вы занимаетесь графикой и почему вым проектом. Проект изначально планировался именно Blender? коммерческий, поэтому необходимо было следить Основной род моей деятельности – это работа ви- за лицензионной чистотой инструментов и кондеомонтажером в телевизионной компании в не- тента. К тому же выяснилось, что коммерческий большом провинциальном городке. Лет 5-6 назад игровой движок TGEA охотнее работает с модеко мне подошли сотрудники соседнего рекламного лями экспортированными Blender, нежели 3Ds отдела с предложением создать рекламу с трех- Max. Это решило судьбу последней программы в мерными сценами. В то время меня очень интере- пользу Blender. Хотя игра так и не была доведена совали программы по трехмерному до релиза – Blender сделался любимым и единстмоделированию, о чем они были осведомлены. венным приложением для работы с 3D. Надо отметить, что тогда в нашей организации не было людей умеющих работать с трехмерной гра- Я слышал, что фикой. Удивительное дело! Неделя мучений и 30- ваши уроки печатасекундный ролик был готов, мало того, он очень лись в журнале понравился заказчику. С этого момента мне часто Linux format? приходилось создавать трехмерные сцены по за- Действительно, вот казу рекламного отдела. Нетрудно догадаться, что уже несколько лет работа велась исключительно в 3DS Max (навер- длится мое сотрудное, все так начинают). ничество с LxF. ПерЗнакомство с Linux и поиск альтернативных про- выми статьями в грамм для этой операционной системы привело журнале был цикл меня к Blender. Честно скажу, первое впечатление уроков «Blender для от программы было, мягко говоря, негативное. начинающих», где я Странный интерфейс, отсутствие русскоязычной постарался взглянуть литературы, непонятное поведение программы на программу наив-


интервью

ными глазами новичка. Не знаю, насколько актуально они прозвучали для читателей, но пару благодарственных писем я все же получил. В дальнейшем работа с LxF стала почти постоянной, хотя и не всегда статьи были про Blender. Хочу заметить, что именно сотрудничество с LxF дало неоценимый опыт написания текстов, ясного изложения сути темы. К тому же, главный редактор русской редакции журнала Валентин Синицын сыграл не последнюю роль в появлении книги. Именно с его легкой руки и рекомендаций издатель обратил внимание на неизвестного автора, за что ему Большое спасибо от меня и, надеюсь, читателей книги.

В каком аспекте программы вы считаете себе более подкованным? Сложно сказать... В процессе работы над сценами мне приходится выполнять различные действия: моделировать, работать с физикой, анимацией. Дело в том, что требования заказчиков весьма специфичны и необходимы знания в разных областях программы. Проще сказать, где я чувствую себя неуверенно, а это работа с частицами. Не знаю, как остальных, н о м е н я о ч е н ь р а з д р а ж а е т сам механизм про счета частиц.

Как пришла идея создать книгу? В определенный момент я почувствовал необходимость поделиться с людьми тем багажом зна-

9

ний, который накопил при работе с Blender. Рамки журнальных статей мне показались маленькими. Да и времени появилось немного больше (позже я убедился в обратном). Однако, первоначально не предполагалось писать книгу в том ее варианте, который вы видите. Идея была в создании руководства по встроенному игровому движку BGE. Именно этот вариант был предоставлен издателю. Небольшая переписка и холодная логика издателя убедили меня в преждевременности указанной темы. Так появилось на свет «Руководство для начинающих».

Сколько людей вам помогало, и как долго писалась книга? Что было самым трудным? Книга писалась исключительно мной, но можно сказать помогало все сообщество Blender. Не думайте, что я являюсь исключительным докой в области 3D графики. Что-то знаю хорошо, что-то весьма приблизительно, как и любой из нас. Для написания книги мне пришлось изрядно подучиться, хотя я и считал себя «продвинутым» специалистом в области Blender. Одно дело знать самому и совсем другое объяснить это новичку. Приходилось много экспериментировать, читать английскую литературу и все для того, чтобы максимально просто и доходчиво разжевать материал. Очень сильно напрягали жесткие рамки издателя в отношении сроков и объемов сдачи материала. В течение четырех месяцев, пока писалась книга, мне почти пришлось забыть о сне и отдыхе. Практически каждый рабочий день заканчивался часа в три-четыре ночи. Не знаю, с чем была связана эта гонка, но это сильно повлияло на объем материала. Кое-какие темы пришлось снять или урезать. А ведь еще была основная работа и статьи для LxF. Можете поверить, когда книга была написана и сдана на редактуру, я вздохнул с облегчением. Сейчас, читая готовую книгу, понимаю, что все же удалось создать простой учебник с доступным изложением для новичка.


10

blender-empire

Некоторые читатели спрашиваю: «Будет ли продолжение книги?» Я думаю, что первая книга это просто начало, что может в будущем продолжить развитие именно печатного издания для обучения. Знаете, моей мечтой все же остается написание книги про BGE, но это, пожалуй, в весьма отдаленном будущем. Все зависит от актуальности вообще литературы по Blender и, соответственно, заинтересованности издателя. Пойдет книга в массы – появятся и другие. В ближайших планах второе издание с несколько переработанным и расширенным материалом. Не за горами версия Blender 2.5 с новыми возможностями и подходом к интерфейсу. Именно она ляжет в основу второй книги. Надеюсь расширить материал некоторыми пропущенными темами, к примеру, такой, как работа с Node или видеопоследовательностями. Вообще-то, уже накопилось немало материала, который хотелось бы донести читателю. Многие главы подвергнутся серьезным изменениям и дополнениям. Больше будет сносок по типу «Маленькие хитрости». На мой взгляд, последнее очень помогает лучше узнать программу. Есть некоторые идеи о написании более узкоспециализированной книги. Но об этом пока даже рано говорить. На протяжении всей книги вы предлагаете очень простые уроки, что весьма хорошо, но можете ли вы похвастаться чем-то более крупным?

Простые уроки – это основное требование издателя при написании книги. Ведь идея выпуска «Руководства» заключается в привлечении новых пользователей за счет простоты изложения. Естественно, мои личные работы, несколько сложнее, но только в меру необходимости. В последнее время я специализируюсь на создании сцен весьма специфического содержания для определенных государственных служб. К сожалению, даже скриншоты не могут быть предоставлены на обозрение в связи с закрытостью исходных данных. Конечно, работа ведется исключительно в Blender, так как заказчика не интересует в чем делаются сцены, а результат выдается в качестве видеофайла. Это конечно красочно выглядит, но извините... Я думаю, что выскажу общее мнение, что мечты должны сбываться. И что в ближайшее будущее мы будем познавать скрытые возможности Blender при помощи вашего нового творения. А издатели поймут, что надо развивать сообщество, не только привлечением новых участников, но и шлифованием умений опытных мастеров. Удачи!


Мо ди ф и к ат о р ы Bl en de r в

М о д и ф и к а то р B o o l e a n

12

М о д и ф и к а то р E d g e S p l i t

16

М о д и ф и к а то р M a s k

20

М о д и ф и к а то р D i s p l a c e

М о д и ф и к а то р H o o k

М о д и ф и к а то р S h r i n k w r a p

14

17

22


12

blender-empire

Модификатор Boolean булевые операции

Режимы: Object Mode (Mesh objects only) Панель: Editing → Modifiers Горячие клавиши: W Меню: Object → Boolean Operation Описание

Данный модификатор служит для объединения или вычитания твердых тел друг из друга с целью создания нового объекта. Данный модификатор работает только с двумя типами Меш-объектов, предпочтительно чтобы они были твердотельными или замкнутыми, с вполне определенной формой внутренней или наружной поверхности. Если вы выделите больше двух объектов, то модификатор будет действовать только на последний и предпоследний выделенный объекты. Булевы операции учитывают материалы и UV-текстуры, создавая объекты в зависимости от материала или мультиUV-текстурные объекты. Опции

Меню Boolean

Меню появляется при нажатии W в режиме объекта (Object Mode) и имеет следующие параметры:

Intersect (пересечение) – создает новый объект, который заключен в общем объеме обоих оригинальных объектов.

Union (объединение) - Создает новый объект, поверхность которого заключена в совместном объеме двух объектов. Difference (вычитание) - Это единственная операция, где имеет значение последовательность выбора объектов. Активный объект вычитается из выбранного. Т.е. полученный объект заключен в объем между выбранным и неактивным объектом, но не между выбранным и активным. Add Intersect Modifier (добавить модификатор пересечения)

Убыстряет процесс применения модификатора Boolean и выделяет соответствующий инструмент

Add Union Modifier (добавить модификатор объединения) Add Difference Modifier (добавить модификатор разности) Модификатор Boolean

Эта панель входит в состав группы панелей Editing, которая вызывается нажатием клавиши F9 или щелчком на кнопке в окне кнопок (Buttons window). Эта суб-панель входит в состав панели модификаторов.

Intersect - область где выбирается тип операции Intersect/Union/Difference Ob – имя объекта, который используется как 2-ой операнд в модификаторе.


модификаторы

Отрицательная сторона в использовании прямых булевых команд: чтобы изменить пересечение или применить другую операцию, вам необходимо удалить новый объект и перезадать операцию. Альтернативным способом является использование булевого модификатора, который очень «гибок» в настройках и, кроме того, позволяет легко редактировать уже полученный результат. Также модификатор можно включать или выключать и даже перемещать по стеку модификаторов. К тому же вы можете передвигать операнды и видеть, как действует булевая операция в реальном времени.

13

Примеры булевых операций

Intersect (пересечение) Куб и сфера были раздвинуты, чтобы вы смогли увидеть вновь образованный объект (А). Каждый полигон нового объекта имеет свойства материала, соответствующие свойствам материалов поверхностей участвующих объектов.

Предупреждение Если меш-объекты являются достаточно сложДо После ными по форме, то вы будете ждать, пока система отреагирует на действия вашей мыши. Union (объединение) Отключите функцию display in the 3D View в па- Куб (А) и сфера (В) раздвинуты, чтобы вы смогли нели модификатора, чтобы улучшить выполнение. увидеть вновь образованный объект (U). Объект U сейчас простой меш-объект и его поверхности Для получения завершенного результата в случае имеют свойства материалов объектов, из которых применения булевого модификатора необходимо он состоит. нажать кнопку "Apply", тем самым закрепив сделанные настройки. Чтобы увидеть результат вам надо передвинуть объекты, из которых был сделан этот объект, или перейти в локальный вид, нажав клавишу «/» на numpad. Пока вы не нажали кнопку «Apply», объект не будет изменен. После применения булевого модификатора появляется сообщение о том, что информация, связанная с данным мешем, а также все ключи анимации и информация о вершинах будет удалена. Difference (разность) Результат операции вычитания (Difference) зависит от того, что из чего вычитается. Куб (А) вычиПредупреждение Существуют важные отличия между примене- тается из сферы (В) и получается объект (D). И точно так же полигоны объекта (D) имеют свойнием булевых операций и применением модифика- ства тех материалов объектов, из которых он сотора. В первом случае создается новый объект, а стоит. во втором происходит изменение самого меша, подвергаемого действию модификатора. Это означает, что когда вы примените модификатор, то потеряете один их ваших операндов!


14

blender-empire

Технические подробности

Булевые операции сильно зависят от расположения нормалей поверхностей каждого объекта и очень важно, чтобы нормали были определены правильно и последовательно. Поэтому все нормали полигонов объектов должны быть направлены наружу. Чтобы увидеть, куда направлены нормали, перейдите в суб-панель Mesh Tool 1 в меню Editing (F9), и нажмите на кнопку Draw normals. Нормали будут видны только в режиме редактирования (Edit mode).

Mesh Tools. • Булевы Операции могут не сработать, и появится сообщение ("An internal error occurred -sorry"). Попробуйте чуть-чуть сдвинуть или повернуть объекты. • Операции выполняются только между двумя объектами, нет способа выполнить операцию более чем с двумя операндами, таких как пересечение всех этих выбранных объектов с активным объектом.

Модификатор Displace смещение Режимы: любой Панель: Editing → Modifiers Горячие клавиши: F9

Известные проблемы Булевых Операций • Количество сгенерированных полигонов может быть гораздо больше, по сравнению с оригинальным меш-объектом. Это особенно справедливо для сложных изогнутых объектов • Получившиеся полигоны могут быть низкого качества, это значит, что они могут быть очень длинными и тонкими, а иногда очень маленькими. Чтобы попробовать исправить это, используйте Decimator (Кнопки Редактирования (EditButtons) F9, панель Mesh ) • Не совпадают вершины на соединении границ двух оригинальных Меш-объектов • Вершины на границах дублируются. В некоторых отношениях это хорошо и означает, что вы можете выбрать части оригинального Меш, выбрав в получившемся объекте одну вершину и нажав клавишу (L) в Блендере. Это удобно если вы хотите назначить материалы и т.д. для получившегося объекта. Чтобы избавиться от дублированных вершин, нажмите кнопку "Remove Doubles" в окне Кнопок Редактирования (EditButtons)F9, панель

Описание Модификатор Displace смещает вершины в мешобъекте, основываясь на интенсивности текстуры. В качестве текстур могут использоваться процедурные текстуры и изображения. Смещение может происходить по конкретной локальной оси, вдоль нормалей вершин, или разделенная RGB компонентами текстура может быть использована для смещения вершин в направлениях X, Y и Z одновременно. Опции


модификаторы

Vgroup Имя группы вершин, на которую распространяется влияние модификатора. Если область Vgroup пустая, то модификатор действует на все вершины одинаково.

15

XYZ индивидуально (для расчета смещения учитывается интенсивность соответствующих компонентов RGB). - Normal – смещение вдоль нормали вершины

Texture Coordinates Система texture coordinate используется, для изTexture влечения значений смещения из текстуры для каИмя текстуры, из которой берется информация о ждой вершины. смещении каждой вершины. Если область пустая, Может быть следующей: то модификатор не работает. UV – берется координаты текстуры из координаты UV полигона. Если у объекта нет U- координат, то Midlevel используется локальная система координат. Значение интенсивности текстуры, которое воспринимается модификатором в качестве нулевого Примечание уровня (смещения нет). Значение интенсивности Поскольку UV-координаты задаются для каждой ниже этого параметра приведет к отрицательному грани, то UV-система координат текстуры, значению смещения, т.е. смещению в противопо- определяет UV-координаты для каждой вершины, ложном направлении. Интенсивность выше ука- начиная с первой грани, которой принадлежит занного значения приведет к смещению в эта вершина; любая другая грань, использующая выбранном направлении. Смещение вычисляется эту вершину игнорируется. Это может привести уравнением: смещение (displacement)=(texture к артефактам, если меш имеет несмежные UVvalue) – Midlevel. координаты. Object – берет координаты текстуры из системы координат другого объекта (определенного областью “Ob”) Global – координаты текстур определяются в глобальной системой координат Local – координаты текстуры определяются в локальной системе координат объекта.

Strength Сила смещения. Величина смещения, рассчитанная с помощью параметра Midlevel, умножается на коэффициент Strength, что дает финальный сдвиг вершин. Величина окончательного смещения определяется как: (vertex offset) = (displacement) * Strength. Отрицательное значение Strength может быть использовано для инвертирования эф- Ob фекта модификатора. Объект из которого извлекаются координаты текстур. Direction - Эта область становится видимой только тогда, Направление, вдоль которого смешаются вер- когда выбрана опция “Object” в качестве системы шины. координат текстуры. Может быть следующих значений: - Если эта область пуста, то используется локальХ – смещение вдоль локальной оси Х ная система координат Y – смещение вдоль локальной оси Y - Перемещение объектов изменяет соответствуюZ – смещение вдоль локальной оси Z щим образом координаты текстурной карты. - RGB -> XYZ – смещение вдоль локальных осей


16

blender-empire

UV Layer Слои UV-координат, из которых берутся координаты текстур. - эта область становится видна тогда, когда выбрана UV система текстурных координат. - Если эта область пуста, но имеющийся слой UVкоординат доступен (т.е. после добавления первого UV-слоя мешу), то он будет перезаписан с текущим активным UV-слоем. Примеры

Три различных объекта, созданные с помощью модификатора Displace http://wiki.blender.org/uploads/9/9e/Manual-Modifier-Displace-Example01.blend

Модификатор EdgeSplit Режимы: любой Панель: Editing → Modifiers Горячие клавиши: F9 Описание

Модификатор EdgeSplit разделяет ребра, принадлежащие мешу. Ребра, подвергаемые разделению, определяются либо межреберным углом (Edge angle), либо меткой “Sharp” (острый).

Разбиение ребра влияет на создание нормали вершины этого ребра — получаемое ребро становится заостренным. Следовательно, этот модификатор может быть использован для достижения эффекта, аналогичного кнопке Autosmooth. Созданные ребра оказываются заостренными при условии, что угол между ними выше указанного порогового значения. Модификатор также используется для настройки вручную процесса сглаживания, где пользователь сам определяет, какое ребро будет заострено, а какое сглажено. При желании оба метода могут быть активированы одновременно. Модификатор EdgeSplit является доступным в скрипте экспорта, что делает его очень полезным для создателей игрового контента. Опции

Анимированная слизь

http://wiki.blender.org/uploads/6/62/Manual-Modifier-Displace-Slime01.blend


модификаторы

From Edge Angle

Если эта кнопка включена, то ребра будут разделены, если их межреберный угол больше, чем значение, указанное в поле Split Angle. - Межреберный угол является углом между двумя полигонами (гранями), которые образуют это ребро. - Если ребро принадлежит более чем двум полигонам, то оно всегда разделяется. - Если ребро принадлежит лишь одному полигону, то оно никогда на разделяется. Split Angle В этом поле указывается значение угла между гранями, выше которого ребра будут разделены, если кнопка From Edge Angle была выделена. Диапазон значений от 0 (все ребра разделены) до 180 градусов (ребра не разделены).

From Marked As Sharp Если эта кнопка включена, ребра будут разделены, если они помечены как заостренные, используя пункт меню Edge Specials → Mark Sharp, доступный по Ctrl+E в режиме редактирования.

Примеры

17

Модификатор Hook - Зацеп Режимы: Object Mode / Edit Mode Панель: Editing → Modifiers Горячие клавиши: Ctrl+H Меню: Mesh → Vertices → Add Hook Описание

Зацепы дают доступ на объектном уровне к геометрии мешей, кривых, поверхностей (surface) и сеток (lattice). Для каждого объекта можно создавать неограниченное количество зацепов, каждому из которых назначаются те вершины, на которые он будет воздействовать. Допустима ситуация «перекрытия зацепов», когда одни и те же вершины назначаются нескольким зацепам. В подобной ситуации используется «весовой фактор», который определяет степень влияния на вершину каждого конкретного зацепа. Все свойства и трансформации на объектном уровне также возможны и для объектов зацепов. Включая: иерархии, ограничители, ipo и path анимации. Вы можете также сделать hook-родитель потомком оригинального объекта, если не хотите, чтобы при трансформации объекта деформировался зацеп. Примечание

Модификатор EdgeSplit с выбранным From Marked As Sharp

При изменении топологии (т.е. при «разрушающем» редактировании, когда производятся изменения, не ограничивающиеся простым манипулированием с точками, вам, скорее всего, придется перезадать существующие зацепы). Пример

Модификатор EdgeSplit с выбранным From Edge Angle

Типичным примером использования Hooks (зацепов) является анимация вершин или группы вершин. Например, вы, возможно, захотите анимировать вершины, связанные со ртом


18

blender-empire

("Mouth") персонажа.

На рисунках (Animated face frame 1) и (Animated face frame 10) лицо сделано из кривых Безье и имеет два примененных зацепа (Hook). Один применен к контрольной точке рта и назван “A” и другой применен к брови и назван “B”. Анимация в 10 кадре: зацеп “A” подвинут вверх, а зацеп “B” перемещен вниз.

Добавление зацепов (Hooks)

Режимы: Edit Mode Панель: Editing → Modifiers Горячие клавиши: Ctrl+H Меню: Mesh → Vertices → Add Hook Описание

Поскольку зацепы связываются с вершинами или управляющими точками, то большинство их опций вам доступны в режиме редактирования (edit mode) для мешей, кривых, поверхностей и сеток. Опции

Add, New Empty

Добавляет новый зацеп и создает новый объект empty, который будет родителем у выбранных элементов и будет находиться в центре выбранного. Animated face frame 1 (анимация лица в 1 кадре)

Add, To Selected Object Animated face frame 10 (анимация лица в 10 кадре)

Когда другой объект выделен (вы можете это сделать в режиме редактирования с помощью Ctrl+ПКМ) вы добавляете новый зацеп и связываете его родственными связями с этим объектом. Редактирование зацепов (Hooks)


модификаторы

Режимы: Edit Mode Панель: Editing → Modifiers Горячие клавиши: Ctrl+H Меню: Mesh → Vertices → Add Hook Описание

19

умолчанию имя модификатора это имя родителя, данное ему автоматически или назначенное ему параметром веса Force. Опции

Как только зацепы будут присвоены объекту, в меню зацепов появятся дополнительные опции:

Расширенное меню зацепов

Remove Этот пункт выдает новое меню со списком зацепов для удаления Reassign Этот пункт для того, чтобы вы назначили новые вершины для зацепа

Select Выделяет вершины, которые присвоены отдельному зацепу

Clear Offset Удаление текущих трансформаций для зацепа родителя Модификатор Hook

Режимы: Object Mode / Edit Mode Панель: Editing → Modifiers Горячие клавиши: Ctrl+H

Описание Hook является модификатором, который добавляется в стек модификаторов. Каждому модификатору вы можете давать отдельные имена. По

Ob Имя родительского объекта для зацепа. Изменение этого имени также пересчитает и очистит перемещение. Reset Пересчет и очистка сдвигов трансформации зацепа. Recenter Устанавливает центр зацепа в позицию курсора Select Выбор влияния вершины на меш

Reassign Переназначает выбранные вершины этому зацепу.

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


20

blender-empire

Falloff

Если не равно нулю, спад (falloff) определяет дистанцию, на которой влияние зацепа сходит на нуль. В настоящий момент интерполяция сглаживания похожи на инструменты пропорционального редактирования (Proportional Editing).

Рисунки выше показывают куб до и после применения модификатора. На втором рисунке видно, что у куба некоторая группа вершин скрыта модификатором, а остальная часть по-прежнему видна. Опции

Модификатор Mask маска Режим: все Панель: Editing → Modifiers Горячая клавиша: F9 Меню: нет Описание

Модификатор Mask позволяет скрыть определенные части меш-объекта, создавая впечатление отсутствия частей, на которые наложена маска.

Куб до применения модификатора Mask

Тот же куб, только с модификатором Mask, который добавлен для группы вершин.

Панель модификатора Mask

- Vertex Group:

При использовании модификатора необходимо указать ему группу вершин, которая будет подвергаться его воздействию. Есть несколько способов сделать это, но при выбранной опции Vertex Group модификатор использует специальную группу вершин Vertex Group для определения того, какие именно вершины меша будут скрыты.

- VGroup:

Когда опция Vertex Group выделена, область VGroup, подлежащая маскировке, становится активной.


модификаторы

В область VGroup вводится имя группы вершин, которые связаны с текущим меш-объектом. Когда имя введено, модификатор обновляет данные и часть вершин, которая обозначена в имени группы вершин, становится замаскированной (что обычно означает, что эти вершины остаются видимыми), все остальные вершины, не входящие в указанную группу, скрываются.

Куб с выделенными частями для маскировки (выделено желтым)

21

Selected Bones:

Selected Bones полезен в режиме pose (при анимации) или когда редактируется арматура. Введите имя объекта арматуры в область Ob:. При работе с костями в режиме pose группа вершин, не связанная с костями, будет замаскирована. Кнопка Inverse может быть полезной для того, чтобы увидеть, как кость действует на движения меш– объекта.

Панель модификатора с выбранным Selected Bones

Inverse:

Обычно, при использовании модификатора Mask остаются видимы именно те части объекта, которые подвергаются его действию, тогда как остальные части объекта скрываются. Кнопка Inverse Эффект действия модификатора на поверхности куба меняет действие модификатора на противоположДва рисунка показаны выше, на первом выделена ное. И теперь части, которые были видимы раньше группа вершин куба, которые будут видны, на вто- становятся невидимыми, а невидимые — видиром изображении показано действие модифика- мыми. тора Mask на куб. Любой из методов присвоения весов вершинам меш– объекта работает с модификатором Mask. Тем не менее фактическое значение веса, назначенное группе вершин, игнорируется модификатором. Модификатор учитывает лишь то, является ли набор вершин частью группы или нет, веса не учитываются. Таким обКнопка Inverse включена разом, например, вес группы вершин равный 0.5 не будет Кнопка Inverse выключена частично маскировать меш. Для модификатора достаПример применения модификатора: точно и того, чтобы вершины входили в состав указанной группы вершин, даже если её вес равен нулю. http://wiki.blender.org/uploads/a/af/Manual_-_Modifier__Mask_-_Masked_Cube.blend


22

blender-empire

Модификатор Shrinkwrap

- Projection — вертексы объекта проецируются в заданном направлении, до соприкосновения с целевым объектом Описание - Normal вдоль нормали - X, Y, Z — вдоль осей X, Y, Z oили их комЭтот модификатор «усаживает» (shrink) исходный бинации объект к целевому объекту. Каждый вертекс ис- cull back/frontface — эти переключатели ходного объекта модифицируется и смещается к определяют, какие поверхности будут использоближайшей точке поверхности целевого объекта. ваться во время проецирования. *С этой опцией Для определения «ближайшей» точки испольнужно эксперементировать — иначе её не понять зуются три инструмента: ближайшая поверхность (прим. переводчика) (Nearest Surface), ближайший вертекс (Nearest Vertex) и проецирование (Projection). Offset — определяет смещение (дистанцию) проекции относительно целевого объекта Можно сказать, что модификатор Shrinkwrap дейVertex Group — определяет, насколько каствует почти как независимый от точки обзора «reждый вертекс будет смещён к своей целевой позиtopo», поскольку вершины проектируются вдоль ции нормали вертекса или двигаются к ближайшей Ob2: — определяет дополнительный точке поверхности. Таким образом, в отличие от объект проекции. ретопологии, не возникает проблем с точностью, поскольку модификатор действует в пространстве объекта, а не в пространстве изображения. Дополнительной возможностью является смещение (дистанция) относительно целевого объекта. При разработке этого модификатора особенное внимание было уделено его гибкости и скорости. В связи с этим, часть его функций пришлось исключить и перенести в модификатор «deformOnly».

Модификатор Shrinkwrap поддерживается в режиме редактирования. Параметры

Ob: — определяет объект-цель, относительно которого будет произведена «усадка» Методы усадки (выпадающий список): - Nearest Surface — для усадки объекта выбирается ближайшая точка поверхности целевого объекта - Nearest Vertex — для усадки выбирается ближайший вертекс целевого объекта

Использование

Пользователи нашли множество применений этому модификатору. Чуть ниже приведено всего несколько примеров из этого множества.

Хотя в двух из трёх примеров рассматривается моделирование одежды, модификатор Shrinkwrap может быть полезен и при других типах моделирования (например при skin building и ретопологии*). *Ретопологию наверное всё таки нельзя рассматривать, как тип моделирования, но в оригинале именно так (Примечание переводчика).


модификаторы

23

Пример 1: Усадка юбки на модель — нужно просто окрасить вертексы, которые должны прижаться к объекту:

Пример 5: дополнительный: видео-туториал от Джонатана Вильямсона (Jonathan Williamson), показывающий процесс создания одежды персонажа с помощью модификатора Shrinkwrap

Пример 2: накладываем кривую на поверхность — используйте проекцию по нормали, используя ось Z:

http://www.cgcookie.com/articles/video-blender-shrink-wrapmodifier

Пример 3: Использование модификатора shrinkwrap для имитации скольжения кожи (идея принадлежит Renderdemon):

Пример 4: Базовый пример создания рубашки — просто сделайте примитивную сетку и используйте модификатор shrinkwrap:

источник перевода модификатора Shrinkwrap: http://artnotes.ru/?p=95


24

blender-empire

Видео-текстура

“Использование видео изображения в качестве текстуры в BGE”

План действий:

1. Создать плоскость 2. Загрузить изображение текстуры и применить UV-развертывание 3. Написать скрипт на Python, который загрузит и проиграет видео 4. Написать скрипт на Python, который обновит видео 5. Создать логические блоки, которые будут запускать скрипты 6. Запустить игру и посмотреть на результат

Создание плоскости

Запустите Blender и сохраните ваш проект где-нибудь на жестком диске. Загрузите видео и сохраните его также на жестком диске, или используйте уже намеченное видео. Точно также поступите с изображением. Если при запуске у вас появляется куб, то удалите его (клавиша «Х»). Добавьте плоскость (Пробел>Add > Mesh > Plane). Нажмите клавишу «N», чтобы появилось меню “Transform Properties”. Найдите в этом меню свойства DimX и DimY и измените их значения на 9 и 5 соответственно.

Выберите для вновь получившегося окна тип “UV/Image Editor” из меню “Window Type”:

В окне “UV/Image Editor” выберите меню “Image > Open” и в появившемся окне выберите сохраненный вами файл с изображением. Для примера использовали “bbb.png”. Вернитесь обратно в окно 3D вида и нажмите “Tab”, чтобы перейти в режим редактирования “Edit Mode”. Нажмите клавишу “U”, чтобы вычислить UV координаты. При этом появится выпадающее меню, в нем выберите пункт “Project from View (Bounds)”. Теперь в редакторе UV/Image Editor должно появиться практически то же самое:

Загрузка изображения текстуры и применение UV развертывания

Сейчас надо применить инструмент UV unwrap для плоскости. Разделите экран на два окна (ПКМ на границе окон)

Нажмите клавишу “F5”, чтобы перейти в пункт Shading view окна Buttons и нажмите на кнопке “Add new” меню “Links and Pipeline”:


видео-текстура

25

Это действие создаст новый материал для плоско- Нажмите “F12”, чтобы отрендерить изображение. сти. Далее нам необходимо связать этот материал У вас должно получиться следующее: с выбранной текстурой (в примере “bbb.png”). Нажмите клавишу «F6», чтобы перейти в меню Texture в окне Buttons и нажмите кнопку “Add new”:

Прежде чем продолжить, я хочу убедиться, что вы находитесь в объектном режиме “Object mode” (наВыберите пункт “Image” из выпадающего списка жмите клавишу ‘tab’) и выбрали тип отображения “Texture Type”. Перейдите в появившееся меню “Textured”: “Image” и нажмите на маленькой кнопке слева от кнопки “Load”. Выберите из списка изображение “bbb.png”:

Написание скрипта, который загрузит и покажет видео

Из списка меню “Window type” (тип окна) в окне “UV/Image Editor” выберите тип окна “Text Editor”. Кликните на кнопке Python и на “AB”, что облегчит синтаксис написания скрипта. Вернитесь обратно в панель Shading, нажав «F5». Перейдите в меню и выберите “Text > New”. Это С правой стороны панели есть меню с тремя за- создаст новый текстовый файл. Назовите его “Loкладками: “Texture”, “Map Input” и “Map To”. Вы- adVideo”: берите “Map Input” и кликните на кнопке “UV”. Это позволяет правильно распределить UV-текстуру по плоскости. Затем вставьте текст из блока в текстовый редактор. В коде есть пояснительные комментарии.


26

blender-empire

файл “LoadVideo” import VideoTexture

# — Gets the Python controller associated with this Python script. contr = GameLogic.getCurrentController() # — Gets the game object associated with this logic brick. obj = contr.owner

# — Check if the “video” property has been defined on “GameLogic” if not hasattr(GameLogic, ‘video’): # — Get the material that is using our texture matID = VideoTexture.materialID(obj, ‘IMbbb.png’)

После клика по кнопке возле надписи “Key”, на этой кнопке появится надпись “Press a key”. Нажмите клавишу “Enter”. Затем пользователь нажимает клавишу “Enter” в игре и должен запуститься скрипт “LoadVideo”. Далее создайте контроллер, нажав на кнопке “ADD” в столбце контроллера рядом с кнопкой “Plane” и соедините его с сенсором. Смените тип контроллера с “AND” на “Python” и введите в поле с именем имя первого скрипта, созданного нами “LoadVideo”. Все должно получиться таким образом:

# — Create the video texture GameLogic.video = VideoTexture.Texture(obj, matID)

# — Get the path to the video file movie = GameLogic.expandPath(‘//trailer_400p.ogg’)

# — Load the file GameLogic.video.source = VideoTexture.VideoFFmpeg(movie) # — scale the video GameLogic.video.source.scale = True # — play the video GameLogic.video.source.play()

Написание сприпта, который обновит видео

Перейдите в меню и выберите “Text > New”. Назовите этот файл “UpdateVideo”. Вставьте код из блока в текстовый редактор. В этом коде также есть пояснения.

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

Нажмите на кнопке “Add” рядом с кнопкой “Plane”. Измените тип сенсора на “Always”. Добавьте другой контроллер Python и введите имя “UpdateVideo”. Соедините сенсор и контроллер. Убедитесь, что кнопка “Activate TRUE level triggering (pulse mode)” нажата (это кнопка выделена желтым кругом).

Создание логики в игровом движке для запуска скриптов

Нажмите «F4», чтобы перейти в панель Logic окна Buttons. Кликните на кнопке “Add”, расположенной за кнопкой “Plane”, чтобы добавить новый сенсор. Измените тип сенсора на “Keyboard” и нажмите кнопку “Key”:

файл “UpdateVideo”

# — Check if the “video” property has been defined on “GameLogic” if hasattr(GameLogic, ‘video’): # — The video has to be refreshed every frame because # it is not a background process GameLogic.video.refresh(True)


видео-текстура Запуск игры и просмотр результата

Чтобы начать игру, нажмите клавишу “P”, а затем - “Enter”, чтобы проиграть видео.

Чтобы выйти из режима игры, нажмите “Esc”. Ссылка на урок:

http://www.rozengain.com/blog/2009/06/11/beginners-tutorial-using-video-textures-in-the-blender-game-engine/

В качестве видео вы можете использовать любой видео-файл, который поддерживает кодак FFmpeg. Форматы видео-файлов: AVI, Ogg, Xvid, Theora, video4linux capture card, dv1394 camera, videoForWindows capture card, JPG.

27


28

blender-empire

Принцип домино

В этом небольшом уроке я хочу показать как просто создать эффект падения домино. В качестве костей домино вы можете использовать практически любые объекты. Используя данную технику, вы можете создавать интерактивное окружение в ваших проектах: играх, анимационных фильмах. Давайте приступим к уроку. Запустите Blender. Удалите из сцены объект куб. На первом этапе он нам помешает.

Рисунок 3. – Масштабирование плоскости

Создайте куб Пробел->ADD->Mesh->Cube и отмасштабируйте его по осям, так чтобы куб стал похож на доминошную кость.

Рисунок 1. – Пустая сцена

Перейдите в вид сверху (Top – NUM7), создайте плоскость Пробел->ADD->Mesh->Plane. Увеличьте её примерно в пять раз (можно и больше) (клавиша S).

Рисунок 4. – Добавление куба и формирование «доминошки»

Передвиньте полученную кость в край плоскости.

Рисунок 2. – Добавление плоскости

Рисунок 5. – Передвижение кости домино на край плоскости


принцип домино

Перейдите в панель Logic окна Button. Нажмите на следующие кнопки Actor, Rigid body, Bounds и выберите из списка Box.

Усложним сцену. Добавим несколько уровней.

29

Рисунок 9. – Добавление этажей

Рисунок 6. – Настройка панели Logic

Перейдите в вид спереди (NUM1) и просмотрите, как все действует, нажав клавишу P. Но, увы, ничего не происходит. Это связано с тем, что на кость не действуют силы, которые выводят её из состояния равновесия. Чтобы кость упала, выйдете из режима игры (Esc) и в виде спереди поверните её. Затем повторите попытку. Теперь кость точно упадет.

Рисунок 7. – Поворот «доминошки»

Теперь надо отрендерить наше творение, откорректируйте положение камеры, чтобы через неё были видны все «доминошки». Затем выберите пункт Record Game Physics to IPO в меню Game. Это позволит записать все действия физики в анимацию, которую потом можно будет просматривать. Нажмите кнопку Р, и просмотрите всю анимацию, после того как она закончится нажмите Esc. Теперь у вас будут записаны все анимации падения и, следовательно, можно отрендерить сцену.

Рисунок 10. – Меню Game

Для большей наглядности добавим в сцену еще не- В заключении, настройте рендер на выпуск видео сколько «доминошек». Скопируйте первую кость файла. И подождав немного, вы сполна насладинесколько раз Shift+D, только не забудьте первую тесь своим творением. кость вернуть в вертикальное положение, чтобы последующие кости стояли вертикально. Также вы можете не делать это вручную, а применить модификатор массива (Array). Повторите 7-ой пункт. Теперь у вас получилась более наглядная картина.

Рисунок 8. – Добавление «доминошек»


30

blender-empire

Камера для героя игры

“Определение столкновения для камеры персонажа (от третьего лица)”

Этот урок объяснит, как управляется камера от третьего лица при столкновении со стенами и покажет, как предотвратить проскальзывания камеры сквозь стену. Камера будет оставаться внутри комнаты и при столкновении с другим объектом будет передвинута ближе к персонажу.

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

Во-первых, нам надо добавить точ ку, за кото р о й в с е гд а буд е т с л ед и т ь ка м е р а . О н а обычно б ы ва е т в гол о в е . Если ва ш п е р с о н а ж с то и т оч е н ь бл и з ко с п и н о й к ст ене, то ка м е р а д ол ж н а п р и бл и з и т ь с я к э то й точке.

Добавьте объект Empty и свяжите его с персонажем родственными связями, как показано на рисунке: Сейчас нам нужна еще одна точка, которая определяет идеальную позицию для камеры. Это место где находится камера, если между персонажем и камерой ничего нет.

Именно для этого урока необходимо выставить расстояние в 30 единиц, но после вы можете выставить базовое расстояние каким захотите. Поместите другой объект Empty на 30 единиц позади первого и свяжите их:

Сейчас установите камеру. Иногда бывает так, что камера проходит сквозь стену, если она находится близко к ней. Чтобы исключить это, нам надо поместить камеру поодаль от стены в момент, когда она сталкивается с ней. Чтобы сделать это, поместите другой объект Empty где-нибудь в комнате и свяжите его с камерой, как показано на рисунке:

Система объектов у нас готова к программированию. Если вам хочется, то вы можете повернуть первый объект Empty, чтобы поместить камеру на другой угол. Тем не менее, вам необходимо подождать, пока не будет настроена вся логика, прежде чем вы все увидите:


камера для героя игры

31

скрипт Camera Parent g = GameLogic c = g.getCurrentController() o = c.getOwner()

Ray = c.getSensor("Collision")

if Ray.isPositive():

Collision = Ray.getHitPosition()

Установите все логические блоки согласно рисунку:

Camera = c.getSensor("CamPar").getOwner() Camera.setPosition(Collision)

else:

OrigCamera = c.getSensor("CamPos").getOwner() OrigCameraLoc = OrigCamera.getPosition() Camera = c.getSensor("CamPar").getOwner() Camera.setPosition(OrigCameraLoc)

Camera_Pivot – первый объект Camera_Position – второй объект Camera_Parent – третий объект empty.

empty. empty.

Обратите внимание на сенсор Ray, у которого значение параметра Range равно 30. Этот параметр определяет положение точки Camera_Position. Если вы измените расстояние от 2-го объекта Empty до первого, то вам нужно так же изменить и это значение.

Так же не забудьте проверить, чтобы была нажата кнопка 3D у объекта Camera_Parent (Actuators).

Используйте текст на вставке в качестве скрипта Camera Parent. На этом все. Запустите игровой движок и проверьте настройки.

Так же вы можете посмотреть демо-файл (http://www.blending-online.co.uk/CameraCollisionDetection.zip), и увидеть, как это примерно получается. Ссылка на оригинал: http://www.blending-online.co.uk/8501/49279.html


32

blender-empire

Создание меню для игры Введение

вится выпадающее меню, выберите из него ADD NEW. Назовите сцену "Main Menu". Теперь верниВ этом уроке рассказывается как создать титуль- тесь обратно в оригинальную сцену и назовите её ный (стартовый) экран (Title Screen) и главное "Title Menu". Эти имена очень важны. экранное меню (Main Menu Screen), которое поя- Вы находитесь в сцене Title Menu добавьте камеру вляется из Title Screen. Для этого урока необхо- Camera. Передвиньте по оси Z камеру, чтобы придимо, чтобы вы разбирались в логических блоках, поднять ее над сеткой. Установите камеру в ортопонимали, что такое sensors (сенсоры) и actuators гональный вид. Переключитесь в вид из камеры. (приводы), такие как "Scene" и "Property". Также у Добавьте плоскость и отмасштабируйте ее так, вас должно быть готовое изображение вашей со- чтобы она была соразмерна внешней границе вида бственной игры или другие атрибуты "Scene" и из камеры. Подвиньте плоскость немного вниз по "Property". И вам также пригодится текстовый ре- оси Z (-Z). Добавьте еще одну плоскость, но отдактор и программа редактирования изображений. масштабируйте её на 2/3 по короткой стороне прямоугольника камеры вдоль оси Y, и отцентрируйте Создание простого титульного (стартового) по оси X. меню

Стартовое меню будет очень простым, в нем будет расположена кнопка "press Enter to continue" (нажмите «Ввод», чтобы продолжить). Это действие переводит на более интерактивное меню – Главное меню (Main Menu), в котором управление может осуществляться либо горячими клавишами, либо клавишами со стрелками, либо мышью. В этом уроке мы не будем усложнять интерфейс графически, но вы, конечно, можете делать что вам захочется. Ну и также, вы должны разбираться в текстовом редакторе и в программе для рисования, и у вас должна быть клавиатура с клавишей "Print Screen".

На рисунке изображена черная плоскость только для понимания, не надо назначать ей материал. Следующий шаг не является необходимым, но если вы хотите, чтобы ваша игра смотрелась красиво, то сделайте его. Давайте добавим несколько UV текстур. Откройте Первое, что вы до- текстовый редактор и напечатайте там текст, наилжны сделать - это до- более подходящий вашей игре, скажем "Press Any бавить новую сцену. Key to Continue". Теперь скопируйте текст или наКликните на SCE: жмите клавишу "Print Screen" , откройте редактор вверху на информа- графики (тот который вы сами предпочитаете — ционной панели, поя- лишь бы он поддерживал прозрачность) и вставьте

Создание меню Сперва запустите Blender и удалите там все объекты. Затем перейдите в вид сверху (ортогональный) (нажав NUM7).


меню для игры туда этот текст. Также можно добавить несколько дополнительных надписей для главного меню. Таких как "New Game", "Continue", "Story Mode", и поместить их в один файл изображения для UV текстуры. Установите прозрачный цвет фона. Если нет такой возможности, то оставьте его черным, для использования его с альфа каналом в Blender. Сохраните изображение в формате, поддерживающем прозрачность. Теперь разделите 3D окно на две части, и измените одно окно на UV редактор. Выделите меньшую плоскость, переключитесь в режим редактирования и нажмите U, чтобы создать развертку. Затем в редакторе UV откройте созданное нами изображение. Отмасштабируйте вашу плоскость так, чтобы на ней появлялась только надпись "Press Any Key to Continue". Если хотите, то тоже самое можно проделать и с большой поверхностью.

33

Menu", которое возвращает вас в "Resume Scene" "SCE:Title Menu" в стартовое меню.

Пример авторского стартового меню

Ниже представлена моя работа над одной моей игрой, и я надеюсь, она вам поможет. Здесь показан переход на другое меню, которое будет в следующей части. Главное меню

Настройка действий

Данный шаг является необходимым. Выделите большую плоскость, в окне Buttons переключитесь на меню Logic. Это будет очень просто. Добавьте один сенсор Sensor, один привод Actuator и один контроллер Controller. Переключите сенсор на Keyboard Sensor, нажмите на кнопку "True Pulse", и в поле key нажмите на кнопку "All Keys". Сделайте контроллер - "AND". Сделайте привод – Scene. Выберите из выпадающего списка "Set Scene" и введите в поле SCE: Main Menu.

Данный пример немного сложнее приведенного ранее. Мы используем функцию скрипта отображения курсора мыши в игре, что позволит нам уменьшить дерево сенсоров и приводов в панели логики. Сперва нам необходим скрипт-python, который отобразит курсор мыши:

Прежде чем тестировать игру убедитесь что сохранились, и добавили камеру в сцену "Main Menu". Иначе произойдет ошибка. import Rasterizer as r r.showMouse(1) Если вы хотите использовать функцию возвращения в эту сцену, то вместо одного привода добавьте Откройте текстовый редактор в Blender, вставьте два. Сделайте оба привода Scene, но один "Suspend этот текст и сохраните его как "Mouse". Сейчас пеScene" с "SCE:Title Menu", и другой привод "Add рейдите в сцену Main Menu , выделите камеру и Overlay Scene" с "SCE:Main Menu". Это означает добавьте 1 сенсор, 2 контроллера, 1 привод и 1 следующее: когда вы находитесь в сцене главного property (свойство). Назовите свойство (property) меню (Main Menu Scene) и у вас есть кнопка или "Switch", и его тип "Int" (целое число) и устанокакое-то действие для "Remove Scene" "SCE:Main вите значение равное 0. Настройте логические


34

blender-empire

блоки следующим образом: Сделайте изменения в следующем порядке. Контроллер python должен быть Script:Mouse, а не Script:showpointer. Если вам не видно связей на рисунке, то:

Теперь настройка логики: Text-Rectangle: (плоскость с текстом опции) - не нуждается в логике

Outline-Rectangle: (плоскость со свойствами выделенной опции) - добавьте Property, назовите его "Selected", тип свойства Int, и значение равное 0. - создайте сенсор Property, True, свойство сенсора "Selected" – Equal с значением 1, соединить с кон- соедините Sensor с двумя контроллерами троллером AND, соединить с приводом Visibility - соедините контролер AND с приводом со свойством "Visible". - оставьте контролер Python развернутым - создайте сенсор Property, True, свойство сенсора "Selected" – Equal с значением 0, соединить с конЕсли вы сейчас запустите игру, то увидите троллером AND, соединить с приводом Visibility курсор мыши. Итак, вернемся к нашему со свойством "Invisible". Menu. Когда дело касается всплывающих - создайте привод Property, выберите тип Assign, меню, у вас появляется несколько различных Prop: Selected, значение 1, и еще один такой же вариантов. Во-первых, я уверен, что для хо- привод только со значением 0. рошей работы можно использовать кнопки - добавьте контроллер AND и подсоедините к состоящие из 3-х слоев. Что это значит? Я по- нему оба сенсора Mouse. Создайте контроллер стараюсь бегло объяснить. Начнем со слоев. AND и соедините его с приводом Outline-RectanДля хорошей работы сделайте на задний фон gle's с "Selected" Assign=1. любое изображение, можно использовать Transparent-Rectangle: (плоскость с прозрачной прозрачное, таким образом, вы можете сдетекстурой) лать невидимую, но кликабельную (актив- 2 сенсора Mouse: "Mouse Over" и "Left Button", ную) поверхность. Создайте плоскость перед и True для каждого. камерой в том же месте, где вы хотите расположить свою первую опцию. Скопируйте её три раза, и поместите каждую немного позади предыдущей. Выберите самую дальнюю плоскость и наложите на неё UV-текстуру со словами вашей опции. Второй плоскости назначьте UV-текстуру, которая будет отображаться когда опция выбрана в меню игры. Это нужно не только для красоты, но и для того чтобы игрок понял, какая опция выбрана. А самой верхней плоскости должна быть назначена полностью прозрачная UVтекстура.


меню для игры

Сейчас я объясню самую трудную часть. Чтобы все упростить, задайте имя контроллеру AND, назначенному 2-ой по счету плоскости кнопки и связанному с 2-мя сенсорами mouse. Выделите все три слоя плоскостей и скопируйте их 3 раза. Поместите каждую копию (в виде из камеры) ниже предыдущей, убедившись в том, что они параллельны оси Z. Чтобы одновременно можно было выделить лишь один пункт меню сделайте следующее: - контроллер с заданным именем 1-ой кнопки соедините с приводом Outline-Rectangle's Property Actuator "Selected" Assign=0, назначенным 2-ой и 3-ей кнопке (этот привод назначен 2-му слою кнопки – отображающему ее выделенное состояние). Проделайте тоже самое со второй кнопкой – соедините с первой и третьей, и тоже самое с третьей – соедините с первой и второй. Посмотрите, как должно получиться:

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

Теперь все выглядит весьма красиво и эстетично. Чтобы использовать меню осталось добавить приводы Scene. Добавьте еще два привода для каждой

35

на плоскость Transparent (прозрачной). Используйте тот же самый метод, что и с Properties, но вместо создания "Property Assign 1/0" сделайте один контроллер AND, один привод “Scene Overlay” (перекрытия) и один привод «Scene Remove” (удаление) для каждой прозрачной кнопки. Далее создайте три дополнительных сцены, а затем либо создайте в каждой сцене свое меню, либо (для упрощения) расположите в каждой сцене прямоугольную плоскость произвольного цвета. Убедитесь в том, что в случае перекрывания сцен, дополнительные сцены не перекрывают кнопки сцены главного меню (Main Menu Scene). Далее, соедините два сенсора Mouse с соответствующими контроллерами AND, а их в свою очередь соедините с соответствующими приводом "Overlay Scene" и двумя противоположными приводами "Remove Scene". Сделайте тоже самое с другими двумя прозрачными плоскостями. Убедитесь, что в других сценах есть камеры и все отмасштабировано правильно. Вы можете использовать эту технику для создания меню и любого количества подменю.

Автор: Jeremy Buller


36

blender-empire

Применение шаблона при разработке меню для собственной игры Цель этой статьи: рассказать, как использовать го- Все цифры, показанные в файле config.cfg, отнотовый шаблон для создания меню в собственной сятся к определенной функции: игре. Шаблон представлен в виде целой системы Функция Значение Описание меню, которое имеет законченный вид, но вы его GameLogic.Keys[0-9] 119-0 10 кодов кнопок GameKey можете менять, как вам будет это угодно. Шаблон Число от 0.1 до 1.0, измеGameLogic.MouseSens 0,5 няющееся с шагом 0.1 можно скачать отсюда (http://www.blendingЦелое число: 1 — вклю-1 online.co.uk/59279/64410.html). Чтобы разобраться GameLogic.MouseInvert чено, 0 — выключено в его использовании, вам необходимо знать основы Целые числа: 5 значений для использования в на1 GE, а также основы Python и понимать модуль Ga- GameLogic.Settings[0-4] стройках внутри игры meKeys. Целое число: 1 — вклю1 Но мы постараемся вам разъяснить, как его ис- GameLogic.SoundEnabled чено, 0 — выключено пользовать. Число от 0.1 до 1.0, измеВ результате применения этого шаблона появляется меню и набор глобальных переменных, которые доступны для использования в вашей игре. Эти переменные могут быть изменены при помощи описанных ниже экранов с настройками и записаны в файл – config.cfg.

GameLogic.SoundVolume

0,5

GameLogic.MusicEnabled

1

GameLogic.MusicVolume

1,0

няющееся с шагом 0.1

Целое число: 1 — включено, 0 — выключено

Число от 0.1 до 1.0, изменяющееся с шагом 0.1

Эти же данные записаны в текстовом файле Initialize (см. рисунок).

Рассмотрим элементы, из которых состоит это меню, и также посмотрим что можно изменить.


меню для игры

Сцена 1. Initialization (Инициализация)

При запуске шаблона первым, что должно появиться это сцена Initialization. Её цель: загрузить все сохранённые настройки из файла config.cfg и инициировать все глобальные переменные, необходимые для системы меню.

Что необходимо настроить? 1. У скрипта Initialize есть необязательный элемент для проигрывания музыки с самого начала игры. Однако, для этого необходимо наличие установленного pygame. Для использования просто уберите комментарий в коде и укажите путь к музыкальному файлу.

37

Сцена 2 и 3. Intro Blender и Intro Bullet

Вы можете просмотреть из чего и как организованы эти сцены. Их можно использовать при отображении логотипов, каких-либо заставочных анимацией и т.п. Также можете заменить их на свои сцены.

Рис. - Intro Blender

Рис. - Intro Bullet 2. Ниже в скрипте располагаются настойки поумолчанию. Необходимо помнить о том, что клавишам требуются или числа модуля GameKeys (например, 117, 102) или эквивалентные коды игровых клавиш gamekey (например, GameKeys.WKEY, GameKeys.SPACEKEY). После завершения скрипта загрузятся следующие сцены - Intro Blender и Intro Bullet.

Сцена 4. Menu (Меню)

Сцена основного меню, состоящая из трёх слоёв. На переднем плане — экран загрузки, за ним — меню и, наконец, сцена заднего плана.


38

blender-empire

Рис. – экран загрузки

Рис. – экран меню

сделать снимок экрана заднего плана и отобразить его (map) на экран загрузки, то, поработав с изображением, можно получить интересный эффекты постепенного увеличения чёткости изображения (fade in). 2. Для того, чтобы добавить к меню собственную сцену заднего плана, выберите объект - плоскость на которую накладывается изображение заднего плана и назначьте свое изображение (сцена Menu BG). 3. Загрузка экрана меню. Кнопка New Game. Всё, что требуется изменить у этой кнопки — это исправить сцену у привода Remove BG (Remove BG actuator) на вашу сцену заднего плана, которую можно было оставить такой же, но с другим изображением. 4. Кнопка Credits. Снова измените сцену у переключателя Remove BG (Remove BG actuator) на сцену вашего заднего плана меню. В переключателе Add Menu BG C (Add Menu BG C actuator) Вы можете добавить отдельную сцену заднего плана для использования на экране Credits. Сцена 5. Opt Keys

Первое из окон Options. Здесь можно настроить 10 слотов клавиш.

Рис. – экран заднего плана

Что необходимо настроить? 1. Сначала необходимо сменить текстуру экрана загрузки, чтобы она подходила вашей игре. Если

Рис. – меню Opt Keys


меню для игры

Что необходимо настроить? 1. В левой части окна находятся текстовые поля. Переименуйте их в зависимости от того, что будет делать каждая ваша клавиша. Самая верхняя кнопка будет GameLogic.Keys[0], а самая нижняя — GameLogic.Keys[9]. Запомните их, чтобы назначать переменные в вашей игре. 2. Если вам не требуются все 10 клавиш, переместите неиспользованные клавиши за пределы окна. Не удаляйте их, это нарушит работу одного из скриптов. Сцена 6. Opt Mouse

Второе из окон Options. Здесь можно изменить настройки мыши. В этой сцене ничего изменять не нужно.

Рис. – меню Opt Mouse Сцена 7. Opt Settings

39

Рис. – меню Opt Settings

Что необходимо настроить? 1. Переименуйте текстовые поля в левой части окна в зависимости от того, что будет делать в игре каждая установка. Самая верхняя установка будет GameLogic.Settings[0], а самая нижняя — GameLogic.Settings [4]. Запомните их, для того, чтобы использовать их в игре. 2. Если вам не нужны все установки, удалите текст под «## Get slider objects - ‘X’s» в файле Opt Settings и они исчезнут. Не удаляйте текстовые объекты, поскольку это нарушит работу одного из скриптов. Вы можете удалить кнопки. Если вам требуется только две установки для ваших настроек, удалите третью кнопку. Сцена 8. Opt Sound

Четвёртый экран Options. Здесь вы можете изменить настройки звука и музыки.

Третье из экранов Options. Здесь можно изменить пять настроек, которые могут быть отображены на любую функцию в вашей игре.

Рис. – меню Opt Sound


40

blender-empire

Сцена 9. Credits

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

Сцена 10. Init Game

Итак, вы успешно интегрировали систему меню в вашу игру. Теперь, возможно, вы захотите сделать меню более уникальным и соответствующим вашей игре. Распакуйте данные из этого файла и можете изменять вид рисунков, как вам этого захочется, которые находятся в папке Textures. В редакторе UV editor замените текущее изображение на другое, и все кнопки или окна во всём меню изменятся. Можно заменить следующие текстуры: Interface_Window1.png (текстура окон) Interface_Button1.png (текстура прямоугольных кнопок) Interface_Button2.png (текстура круглых кнопок) BlenderLogoSmall1.tga (небольшой логотип в углу каждого окна) Arial.tga (шрифт текста).

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

Эта сцена загружается перед началом игры сразу после того, как нажата кнопка New Game. Она запускает скрипт, называемый Init Game для инициализации всех глобальных переменных, требуемых в игре. В этом скрипте вы можете вве- Удачи! сти любые значения, требуемые для вашей игры.


Хочешь больше узнать о Blender?

Читай журнал Blender-Empire


42

blender-empire

автор: Зарыпов Владимир

Структура проекта для Big Buck Bunny Предисловие

В поисках нового материала для очередного номера журнала мы решили создать постоянную рубрику, в которой бы размещались статьи одной и той же тематики, но разбросанные на несколько номеров. Чтобы материала для такой рубрики хватило на несколько месяцев, её тема по идее должна быть очень обширной. А нет ничего более обширного и неисчерпаемого для обсуждения, чем создание 3D-мультфильмов профессионального качества. Вторым по сложности и широте охвата и идёт, наверное, создание игр, но эту тему мы пока пропустим. Так вот. Мы ни в коем случае не задаёмся целью научить читателя делать мультфильмы от А до Я. Нет. Во-первых, для этого уже есть хорошая книга небезызвестного в Blender-сообществе Roland-а Hess-а «Animating with Blender. How to Create Short Animations from Start to Finish». Она, правда, ещё не переведена на русский язык, но хотя бы с переводчиком в руках из неё можно извлечь много полезного. Во-вторых, чтобы учить других делать мультфильмы профессионального качества, сперва нужно самим хотя бы, как минимум, сделать дватри подобных мультфильма, чем мы, к сожалению, похвастаться не можем. Поэтому мы не будем обсуждать здесь теорию о том, как создаются мультфильмы от А до Я, а займёмся изучением «внутренностей» таких мультфильмов, чтобы понять ход мыслей профессионалов и разобраться, почему они всё сделали так, а не иначе.

http://www.elephantsdream.org

http://www.bigbuckbunny.org

Мы прекрасно понимаем, что Blender-сообщество разделилось на две категории людей: на тех, кому больше нравится мультфильм «Elephants Dream» и тех, кто фанатеет от «Big Buck Bunny». Первые, как правило, являются сторонниками реализма и фотореализма, монстроподобных и человекоподобных персонажей. А вторые больше тяготеют к мультяшной стилизации и упрощению. Так или иначе, но как бы ни было обидно первой категории людей, а изучать мы будем файлы к мульУ Blender-сообщества есть одно прекрасное преимуще- тфильму «Big Buck Bunny». Во-первых, потому, ство: мы имеем возможность изучать исходные файлы к что они меньше по объёму (суммарно 1 гигабайт законченным короткометражным мультфильмам «Ele- против 7 гигабайт в «Elephants Dream»), в связи с phants Dream» (2007 г.) и «Big Buck Bunny» (2008 г.), со- чем их проще скачать из интернета. Во-вторых, зданных в рамках «The Orange Open Movie Project» и они не отягощены огромного размера текстурами и «The Peach Open Movie Project» соответственно. Эти быстро загружаются в память компьютера. И, вфайлы выложены в свободном доступе в интернете, и ка- третьих, поскольку это был уже второй проект у ждый желающий может их скачать. Blender Foundation, то он основывается на боль-


взгляд изнутри

шем опыте и использует возможности более современных версий Blender.

43

В отличие от программ, вроде Autodesk Maya или Autodesk XSI, Blender не создаёт автоматически дерево папок для проекта, и поэтому мы вольны И последнее. Данный цикл статьей будет больше сами решать, как это дерево должно выглядеть. ориентирован не на начинающих пользователей Увы, изучая файлы к «Big Buck Bunny», мы не смоBlender, а на «продолжающих», и поэтому в них не жем увидеть в них структуру рабочего проекта — будут описываться очевидные вещи вроде того, как мы увидим только структуру законченного пользоваться Blender и где искать тот или иной ин- проекта. В ней уже нет папок для сценария, раскаструмент. Для этого придётся обратиться либо к дровок и рендеров. И чтобы хоть как-то возмедокументации, либо к соответствующей литера- стить этот пробел, прежде чем двигаться дальше, туре. Например, прочитать книгу группы авторов обратимся сперва к опыту бывалых людей — а это под руководством всё того же Roland-а Hess-а «Es- снова будет Roland Hess. sensial Blender». В своей книге «Animating with Blender. How to CreЧасть 1. Структура проекта. ate Short Animations from Start to Finish» он предлагает следующую структуру проекта: Всякий раз, когда мы начинает что-то создавать в Blender, мы сохраняем свои гениальные потуги в Разберём, что здесь для чего файл. Если наша работа осложнена присутствием нужно. текстур, либо ещё каких-то дополнительных файлов, то мы создаём на компьютере отдельную export – папка для видеофайпапку и сбрасываем в неё рабочий .blend-файл со лов с финальной или тестовой всем, что к нему прилагается. Как правило, одной анимацией. папки нам хватает надолго, но только до тех пор, пока мы не задумаем сделать что-то очень больmodels – модели для всего, что шое и сложное — например, мультфильм уровня появится в мультфильме — от «Elephants Dream» или «Big Buck Bunny». И как персонажей до реквизита. Если только нам приходит в голову эта сумасшедшая и того, и другого много, то мысль, то сразу становится понятно, что одним Roland рекомендует дополнитолько файлом с расширением .blend мы не отдетельные подпапки для этих калаемся. Кроме того, что самих .blend-файлов будет, тегорий. Позже мы увидим, как минимум, десяток, не считая промежуточных как это реализовано в файлах к версий, появятся ещё файлы с текстурами (что «Big Buck Bunny». само собой разумеется), со сценарием, скетчами, референсами, раскадровками, аниматиками, те- renders – финальные и тестовые рендеры. Причём, стовыми рендерами, финальными рендерами, для каждого шота создаётся отдельная подпапка. python-скриптами и звуком. Конечно же, никому и в голову не придёт держать всё это в одной боль- scenes – .blend-файлы с анимацией. Для каждого шой куче. И чтобы всё это добро как следует рас- шота — отдельный файл. пределить, придётся сначала составить структуру script – папка для сценария. Особенно полезна проекта, а потом создать для него дерево папок. тем, кто любит, чтобы он был. :)


44

blender-empire

sets – .blend-файлы, содержащие в себе все модели, составляющие место действия, то есть комната со всем, что в ней есть, луг или поляна в лесу с травой и деревьями. В таких файлах, как правило, нет никаких своих объектов — в них содержатся только ссылки на библиотеки с моделями. sound – не буду переводить, догадайтесь сами. :)

storyboards – раскадровка. Опять же для тех, кто считает очень важным её создание.

storyreel – текущее состояние всего мультфильма, синхронизированного со звуком. В начале работы это всего лишь озвученная раскадровка, затем её сменит озвученный аниматик, а позже части аниматика будут постепенно заменяться отрендеренными фрагментами будущего мультфильма. tests – тестовые .blend-файлы для проведения различных экспериментов и испробывания новых или старых фич в Blender. textures – не хотелось бы вас разочаровывать, но это папка для текстур. :)

Итак, мы получили ориентир и теперь можем либо взять эту структуру себе на вооружение полностью, либо частично, либо вообще целиком отвергнуть. Посмотрим же теперь, как выглядит дерево законченного проекта в «Big Buck Bunny»:

Здесь всё немного не так, как предлагает Roland. Первое, что бросается в глаза, — отсутствует напрочь папка models. Вместо неё есть отдельные папки с моделями, которые лежат прямо в корне проекта. Это chars – персонажи, envs – окружение, mattes – задние фоны (как рисованные, так и .blend-файлы, создающие атмосферу с холмами), props – реквизит и sets – сборочные файлы для мест действий.

Следующее, что бросается в глаза, — в каждой из этих папок есть подпапка textures, куда сбрасываются текстуры конкретного типа. То есть те, что относятся к персонажам, — будут в папке с персонажем; те, что приготовлены для реквизита — в папке с реквизитом и т. д. В общем-то говоря, подход удобный, но всё же для рабочего проекта не мешало бы скинуть папки chars, envs, mattes и props в отдельную папку models, как рекомендует Roland, иначе наше корневое дерево будет слишком длинным.

Кстати, хотелось бы ещё заметить об одном тонком различии между envs и props, потому что, если взглянуть в .blend-файлы в этих папках, то на первый взгляд может показаться, что в них находятся модели одного типа, и не совсем ясно, чем они различаются. Так вот, envs и props (окружение и реквизит) — это с точки зрения моделлера одно и то же. И если бы мы создавали не анимацию, а большую модель для рендеринга одной картинки, то не стали бы их разделять. Различие между ними возникает тогда, когда с моделями начинает взаимодействовать персонаж, либо эти модели каким-то образом анимируются. Тогда всё, что остаётся неподвижным в кадре — это окружение, а всё, что анимируется и берётся в руки персонажем — реквизит.


взгляд изнутри

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

45

Папка scripts в «Big Buck Bunny» и папка script в структуре по версии Roland Hess – это также не одно и то же. Если у Roland-а в ней хранится файл со сценарием, то в «Big Buck Bunny» - скрипты на языке Python. Вот так. В английском языке для этого используется одно и то же слово-синоним, и сценарии к фильмам часто называют скриптами. Ну, а вы, если не будете использовать скрипты на Python или не станете писать сценарий к мультфильму, то можете у себя эту папку так и оставить с таким названием. А если и то, и другое — да, тогда придётся привлекать на помощь фантазию и изобретать различающиеся слова. :)

Также в папке chars есть одна загадочная подпапка pyconstraints. Это тоже скрипты на Python, только предназначенные для управления персонажами с помощью констрейнов. Честно говоря, трудно предположить, для чего они понадобились, но, учитывая, что создание сложного мультфильма профессионального качества редко обходится без привлечения программистов для решения всяких нетривиальных задач, то, по-видимому, это один из таких случаев, когда без программистов какуюто проблему решить не удалась. Последнее, что нам осталось разобрать — это папка scenes. Здесь хранятся файлы с анимацией. Мультфильм разбит на сцены — их 13 штук, и для каждой сцены выделена отдельная папка, а в каждой папке для каждого шота выделен отдельный файл.

Окружение

Реквизит

Шот (по англ. shot) — это отрезок видеозаписи от включения камеры до выключения. Если камера непрерывно что-то показывает 2 сек, то это будет двухсекундный шот, а если три часа, тогда трёхчасовой шот. Правда, в мультфильмах и кино редко бывают шоты длиной больше пяти минут. По-нашему они называются кадром (так же как и кадр для единичного снимка), но в компьютерную графику просочился термин «шот» и быстро закре-


46

blender-empire

пился как более удобный и не вызывающий путаницу с кадром.

Вообще говоря, не обязательно создавать отдельный файл для каждого шота. Можно создать в одной сцене несколько камер, проанимировать всё, что движется, переключаясь то на одну камеру, то на другую, и потом за один проход всё отрендерить. Но, тем не менее, все, кто сталкивался с созданием мультфильмов, настоятельно рекомендуют разбивать сцену на шоты. Отчасти это связано с тем, что разные шоты по разному композятся, и поэтому слишком сложно будет работать с Node Editor. Другая причина — более простой рендеринг, особенно, если файлы будут сдаваться на render-farm. Ну, и по части анимации одношотовые файлы становятся легче, быстрее загружаются, занимают меньше памяти, не замедляют работы и не «валят» Blender в критических ситуациях. Например, если заглянуть в папку 12_peach, то мы увидим следующее:

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

Файлы здесь по большей части небольшого размера, иногда даже по 130-500 КБ, что достигается благодаря системе линкования. Файлы с шотами содержат в себе, основном, только ссылки на другие файлы с моделями, и основная находящаяся в них информация — это данные об анимации подключенных к ней объектов. Нельзя также не заметить двух файлов с удивительными именами — 08_11_13.blend и 09_10.blend, к каждому из которых прилагается соответственно файл 08_11_13.txt и 09_10.txt. Это тот случай, когда один длинный шот разрезается монтажом на части и затем перебивкой показывается вперемешку с другими шотами. Для этого случая аниматоры «Big Buck Bunny» не стали создавать отдельные файлы, а разрешили шоту отрендериться за один раз, только указали в текстовых файлах диапазоны кадров, которые относятся к раздельным подшотам.

Файл 18_20.blend — это ещё один интересный случай. Почему-то аниматоры сделали два варианта падения Фрэнка на колья. В первом случае он состоит из двух шотов: 18.blend, в котором Фрэнк начинает падать и раскрывает свой кожаный парус, и 20.blend, котором он в конце падения хватается за ветку и начинает отползать по ней вверх. Вероятно, был ещё файл 19.blend, однако от него уже ничего не осталось, потому что потом, когда вся сцена уже была закончена, кому-то что-то, по-видимому, не понравилось (то ли аниматору, то ли режиссёру), и весь эпизод был переделан. Теперь все три шота были объединены в один непрерывный, в котором Фрэнк начинает падать, хватается за ветку и заползает вверх. Этот вариант и пошёл в финальный мультфильм. Таким образом, получи-


взгляд изнутри

лось, что в файле 18_20.blend содержатся три подшота, которые в конечном итоге по воле судьбы не стали перебиваться в монтаже никакими другими шотами.

47

scenes – пошотовые файлы с анимацией.

script – программы на языке Python.

sets – сборочные файлы с местами действий.

В подпапке dvd содержатся .blend-файлы для создания оболочки к DVD с финальным мультфильмом, а в подпапке elements — один .blend-файл с анимированным выводом на экран всей библиотеки моделей. Вероятно, это предназначено для какой-то презентации.

Файлы со всех папок собраны в одну большую иерархию, на вершине которой находятся анимационные файлы шотов из папки scenes. Всё остальное подключаются к ним через систему линкования. А вот как это делается, будет рассказано в следующий раз. :)

Итак, если подытожить всё выше рассмотренное, то структура законченного проекта «Big Buck Bunny» состоит из следующего дерева папок: Для любителей же м о н с т р о п од о б н ы х chars – здесь собраны модели всех персонажей персонажей, суперфомультфильма — кролика Bunny, фиолетовой тореализма и мульптицы и тройки грызунов. тфильма «Elephants Dream» предлагается envs – модели с библиотеками окружения — трава, пока домашнее задацветы, камни, листья, деревья и т. д. ние: разобраться со структурой папок к mattes – задние фоны — в их числе как просто ри- проекту «Elephants сунки облаков и холмов на горизонте, так и .blend- Dream». :) файлы, создающие панорамные виды. props – реквизит — модели единичных объектов, которые будут анимироваться то ли при взаимодействии с персонажами, то ли самостоятельно, вроде падающей на шиншилу каменной глыбы.

автор: Зарыпов Владимир


48

blender-empire

ГАЛЕРЕЯ

УЧАСТНИКИ КОНКУРСА НА БАННЕР «BLENDERУКРАИНА», ТЕМА «РЕАЛИЗМ»

Respect32: уютная комната

Respect32: спутник


галерея

impulse102: смерь титаника

Blender-line: Suzuki

49


50

blender-empire Respect32: педаль дисторшн

tux: Механический натюрморт

BlenderMan: Фотоаппарат


Respect32: стакан + банан

галерея

Em: бублик

intel: Коллекционер

Ultra: Neon

51


Продолжение следует...


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.