Небольшое введение
Для начала я расскажу о долгом пути к SpeedTree, а потом поделюсь процессом создания моделей деревьев в этой программе.
Важность растительности в играх я раньше постоянно упускал. Реалистичные деревья было сложно и долго делать, а их применение в играх, как я думал раньше — декоративное заполнение сцен, на уровне пропсов.
Для первых "игровых" сцен, еще до работы в геймдеве, я использовал CD библиотеки с текстурами и готовыми к ним масками. Текстура дерева применялась к прямоугольной плоскости, а копия плоскости проворачивалась на угол в 90 градусов. Так получалось дерево. Светотень играла по граням и выглядело такое дерево примитивно. С работой, показанной ниже, я пришел на Action Forms в 2003-м году, и первое замечание было о деревьях "крестом". На работу меня тогда не взяли, но не по этой причине )
![]() |
| По мотивам Rally Championship 2000 (2003) |
Спустя несколько лет, уже работая над играми в компании, мой подход к созданию моделей деревьев практически не изменился. Для игры Minesweeper Flags я сделал деревья "крестом" и только для некоторых деревьев попробовал промоделить ствол и крону геометрией. Игра создавалась на Nebula engine, использовалась реалтайм графика и были ограничения по бюджету полигонов.
![]() |
| Minesweeper Flags (XBLA, Microsoft, 2010) |
![]() |
| Artifacts of the Past: Ancient Mysteries (Alawar, 2011) |
В последнем проекте с реалтайм графикой мне все же пришлось смириться с тем фактом, что изучение SpeedTree неизбежно... Неизбежно ведет к оптимизации работы, экономии времени и огромной гибкости при создании самых разнообразных деревьев.
Немного важной информации
Прежде чем углубляться в изучение SpeedTree, хочу отметить несколько важных пунктов:
- Подписка на SpeedTree для Unity стоит всего $19/мес. Не пользуйтесь варезом. Покупая подписку вы получаете последнюю версию программы, не тратите время на поиск пираток, спокойны за чистоту своего компьютера, поддерживаете разработчика своими небольшими вкладами )
- SpeedTree для Unity не имеет всего функционала полной версии, доступного для версий из раздела Visual effects, а так же Games Full. Например, в SpeedTree для Unity не получится насладиться скрещиванием фотограмметрии с процедурными операциями.
- Деревья из SpeedTree для Unity нельзя отредактировать в других программах. Допускаю, что существуют какие-либо конверторы, с которыми пока не приходилось сталкиваться.
Поехали
- Быстрый старт.
- Собираем базу текстур, создаем материалы.
- Создаем кластера, якоря.
- Улучшаем, украшаем, обогащаем, добавляем сезонность.
- Добавляем силы, объекты коллизий.
- Оптимизируем при помощи LOD`ов.
- Экспортируем в Unity.
1. Быстрый старт
Создадим первое дерево не затратив на это много времени.
Запускаем программу, логинимся, выбираем пустой шаблон и сразу сохраняем рабочий файл.
Слева видим панель свойств, в центре окно просмотра с кнопками и свитками просмотра и редактирования, а так же вкладки документов, справа закладки материалов, мешей и т.д., под ними панель генерации с окном нод.
Запускаем программу, логинимся, выбираем пустой шаблон и сразу сохраняем рабочий файл.
Слева видим панель свойств, в центре окно просмотра с кнопками и свитками просмотра и редактирования, а так же вкладки документов, справа закладки материалов, мешей и т.д., под ними панель генерации с окном нод.
Справа создаем, слева редактируем, в центре видим отображение наших действий. Все не совсем так однозначно, но в начале поможет понять логику интерфейса. Панель свойств меняется в зависимости от выбранной ноды, а так же при клике на пустом месте в окне просмотра.
На панели генерации жмем +Add и выбираем ствол (Trunk). В окне просмотра появился ствол с линейкой, размерами в футах (0,3048 метра) и очень удобным человечком для определения масштабов "на глаз". Первым делом хочется изменить высоту и толщину ствола, и поначалу это непросто. Надо запомнить, что все действия, отвечающие за высоту/длину/кривизну, т.е. за продольные изменения ствола, находятся в закладке Spine (Хребет), а поперечные параметры можно изменить в закладке Skin (Оболочка). Настраиваем высоту и толщину в параметрах Spine/Length и Skin/Radius.
При активной ноде Trunk снова жмем +Add и выбираем основные ветки (Big Branches).
Теперь перейдем в закладку Gen на панели параметров. В свободное время самостоятельно изучим параметры всех десяти режимов (Выпадающий список Mode), а пока оставим режим Interval. В разделе Interval настроим частоту пучков веток (Frequency), число веток в пучке (Count) и подвигаем ползунок распространения веток по стволу (Spread) В разделе Shared определим верхние и нижние границы распространения веток. В этом же разделе есть параметр Size scalar — изменение длины веток без генерации поперечных сечений; параметр Sink (погружение), позволяющий управлять локальным смещением веток; график подрезки веток (Pruning); ползунок случайного удаления веток (Knockout) и выпадающий список Extend parent (Продлить родительский объект), о котором будет написано позже.
После настройки генерируемых параметров рассмотрим редактирование веток в режимах Generators и Nodes при помощи манипуляторов.
Эти режимы переключаются на панели Edit, которая находится над окном просмотра.
При активной кнопке Generators нажимаем на ветку. Появились манипуляторы, при помощи которых мы можем изменять радиус, длину, начальный угол а так же добавлять шум и гравитацию всем веткам одновременно.
При нажатии на кнопку Nodes можно манипулировать отдельной веткой, при этом добавится возможность изменять ее позицию и поворот. Важно знать, что в этом режиме любые сгенерированные элементы можно удалять.
На ранее заданной высоте геометрия ствола обрывается, оставляя открытый меш. Его можно:
1. Накрыть (Cap). В этом случае выделяем ноду Trunk, жмем +Add, выбираем Cap.
2. Продлить. В этом случае выделяем ноду Big Branches и жмем на выпадающий список на панели свойств: Gen/Shared/Extend parent и выбираем Any.
Теперь добавим +Add/Little Branches и продлим Big Branches так, как мы продлили ствол. На Little Branches уже можно добавить листья, либо добавить маленькие веточки (Twigs) и назначить листья на две новые ноды сразу, но сначала подготовим пару текстур: кору и лист.
Регистрируемся на сайте textures.com или другом подобном сайте и скачиваем нужные текстуры. Для первого дерева не важно какие текстуры подобраны. Я скачал лист клена и подходящую кору. Текстура коры должна быть бесшовной (seamless), а для листа нужно сделать отдельный файл с альфа-каналом.
На панели справа выбираем закладку Material и жмем +/- затем Add new, переименовываем материал на Bark, и, не выходя из меню создаем еще один материал и называем его Leaf. Теперь в выпадающем списке у нас есть два материала. Выбираем материал Bark, ниже жмем на квадрат, подписанный как Color и выбираем текстуру коры. Возле выпадающего списка жмем на кнопку с пиктограммой руки и тянем на ствол дерева. В этом случае текстура назначится на всю геометрию иерархии, от родительского до дочерних объектов.
Теперь подобным образом подготовим материал листьев. Текстуру с альфа-каналом выберем нажав на квадрат Opacity. В настройках отметим флажком Two-sided.
Создадим листья выбрав ноду Little Branches +Add/Leaf Mesh. На появившуюся на ветках геометрию перетянем материал Leaf. Скопируем (Ctrl+D) ноду Leaf Mesh и перетянем на ноду Twigs. Теперь листья есть и на Little Branches и на Twigs. Выбрав с Ctrl обе ноды Leaf Mesh мы сможем менять их параметры одновременно.
На панели свойств во вкладке Gen выберем режим Classic, стиль Absolute и частоту (Frequency) на свой вкус.
Поздравляю, вы создали свое первое дерево в SpeedTree.
На панели генерации жмем +Add и выбираем ствол (Trunk). В окне просмотра появился ствол с линейкой, размерами в футах (0,3048 метра) и очень удобным человечком для определения масштабов "на глаз". Первым делом хочется изменить высоту и толщину ствола, и поначалу это непросто. Надо запомнить, что все действия, отвечающие за высоту/длину/кривизну, т.е. за продольные изменения ствола, находятся в закладке Spine (Хребет), а поперечные параметры можно изменить в закладке Skin (Оболочка). Настраиваем высоту и толщину в параметрах Spine/Length и Skin/Radius.
При активной ноде Trunk снова жмем +Add и выбираем основные ветки (Big Branches).
Теперь перейдем в закладку Gen на панели параметров. В свободное время самостоятельно изучим параметры всех десяти режимов (Выпадающий список Mode), а пока оставим режим Interval. В разделе Interval настроим частоту пучков веток (Frequency), число веток в пучке (Count) и подвигаем ползунок распространения веток по стволу (Spread) В разделе Shared определим верхние и нижние границы распространения веток. В этом же разделе есть параметр Size scalar — изменение длины веток без генерации поперечных сечений; параметр Sink (погружение), позволяющий управлять локальным смещением веток; график подрезки веток (Pruning); ползунок случайного удаления веток (Knockout) и выпадающий список Extend parent (Продлить родительский объект), о котором будет написано позже.
После настройки генерируемых параметров рассмотрим редактирование веток в режимах Generators и Nodes при помощи манипуляторов.
Эти режимы переключаются на панели Edit, которая находится над окном просмотра.
При активной кнопке Generators нажимаем на ветку. Появились манипуляторы, при помощи которых мы можем изменять радиус, длину, начальный угол а так же добавлять шум и гравитацию всем веткам одновременно.
При нажатии на кнопку Nodes можно манипулировать отдельной веткой, при этом добавится возможность изменять ее позицию и поворот. Важно знать, что в этом режиме любые сгенерированные элементы можно удалять.
1. Накрыть (Cap). В этом случае выделяем ноду Trunk, жмем +Add, выбираем Cap.
2. Продлить. В этом случае выделяем ноду Big Branches и жмем на выпадающий список на панели свойств: Gen/Shared/Extend parent и выбираем Any.
Регистрируемся на сайте textures.com или другом подобном сайте и скачиваем нужные текстуры. Для первого дерева не важно какие текстуры подобраны. Я скачал лист клена и подходящую кору. Текстура коры должна быть бесшовной (seamless), а для листа нужно сделать отдельный файл с альфа-каналом.
На панели справа выбираем закладку Material и жмем +/- затем Add new, переименовываем материал на Bark, и, не выходя из меню создаем еще один материал и называем его Leaf. Теперь в выпадающем списке у нас есть два материала. Выбираем материал Bark, ниже жмем на квадрат, подписанный как Color и выбираем текстуру коры. Возле выпадающего списка жмем на кнопку с пиктограммой руки и тянем на ствол дерева. В этом случае текстура назначится на всю геометрию иерархии, от родительского до дочерних объектов.
Теперь подобным образом подготовим материал листьев. Текстуру с альфа-каналом выберем нажав на квадрат Opacity. В настройках отметим флажком Two-sided.
Создадим листья выбрав ноду Little Branches +Add/Leaf Mesh. На появившуюся на ветках геометрию перетянем материал Leaf. Скопируем (Ctrl+D) ноду Leaf Mesh и перетянем на ноду Twigs. Теперь листья есть и на Little Branches и на Twigs. Выбрав с Ctrl обе ноды Leaf Mesh мы сможем менять их параметры одновременно.
На панели свойств во вкладке Gen выберем режим Classic, стиль Absolute и частоту (Frequency) на свой вкус.
Поздравляю, вы создали свое первое дерево в SpeedTree.
А теперь посмотрите на темный прямоугольник в верхнем левом углу. Сейчас там отображаются ужасающие цифры. Вспомним о деревьях "крестом", вся геометрия которых состояла из 8 треугольников (tris)
Примитивное, но не оптимизированное дерево мы делать научились, дальше будем учиться упрощать, улучшать и украшать.
Примитивное, но не оптимизированное дерево мы делать научились, дальше будем учиться упрощать, улучшать и украшать.









Комментариев нет:
Отправить комментарий