Введение:
Эта статья описывает процесс создания деревьев заданной формы в программе 3D моделирования Blender с помощью скрипта Gen3. Автор скрипта – Сергей Прохорчук (stager13). Статья рассчитана на пользователей со знанием основ программы Blender. Так как я не знаком с другими скриптами, то не уверен, что с ними этот метод также можно применять, но думаю, что такое возможно. (в конце концов модель дерева – есть модель дерева...). Также я не уверен, что нет другого, более изящного решения такой задачи (ну может быть с новым Peach Tree Generator?), но это способ, который был придуман мною.
Однако, если вы - настоящий гуру Блендера, или для вас в тут «многа букофф», то для вас я составил «краткий алгоритм», вкратце описывающий основные последовательные шаги.
Краткий алгоритм:
Tree Mesh (Mat 1) > Suzanne Mesh (Mat 2) > Boolean (Divide) > Delete Mat 2 |
Если вы полностью не поняли эту схему, не стесняйтесь прочитать дальше руководство, там будет больше деталей. ;)
Создание дерева:
Я не буду пояснять принципов создания деревьев скриптом Gen3. Если вы не знакомы с ним, то я очень рекомендую ознакомиться с уроком по работе с Gen3 на сайте BlenderNewbies.com (автор - Kernon Dillon), где описывается практически всё, что вам необходимо знать о создании деревьев с помощью скрипта.
При создании дерева, которому вы собираетесь задавать форму, важно знать, что чем более густую крону вы сделаете вашему растению (я имею в виду ветки, прутики, листья), тем лучше будет результат. Чем сложнее ваша будущая форма дерева, тем это более существенно. Я использовал для этой статьи в качестве шаблона форму Сюзанны – меш Monkey из базового набора форм Blender. Я полагаю его достаточно сложным и требующим очень плотной и детальной кроны дерева.
К сожалению, это ещё и означает, что вам потребуется довольно мощный компьютер для просчёта сложных форм, так как некоторые процессы могут занимать ощутимое количество времени. Но если ваш компьютер не очень мощный – используйте для шаблона простые формы (напр. сферу), а крону
дерева генерируйте не слишком плотную. И между прочим, если вы хотите сделать дерево с кубической кроной, то есть способ ещё более простой, он описан там же в уроке от Kernon Dillon, а я делал по этому способу пирамидальное дерево.
Вернемся к нашему дереву. На Рис.1 показаны настройки скрипта, которые я использовал для генерации дерева.
Сгенерированное с такими настройками дерево показано на Рис. 2. Я постарался сделать дерево с округлой кроной, которая позволила бы поместить в нее Сюзанну. У нас, как видно, получилась модель с веселым числом фейсов более чем 500000.
Немного обработаем наше дерево перед следующим шагом. В одной части экрана откроем панель Outliner и переименуем условные названия деталей дерева в осмысленные: например «Stvol», «Vetki», «Prutya», «Listva» или подобным образом. (см. Рис.3).
Следующее, что необходимо сделать – в Object Mode поочередно выбрать каждый элемент дерева, смягчить его (Set Smooth), и, перейдя в режим Edit Mode(Tab) выбрать все вершины и удалить дубликаты (W > Remove doubles). Теперь дерево выглядит лучше и в нём осталось «всего» около 400000 фейсов. Ну и напоследок не забудьте назначить каждой из частей дерева материал (неважно какого типа) я, например назначил всем частям один и тот же белый материал.
В режиме объекта добавляем форму, необходимую нам для шаблона, из готовых форм или моделируем ее. Я взял стандартный меш Monkey.
Мешу шаблона также назначаем материал, причем здесь лучше назначить какой нибудь другой цвет, чтобы меш шаблона хорошо контрастировал с прочими материалами дерева. Я выбрал веселый темно-розовый цвет. (если вы тоже выбираете весёленький розовый цвет, то не забудьте дереву назначить веселенький бирюзовый ;) - наверное шутка (прим. перев.)) См. Рис.4.
Также опытным путем я пришел к выводу, что следует сделать потолще тонкие выступающие части Сюзанны (уши и рот), иначе могут случаться ошибки. Просто выберем и сместим несколько вершин, чтобы уши и рот стали толще. (Рис.5)
Теперь выбираем Сюзанну и помещаем её в крону дерева.(лучше делать это переключившись на каркасный вид, чтобы что-то увидеть). Модель Сюзанны масштабируем и перемещаем так, чтобы она сидела в середине кроны по центру, не приближаясь к краям кроны. Добиваемся этого с фронтального и бокового вида одновременно. (Рис 6; 7)
Займемся обрезкой лишних элементов дерева. Чтобы сделать это, выбираем элементы, например листву, и переходя в Edit Mode способом выбора рамкой (Box select – B) приблизительно выбираем вершины вокруг шаблона Сюзанны и удаляем их. (Рис.8, Рис.9).
Слишком близко к Сюзанне резать не стоит, чтобы не оттяпать лишнего. Опять же повторяем эти процедуры для фронтального и бокового видов.
В результате мы получим дерево с кубической формой кроны. (Рис.10) Это техника «подстрижки» деревьев из урока от, Kernon Dillon, на который я ссылался ранее. Если у вас супермощный компьютер, то вы можете такой подрезки и не делать, если нет – то повторить подрезку также для веток, прутиков и т. д.
Итак, подготовка закончена – начнем придавать форму нашему дереву. Прячем все элементы сцены в скрытый слой, оставляя только Сюзанну и листву. Выберем оба меша в режиме Объекта и применяем булеву операцию пересечения (W > Boolean > Intersect).
У нас генерируется новый меш, границей которого будут границы пересечения двух выбранных. Этот процесс занимает много времени и зависит от мощности компьютера (На моём рабочем Мас РРС 1.5GHz, 1Gb RAM на это ушло около получаса). Можете пойти попить кофейку.
Полученный меш листвы в форме Сюзанны будет иметь название либо «Suzanne 001», либо «Listva 001», в зависимости от того, какой элемент вы выбрали последним (лично я сначала выбирал Сюзанну, а потом листву – всё-таки получаемый меш – часть дерева), а так вообще порядок выбора не имеет значения. Снова скрываем все остальные меши, чтобы оставить только созданный. Он выглядит, как голова Сюзанны с дырками в ней и листвой внутри (Рис.11)
Так как нам не нужна розовая оболочка для нашего дерева, удалим ее. Для этого мы и назначали 2 разных материала ранее. Выбираем новый меш-объект, переходим в Edit Mode и в панели редактирования (F9) смотрим на закладку Link and Materials. (Рис.12)
Тут мы выбираем наш веселенький розовый материальчик (он у нас читается как «2 Mat 2»). Теперь нажимаем кнопку Select(Выбрать), расположенную ниже и у нас выбираются все вершины с назначенным розовым материалом (Рис.13), принадлежащие оболочке.
Смело удаляем их (Х или Del > Erase Vertices). Теперь у нас остались только листья, которые находились внутри Сюзанны.(Рис.14)
Перед тем, как проделать те же операции с прутьями и ветками, необходимо доработать получившийся меш. Дело в том, что после комплексного удаления вершин меша, у нас обязательно остались вершины, не соединённые фейсами. Их необходимо удалить. Для этого оставаясь в режиме Edit Mode переключаемся в режим выбора фейсов (Face Select Mode – Ctrl tab 3). Теперь рамкой (В) обводим весь меш целиком (НЕ нажимайте Select All (A)!), для выбора всех полноценных фейсов. Переключаемся в режим выбора вершин (Vertex Select Mode – Ctrl Tab 1) и увидим выбранными все вершины принадлежащие фейсам. Теперь в меню Select > Inverse – инвертируем выбор. Мы видим теперь выбранными все ненужные вершины. Удаляем их.
Мы закончили с приданием листьям формы Сюзанны, называем наш меш, например «Suzanne Listva»и прячем в скрытый слой. Теперь делаем видимыми исходные меши прутьев и Сюзанны и повторяем всё то, что только что проделали с листьями: Выбирае прутья и Сюзанну, делаем булеву операцию пересечения (W), которая теперь должна вычисляться побыстрее, удаляем ненужные вершины (Рис.15).
Затем проделываем всё то же для веток. (Рис.16)
Теперь все элементы дерева имеют нужную форму. Присвоим им окончательные материалы листьев, веток и прутьев, какие вам угодно и отрендерим, чтобы посмотреть на результат. (Рис.17)
Как мы видим результат есть, но он не совсем хорош. Даже после того, как мы поработали с ушами и мордочкой Сюзанны, утолстив их, всё же в этих частях маловато заполнение кроной дерева. Это означает, что нужно было генерировать более массивное дерево (я не имею в виду его величину, а подразумеваю большее количество веток, листьев и т. д., ну то есть более густую крону.) Как вариант, чтобы не переделывать заново – в режиме редактирования дублировать элементы и заполнить ими разреженные участки. Потом удалить лишнее и результат должен быть неплох. Я, как раз пошёл таким путём и, по-моему, всё выглядит значительно лучше (Рис.18).
Я, кстати, использовал то же самое дерево для «обложки» этой статьи. И как вы можете видеть на таком расстоянии от камеры довольно тяжело рассмотреть какие-либо неточности. Также и вы продумывайте, как стоит детализировать деревья, в зависимости от их положения на финальном изображении. В некоторых случаях не стоит вообще возиться с улучшением.
Это всё, что я хотел сказать. Надеюсь вам понравилась моя статья. Если у вас есть вопросы или рекомендации по поводу данной статьи, не стесняйтесь – обсудим на blenderartists.org. Также дайте мне знать, если знаете другой более лёгкий способ. И не забудьте показать мне ваш результат.
Выражаю благодарность Сергею Прохорчуку за его великолепный скрипт и Кернону Диллону ( Kernon Dillon) за чудесный урок о нём.
Удачного Блендинга.
Автор: MasterDomino
Перевод: cyberdime
Оригинал урока (анлг): скачать здесь
Урок в pdf версии (рус): скачать здесь
Скрипт Gen-3: скачать здесь