Оригинал материала: https://3dnews.ru./169116

Пакет SpeedTree - набор для создания и работы с моделями деревьев в 3D Studio Max

Стр.1 - Введение, SpeedTree Max

Дополнительную информацию, примеры анимаций и изображений сцен можно найти на сайте разработчика. Стоимость коммерческой версии пакета SpeedTree составляет $395.

Введение

Все что нужно для создания хорошего дерева и сцены с помощью SpeedTree – это оригинал создаваемого дерева (или его reference-изображение), текстуры для ствола и листьев и пара часов свободного времени. В общем, SpeedTree – вполне "рабочая" программа, быстрая, простая и удобная, к тому же не имеющая аналогов для работы с 3d studio max.

Разработка полноценного реалистичного ландшафта земного типа – задача с одной стороны сложная, с другой – узкоспециализированная. В силу такой специфики ни одна из программ трехмерного моделирования общего назначения, вроде Maya, Softimage, 3d studio max или LightWave не имеют в своем арсенале полноценных инструментов для ее решения, моделирование реалистичных ландшафтов в этих программах, хотя и возможно, является длительным и сложным процессом. С другой стороны, существуют, и довольно давно, программные пакеты, основной целью которых является создание только ландшафтов. Одни из них более обладают более широкими возможностям, например Animatec WorldBuilder, и позволяют создавать рельеф и все необходимые составляющие - растительность, водоемы, атмосферу и эффекты, небо и прочее. Другие, такие как Terragen Generator, обладают меньшими возможностями, но зато работают с отменным артистизмом.

К сожалению, основной недостаток таких программ в их узкой специализации, за пределами которой остается все то ценное, что есть в программах общего назначения – продвинутый рендеринг, анимация и пр. Идеальным решением стало бы объединение сильных сторон обоих подходов. И такое решение существует давно – это пара программ: специализированное для решения какой-либо задачи приложение, плюс встраиваемый модуль, посредством которого происходит его общение с программой общего назначения. К сожалению, далеко не все разработчики следуют по этому пути. И в области разработки ландшафтов ситуация особенно грустна. Ни Worlbuilder, ни Vue d’Esprit или MojoWorld не совместимы ни с каким другим приложением (не считая, конечно, функций импорта-экспорта).

Предметом данного обзора является программа, в полной мере реализующая "правильный" подход. Знакомьтесь, SpeedTree – двухкомпонентный программный инструмент для наполнения трехмерных ландшафтных сцен растительностью – деревьями и кустарником – в среде 3d studio max 4. Другими словами, SpeedTree состоит из двух частей: программы для моделирования деревьев SpeedTree CAD, работающей независимо, и плагина 3d studio max – SpeedTreeMax, ответственного за размещение и анимацию в сцене как отдельных деревьев, так и их групп.

Отличительной особенностью программы является довольно приличная реалистичность создаваемых деревьев – с одной стороны, и небольшое количество используемых в модели полигонов – с другой (от 2 до 70 тысяч полигонов в одной модели). Поэтому, SpeedTree великолепно работает как приложение для создания "массовки" среднего и дальнего планов трехмерной сцены.

SpeedTreeMax

Основное назначение плагина SpeedTreeMax - создание композиции сцены, т. е. размещения объектов - деревьев или их групп, ее анимации и рендеринга. С его помощью нельзя редактировать само дерево, хотя и можно, работая над сценой в 3d studio max, вызвать для этого SpedTree CAD в интерактивном режиме.

Базовая процедура построения композиции выглядит следующим образом. В командной панели max’а Create выбираем Geometry, затем закладку IDV Software и на ней – кнопку SpeedTree. Щелкаем в нужном месте сцены на предварительно созданной поверхности (объект типа EditableMesh) и получаем абстрактное дерево (generic tree). Сохраняя его выделенным, переходим в командную панель Modify и щелкаем на кнопке "Import ".spt" file" – в раскрывшемся окне выбираем файл с индивидуальными характеристиками дерева. В принципе, все.


Все средства управления SpeedTreeMAX распределены по трем панелям:
Create > Geometry >IDV Software


На закладке Modify находятся основные средства работы с композицией


Вкладка для работы с тенями у стандартных источников света.
Появился новый тип тени SpeedShadow и закладка с его параметрами.

В пакет поставки коммерческой версии программы включена библиотека из моделей 20 типов деревьев с разной степенью детализации, в демо-версии представлены только три типа. Кстати говоря, этот набор можно расширить – для чего необходимо проделать следующий трюк. Загружаем сцену, идущую в поставке с демо-версией, но содержащую дерево, отсутствующее в библиотеке. Выделяем дерево и с помощью кнопки интерактивного редактирования вызываем SpeedTree CAD. В открывшемся окне редактора – наше дерево со всеми параметрами, но без текстур. Таким образом можно изучить методы создания таких объектов, как трава или ель. Интересно, что 3d studio max воспринимает spt-файл с параметрами дерева как текстурную карту, хотя по сути это скорее файл конкретных параметров для абстрактного процедурного объекта- дерева.

Попытка выполнить экспорт в полигональный объект (в том числе, сохранить сцену в формате .3ds) не работает – дерево не экспортируется в принципе. Так что возможность что-либо вручную подправить или добавить напрочь отсутствует. По крайней мере, в текущей версии. На сайте IDV имеется информация о скором выходе новой версии SpeedTree CAD, имеющей возможность экспорта объектов в различные 3d форматы.

Для доводки композиции представлены следующие средства: перемещение дерева по сцене, масштабирование, назначение у стандартных источников света теней типа SpeedShadow. Последняя возможность, как заявляют разработчики, должна серьезно улучшить вид дерева при рендеринге, поскольку корректно просчитывает тени, но работает только со встроенным рендером max. Те же тени можно получить при использовании метода трассировки лучей, но время рендеринга при этом значительно увеличится. В последнем случае, потребуется делать по две копии дерева – одна освещается, но не отбрасывает тень, вторая не освещается, но отбрасывает тень (операции включения/исключения выполняются в параметрах источника света кнопкой Exclude/Include). На закладке billboarding параметров дерева для одной из копий дерева нужно отключить автонацеливание листьев на камеру и указать нацеливание на источник света. Время рендера методом трассировки лучей увеличивается в разы по отношению к методу с использованием SpeedShadow. Такой тяжеловесный способ приходится использовать из-за особенностей работы программы – для того чтобы листья корректно рендерились, необходимо, чтобы плоскость полигонов, на которых лежат листья, была параллельна плоскости камеры (источника света - для теней) или перспективному виду.


Рендер дерева без теней. В сцене один источник света.


Стандартные тени – shadow map. Изображение получается слишком темным, потеряно множество деталей.
Время рендера около 2,5 минут на Pentium-3 600 МГгц, 640 Мб оперативной памяти.


Вместо стандартных теней используются тени плагина SpeedTreeMAX – SpeedShadows.
Время рендера около 2,5 минут.


В сцене одно дерево с листьями, выровненными по плоскости камеры. Рендер выполнен с использованием трассировки лучей, время- около 19 минут. Как хорошо видно на изображении, тень от листьев на земле почти отсутствует. Для правильного их отображения потребуется еще одно дерево с листьями, выровненными по плоскости источника света.

Особо следует остановиться на средствах создания и размещения групп деревьев – леса, поскольку они и являются "сердцем" плагина. Большинство средств управления собрано на закладке "Forest" - "Лес". Группы создаются на основе одного предварительно созданного в сцене дерева и сплайнов – замкнутых, описывающих границу области заполнеия деревьями, или разомкнутых, тогда деревья размещаются вдоль линии. С помощью кнопки "Terrain" можно учесть рельеф выбранной поверхности. Плотность размещения деревьев внутри заданной области регулируется параметрами "Density" (Плотность) и "Collide", запрещающей размещение более одного дерева внутри области заданного радиуса. Можно задавать вариацию вида деревьев внутри группы. Для этого предназначены параметры "seed" и "randomize" на закладке "Rollout" , определяющие случайные вариации дерева. Задавая различные их значения и нажимая кнопку "compute" - "вычислить", можно быстро получать все новые и новые модификации. После создания леса, он воспринимается программой как единое целое, т.е. выделение отдельного дерева в группе невозможно. На закладке "Forest" также можно посмотреть общее число деревьев в созданной группе.


Дальний план леса, созданного на основе трех деревьев.


Тот же лес. Средний план.


Все тот же лес, теперь – крупным планом.

Под созданием анимации в SpeedTreeMAX понимается только анимация дерева под воздействием 3d studio max модификатора Wind Space Warp (ветер). Хотя плагин и обладает средствами предварительного просмотра разрабатываемой анимации, я бы рекомендовал делать это в SpeedTree CAD потому, что там окно предварительного просмотра показывает все гораздо быстрее и доходчивее. Затем можно перенести параметры анимации в max и выполнить окончательную доводку.

А теперь немного чисел. Сцену, состоящая из 500 тыс. полигонов и более, вряд ли можно назвать интерактивной, редактирование такой сцены затруднено из-за возникающих пауз между действиями пользователя и откликом системы. Количество полигонов, приходящихся на одну модель дерева SpeedTree, составляет около 2 тыс. для модели низкой степени детализации. Таким образом, можно предположить, что в сцене можно иметь до 250 деревьев, прежде чем компьютер начнет впадать в ступор. Однако, к счастью, в случае с SpeedTreeMax дело обстоит не совсем так. Плагин имеет возможность управлять степенью детализации отображения деревьев в видовом окне сцены. Выставив отображение по минимуму (вместо деревьев будут видны только торчащие палки, подразумевающие стволы) в сцену теоретически можно поместить сколько угодно деревьев без потери интерактивности.


А так выглядит тот же лес в видовом окне при минимальных установках отображения деталей леса в SpeedTreeMAX.

Если 2 тысячи полигонов на одну модель дерева для вашего проекта слишком много, можно воспользоваться еще одной возможностью SpeedTreeMax – SpeedPlane, прямоугольного полигона или двух, соединенных крест-на-крест, выполняющих роль billboarding (дословно переводится с английского языка как "рекламный щит", или "доска для объявлений"). Данная возможность позволяет вместо трехмерной модели дерева использовать нанесенное на SpeedPlane его растровое изображение с альфа-каналом контура, выполняющего при рендере функцию карты прозрачности. Преимущество использования SpeedPlane перед встроенными возможностями 3d studio max в том, что он может работать со SpeedShadows для правильного расчета теней – таким образом, отпадает необходимость в рендеринге с использованием трассировки лучей (Raytrace), что значительно экономит время.

Требования к компьютеру при работе с SpeedTreeMax в общем, невысоки, но зависят от количества деревьев в сцене и более критичны по отношению к объему и скорости памяти, чем к производительности процессора. При рендере стандартными средствами max сцены из приблизительно 110 деревьев, потребовалось около 1,5 Гб физической памяти, при этом процессор в течении большей части времени (около 10 минут на Pentium 4-1,4 Ггц) расчетов был задействован меньше, чем на половину своей мощности.

Несколько слов о качестве рендера. Если кратко – для анимации и архитектурных визуализаций (SpeedTree работает и с VIZ) оно приемлемо. Качество рендера неподвижных сцен могло бы быть и лучше. Я имею в виду, что лиственная крона выглядит излишне плотной, немного плоской и местами замыленной. Думаю, причина кроется как раз в той самой параллельности полигонов листьев плоскости камеры, о чем говорилось чуть выше (по этой же причине иногда рендер сцены показывает необычный артефакт в изображении – листья выстраиваются в некоторую упорядоченную структуру -концентрические дуги, смотрящуюся очень необычно на нормальном дереве). В принципе, можно пробовать с этим бороться, регулируя размер и количество листьев, а также, используя для листьев качественные текстуры высокого разрешения. И все же, удивительно, но факт – предварительный просмотр модели дерева в SpeedTree CAD порой показывает изображение куда более правильное, нежели изображение, просчитываемое относительно более навороченным рендером в max’е. Остается надеяться, что в последующих релизах ситуация будет каким-либо образом исправлена.

Вывод – SpeedTreeMAX обладает полным набором инструментов для создания композиции в среде 3d studio max. Работать с ним легко, просто и удобно. Проблем не возникнет, пока вы работаете с встроенным рендером max, в случае использования рендера стороннего производителя, придется повозиться. А иметь полноценные деревья в max при столь малых затратах усилий – дорогого стоит.

Стр.2 - SpeedTree CAD, выводы

SpeedTree CAD

Вторая часть программного пакета - SpeedTree CAD - предназначена для индивидуального редактирования и разработки деревьев. Собственно говоря, это не совсем редактор. Скорее, мы имеем дело с генератором. Вам предлагается структурированная группа параметров, после задания числовых значений которых программа производит расчет – генерирует дерево. Никаких полигонов или патчей, никакой ручной работы, если не считать за таковую ввод чисел с клавиатуры. При этом спектр создаваемых объектов довольно широк – это могут быть деревья, кустарники, трава, цветы или кактусы.

Итак, программа предлагает четыре основных группы параметров (и соответственно, четыре закладки в рабочем интерфейсе программы): "Trunk" - "Ствол", "Branches" - "Ветви", "Leaves" - "Листья" (а также, плоды или цветы) и "Global" - "Глобальные параметры".


Панель для определения параметров дерева

Для ствола мы можем задавать:

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


Редактор кривой параметров

Везде, где речь идет об изменении параметра вдоль длины ствола (толщины, гибкости, искривления и гравитации) подразумевается редактирование специальной кривой, определяющей динамику изменения параметра. Сам редактор кривой довольно прост, но его возможностей в большинстве случаев достаточно. Например, он легко позволяет создать профиль ствола бутылочного дерева, но со стволом пальмы придется очень повозиться. Вкратце его возможности – вставить или удалить точку, переместить точку. Все точки имеют "уши" , таская за которые можно менять кривизну в данной точке, по аналогии с кривыми Безье из Corel Draw или Adobe Illustrator. Серьезное ограничение – отсутствие угловых точек – поэтому невозможно создать резкий излом кривой – только плавный.

Возвращаясь к параметрам ствола - здесь же можно задавать общее количество его сегментов (до 100 максимум) и сегментов сечения ствола. Последнее может иметь только форму окружности. Чем больше количество сегментов у ствола, тем более явно видны результаты действия большинства параметров, точнее и разнообразнее моделинг. Если же ствол состоит только из одного сегмента, его даже искривить не удастся, т. е. при любом значении параметра искривления ствол все равно останется прямым. С другой стороны, увеличение количества сегментов приводит к "утяжелению" модели, особенно при разработке ветвей, и особенно ветвей второго и более высоких порядков. Именно здесь нужно учитывать, для какого плана сцены создается модель.

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

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

Для создания лиственной кроны используется хорошо известный всем механизм. А именно, в качестве геометрии листа используется прямоугольник, на который накладывается фотография листа или группы листьев с контурным альфа-каналом в качестве карты прозрачности.


Полигоны для нанесения текстур листьев

SpeedTreee CAD позволяет использовать несколько карт для листьев и, даже, предусматривает специальную возможность создания плодов и цветов с помощью того же механизма наложения карт. Использование нескольких карт позволяет разнообразить лиственную крону по форме и цвету. Программа предоставляет средства управления размером листа или цветка, расстоянием его расположения от ветви, и при необходимости – расчетом столкновения (collision detection) со стволом или ветвями.

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

Закладка глобальных параметров предназначена для определения высоты ствола, значения многих параметров программы задаются в процентах от этой величины. Здесь же включаются (или отключаются) случайные изменения модели дерева при расчетах. На начальных этапах разработки его рекомендуется для удобства отключать, а после завершения разработки модели его можно использовать для быстрого получения случайных вариаций созданного дерева (величина изменений модели зависит от заданных значений вариаций ее параметров). Кроме того, здесь представлена статистика модели – общее количество полигонов дерева и количество полигонов ветвей и листьев, нигде более не показываемая, в том числе, и в сцене 3d studio max.

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


Модель дерева в окне предварительного просмотра SpeedTree CAD

Как уже говорилось ранее, модель дерева в этом окне часто выглядит даже лучше, чем после финального рендера в max. Вид можно масштабировать, включить вращение дерева, источника света или посмотреть взаимодействие с ветром. Предусмотрены даже специальные "игровые" режимы скроллинга сцены. Все крутится достаточно шустро, без "тормозов", при условии, что не включено сглаживание (antialiasing) сцены. Отображение анимации в окне предварительного просмотра заслуживает особой похвалы – все изменения в настройках анимации отображаются немедленно, что называется "на лету". Движется ствол, каждый листок и ветка, при этом поддерживается отображение текстур и изменение освещения.

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

Данный обзор сделан по демонстрационной версии пакета. Поставляемое вместе с ней описание возможностей программы вполне можно назвать "спартанским". Всего лишь описание основных параметров, да пара простеньких примеров. А зря. Только заглянув на сайт разработчика, я например узнал, что SpeedTree вполне по силам создавать такие неочевидные вещи, как разветвление ствола или, например, траву. А в руководстве пользователя об этом ни намека. Возможно в коммерческой версии дела обстоят по-другому. Хотя судя по тому, что демо-версию можно превратить в полноценную введением кода авторизации – вряд ли. Так что руководство пользователя тоже не мешает дополнить.

Вообще, на мой взгляд, программа имеет очень неплохой потенциал стать редактором не только для деревьев среднего и дальнего планов, но и для разработки реалистичных высокодетализированных моделей. Почти все необходимое для этого у нее уже есть, добавить нужно не так уж и много. Прежде всего – работа с корневой системой. Сделать корни у ствола в текущей версии программы невозможно. Вернее, одно из двух - либо корни, либо ветви. Очень не помешает добавление стыков ветвей вообще и ветвей со стволом в особенности. Полное отсутствие стыков в данной версии редактора приводит к тому, что на отрендеренном изображении ближнего плана отчетливо видно, что ветви элементарно торчат из ствола, а не растут из него. Далее – неплохо бы добавить всякие наросты на стволе, дупла, сухие и обломанные сучья – все те мелочи которые и придают дереву законченный "жизнеподобный вид". Вообще не помешало бы предусмотреть возможность хотя бы минимальной "ручной" работы в редакторе. Ну и наконец, текстуры. Необходимо дополнить встроенные возможности SpeedTree CAD, а еще лучше предусмотреть передачу работы с текстурами в 3d studio max.

Подводя итог всему выше сказанному, можно утверждать, что все, что нужно для создания хорошего дерева с помощью SpeedTree CAD – это подробное изображение оригинала создаваемого дерева, текстуры для ствола и листьев и пара часов свободного времени. Считает программа довольно быстро, сам процесс немного напоминает игру и неутомителен, хотя, понимание влияния отдельных параметров и потребует некоторого времени на изучение. В общем, SpeedTree CAD – вполне "рабочая" программа, быстрая, простая и удобная, к тому же, не имеющая аналогов для работы с 3d studio max.

Содержание:

Стр.1 - Введение, SpeedTree Max
Стр.2 - SpeedTree CAD, выводы



Оригинал материала: https://3dnews.ru./169116