Как сделать дерево в unity3d
Деревья
Terrain с деревьями
Включение деревьев
Кнопка с деревом на панели инструментов автивирует рисование деревьями.
Изначально, у terrain’а не будет доступных деревьев, но если вы нажмёте на кнопку Edit Trees и в выпавшем меню выберите Add Tree, вы увидите окно, в котором можно выбрать ассет дерева из вашего проекта.
Окно Add Tree
If the selected tree object is created by the Tree Creator, the window will show Bend factor for adjusting the wind responsiveness. See the section on Making trees bend in the wind below.
Рисование деревьев
После выбора дерева, вы можете рисовать на ландшафте аналогично тому, как вы рисуете текстуры или карты высот. Вы можете удалять любые деревья зажав клавишу shift во время рисования и удалить только выбранный в данный момент тип деревьев зажав клавишу CTRL. При рисовании деревьев доступна знакомая вам опция Brush Size, но свойство Opacity заменено свойством Tree Density, которое управляет средним количеством рисуемых деревьев в заданной единице площади. Также существует возможность управлять свойством Color Variation (вариация цвета) и вариациями высоты и ширины деревьев. Вариативные опции помогают создать впечатления неоднородности, натуральности леса, вместо искусственных плантаций одинаковых деревьев.
There is a ranged slider for you to control the tree’s minimal height and maximal height. If you disable Random, you can specify a value for all tree’s height. By default a tree’s width is locked to height so that trees are always scaled uniformly. However you can disable Lock Width to Height option and specify the width separately.
There is also a control for Color Variation and Random Tree Rotation. The variation options help to create the impression of a random, natural-looking forest rather than an artificial plantation of identical trees.
Кнопка Mass Place Trees (массово разместить деревья) очень полезна для полного покрывания terrain’а деревьями без рисования по ландшафту. После массового размещения вы всё ещё можете использовать инструменты рисования для добавления или удаления деревьев, чтобы создать более плотные или редкие области.
SpeedTree/LOD Trees
From Unity 5, you can use SpeedTree Modeler from IDV, Inc. to create trees with advanced visual effects such as smooth LOD transition, fast billboarding and natural wind animation. Please refer to their site for detailed information. You can also freely import SpeedTree assets into your project folder from asset store packages or other third party sources.
See here for more information.
Создание деревьев
В Unity есть свой инструмент для создания деревьев (Tree creator), который вы можете использовать для создания новых ассетов деревьев, но вы также можете использовать и стандартные приложения для 3D моделирования для этой задачи. Меш дерева должен иметь менее 2000 треугольников (для повышения производительности) и центр вращения должен быть расположен прямо в основании дерева, там, где оно стыкуется с землёй. Меш всегда должен иметь ровно два материала, один для ствола и веток, другой для листвы.
После сохранения ассета дерева из пакета для 3D моделирования, вам потребуется нажать на кнопку Refresh (отображается в инспекторе, когда выбран инструмент рисования деревьев) для того, чтобы увидеть обновлённые деревья на вашем terrain’е.
Использование коллайдеров с деревьями
Вы можете добавить Capsule Collider к новому ассету дерева, создав его экземпляр в сцене, добавив компонент коллайдера (меню: Component > Physics > Capsule Collider ) и создав новый префаб для изменённого объекта дерева. Когда вы добавляете дерево в terrain для рисования, убедитесь, что вы выбрали префаб дерева с коллайдером, а не оригинальный объект. Вам также следует включить флажок Create Tree Colliders в инспекторе компонента Terrain Collider на вашем terrain’е, чтобы разрешить коллайдерам работать.
Making trees bend in the wind
The first thing you will need to do is create a wind zone. You can do this by selecting from the menu: Game Object > Create General > Wind Zone.
You may notice that your trees are moving about quite violently. To fix this, you can change your bend value, but it is probably easier to set the values on the “Wind zone” directly, keeping your tree bend value set to 1. To keep the trees from fluttering around too much, adjust the wind turbulence down to around 0.1 to 0.3 and everything will become much smoother. If you don’t want the trees blowing all the way to one side, set the Wind Main value down to the same value as your turbulence.
Создание вашего первого дерева
We’ll now walk you through the creation of your first tree with the Tree creation tool.
Добавление нового дерева
Добавление ветвей
Выберите дерево для просмотра инструмента Tree Creator в инспекторе. Этот интерфейс предоставляет все необходимые инструменты для придания формы и коррекции фигуры ваших деревьев. Вы увидите иерархию дерева (Tree Hierarchy) с двумя узлами: узел Tree Root (корень дерева) и один узел Branch Group (группа ветвей), который мы будем называть стволом дерева.
Adding branches to the tree trunk.
Теперь, после создания присоединённых к стволу ветвей, мы можем добавить маленькие веточки к созданным ветвям с помощью присоединения к ним других узлов Branch Group. Выберите вторичную Branch Group и снова нажмите на кнопку Add Branch Group. Настройте значения этой группы для создания дополнительных веток, присоединённых ко вторичным веткам.
Adding branches to the secondary branches.
Теперь структура веток дерева готова. Наша игра не происходит в зимнее время, так что нам стоит добавим немного листьев (Leaves) к различным веткам, верно?
Добавление листьев
Мы украсим наше дерево листьями с помощью добавления Leaf Groups (группы листьев), которые по сути работают также как и группы веток, которые мы уже использовали ранее. Выберите узел с вашей вторичной группой веток (Branch Group) и нажмите на кнопку Add Leaf Group. Если вы хотите пуститься во все тяжкие, вы также можете добавить другую группу листьев к самым тонким ветвям дерева.
Leaves added to the secondary and smallest branches
Теперь у нас есть листья, которые отрисовываются как непрозрачные плоскости. Это происходит для того, чтобы мы могли настроить значения листьев (размер, положение, вращение и т.д.) перед тем, как добавлять к ним материал. Изменяйте значения листьев (Leaf Group) до тех пор, пока вы не подберёте устраивающие вас настройки.
Добавление материалов
In order to make our tree realistic looking, we need to apply Materials for the branches and the leaves. Create a new Material in your project using Assets > Create > Material. Rename it to “My Tree Bark”, and choose Nature > Tree Creator Bark from the Shader drop-down. From here you can assign the Textures provided in the Tree Creator Package to the Base, Normalmap, and Gloss properties of the Bark Material. We recommend using the texture “BigTree_bark_diffuse” for the Base and Gloss properties, and “BigTree_bark_normal” for the Normalmap property.
Теперь мы таким же образом создадим материал для листьев. Создайте новый материал и поменяйте его шейдер на Nature > Tree Creator Leaves. Присвойте текстурным слотам текстуры листьев из пакета Tree Creator.
Material for the Leaves
Когда оба материала готовы, мы применим их к различным узлам групп (Group Nodes) дерева. Выберите ваше дерево и кликните по любому узлу ветви или листьев, затем откройте секцию Geometry в Branch Group Properties. Вы увидите слот для применения материала выбранному вами типу слота. Примените соответствующий созданный вами материал и посмотрите на результаты.
Setting the leaves material
Для завершения дерева, примените ваши материалы ко всем Branch и Leaf Group узлам в дереве. Теперь вы готовы разместить своё первое дерево в игре!
Tree with materials on leaves and branches.
Деревья (плагин SpeedTree) на Unity 3D
Учебные материалы для школы программирования. Часть 6
Предыдущие уроки можно найти здесь:
Небольшое отступление для тех, кто следит за публикациями, но не решается попробовать включить в свои уроки новые инструменты. Попробуйте сделать первый шаг с 3D. Программ по 3D моделированию очень много, среди них есть настолько простые, что методом «тыка» можно освоить их за пару вечеров. Посмотрите обязательно:
Но вернемся к теме занятия, и рассмотрим, как создать дерево с помощью плагина SpeedTree, включённого в дистрибутив Unity.
Порядок выполнения
Создадим новый проект, в нём создадим террейн.
Добавим на него объект 3D Object → Tree
Добавим дереву ветки, создав блок веток. Увеличим их количество примерно до 20 (интересующие параметры выделены синим). В каждом блоке изменяем параметр Frequency (цветом на скриншоте не выделен).
Изменим их расположение, поменяв кривые распределения, длины, и поменяем ползунок стремления ветвей к свету.
Далее, добавим к этим ветвям ещё несколько веток.
Не забудем про листву.
Для деревьев важно выставлять материалы с помощью шейдера Nature. Импортируем стандартный ассет Environment, он содержит готовые материалы. Материалы коры нужно назначить всем веткам. Если материал не подходит, Unity предложит использовать корректный материал.
Жмём Apply и «переконвертирования» материала. Будьте осторожны, Unity часто вылетает на этом этапе.
Итак, дерево готово! Его можно разместить на террейне благодаря Mass Place Trees.
При должном усердии, можно получить вот такой лес:
Основы Tree Creator’а
В верхней части инспектора компонента Tree находится редактор структуры дерева, в котором указывается простое расположение ветвей и листьев.
Редактор структуры дерева
Это понятие уровней отражается в редакторе дерева. Например, рассмотрим следующую структуру:-
Иконки соединены линиями для отображения уровней ветвления дерева. Иконка в самом низу (с изображением дерева) обозначает “корень” дерева. После выбора этой иконки, ниже, в панели инспектора, будут показаны настройки для всего дерева. Этот корень продлевают первый и второй уровни ветвления. Иконки отображают некоторую часть информации:-
Расположение групп ветвей может быть отредактировано с помощью элементов управления, расположенных в правой нижней части редактора:-
Двигаясь слева направо, первый инструмент добавляет к дереву группы листьев (Leaf Group). Листья располагаются на уровнях так же, как и ветки, но в отличие от веток, листья не могут подразделяться на большее количество уровней. Второй инструмент добавляет новую группу ветвей (Branch Group) на текущем уровне (т.е., он создаёт новый дочерний элемент для выбранной иконки группы веток). Третий инструмент дублирует выбранную группу, в то время как четвёртый удаляет выбранную группу из дерева. Можно иметь несколько групп на каждом уровне дерева, как в следующем примере:-
Ручное редактирование веток и листьев
Единственная ветвь дерева показана с некоторым количеством квадратов, наложенных на область просмотра. Квадраты являются контрольными точками вдоль всей ветви (т.е., центр линии ветви проходит через все квадраты, но также и плавно искривляется между ними). Вы можете кликнуть и потащить любой из квадратов для сдвига контрольных точек и изменения формы ветви.
Второй инструмент позволяет сгибать ветвь, вращая её в указанной контрольной точке. Третий инструмент позволяет мышкой от руки рисовать ветвь, начинающуюся из выбранной контрольной точки. Ветвление всё ещё будет контролироваться из панели структуры дерева, только формы ветвей могут быть нарисованы. Если в структуре выбрана группа листьев, тогда отобразится соответствующая панель инструментов с опциями для перемещения или вращения листьев вокруг их родительской ветки.
Учтите, что некоторые свойства в инспекторе Tree Creator’а относятся к процедурной генерации деревьев (т.е., компьютер сам генерирует форму случайным образом) и они будет отключены после того, как вы вручную попробуете отредактировать дерево. Существует кнопка, которая восстановит дерево в статус генерируемого процедурно, но это также отменит все ваши внесённые вручную изменения.
Инструменты ландшафтного движка Unity
Благодаря вышеупомянутым характеристикам Unity становится все более популярным среди компаний разработчиков программного обеспечения уровня AAA и начинающих программистов.
Unity поддерживает несколько технологий и компонентов. Одним из ключевых компонентов системы является ландшафтный движок. Система ландшафтов Unity позволяет создавать обширные ландшафты для ваших игр или приложений. Вы можете использовать набор инструментов для создания ландшафтов легко и быстро.
В этом руководстве основное внимание будет уделено объяснению того, как работают механизмы ландшафтного движка, и как их использовать для создания обширной и насыщенной ландшафтной окружающей среды.
Необходимые условия
Во-первых, убедитесь, что у вас установлена последняя версия Unity. В этом уроке мы используем версию 5.6. Убедитесь, что вы используете последнюю версию Unity; В противном случае вы можете найти небольшие различия во время прохождения урока и использования физических соединений.
Для этого урока вы не будете использовать стартовый файл. Цель состоит в создании нового проекта и выполнении всего урока.
Инструменты ландшафта
Теперь, чтобы добавить игровой объект terrain, перейдите в меню GameObject и выберите 3D Object > Terrain. Это добавит плоскую поверхность (называемую Terrain) в вашу сцену. Эта поверхность является сеткой, которую мы собираемся сделать для создания на этом уровне ландшафта.
Если вы проверите свой каталог Assets (в нижней части интерфейса Unity), вы увидите, что был создан файл New Terrain.
Выберите Terrain и посмотрите вкладку Inspector. Вы увидите, что terrain имеет три компонента: Transform, Terrain script и компонент Terrain Collider.
Компонент terrain предоставляет вам инструменты, необходимые для редактирования вашего ландшафта. Все инструменты на панели инструментов, за исключением инструмента размещения деревьев и панели настроек, предоставляют набор «кистей» и параметры для настройки размера и прозрачности кисти, так же как инструменты рисования из обычного редактора изображений. Это позволяет создавать ландшафт подобно инструменту рисования.
Если вы выберете любую кисть под компонентом Terrain и наведите указатель мыши на поверхность, вы увидите синюю область, проецируемую на этой поверхности. Это позволяет узнать область ландшафта, на которую повлияет ваша кисть.
Как вы, возможно, уже поняли, объект Terrain довольно большой. Для навигации по Scene (сцене) вы можете использовать мышь и клавиатуру. Внутри вкладки Scene нажмите и удерживайте правую кнопку мыши (курсор должен измениться на глаз).
Удерживая кнопку мыши:
Прежде чем приступать к изучению инструментов ландшафта, давайте посмотрим на свойства Terrain. Последняя кнопка на компоненте Terrain (внутри вкладки Inspector) покажет вам базовые параметры объекта terrain.
Свойства делятся на разделы:
Внутри первой секции Base Terrain вы найдете несколько свойств и параметров.
Опция Draw включает или выключает рендеринг ландшафта. Pixel Error представляет значение точности преобразования между картами terrain’а (например, текстур, heightmaps и самого сгенерированного terrain’а). Более высокие значения представляют меньшую точность, а меньшие значения будут приводить к излишней обработке. Вы обязаны сбалансировать это значение, чтобы создать хорошее, насыщенное окружение.
Затем у нас есть Material. Здесь вы устанавливаете материал, который будет использоваться для рендеринга ландшафта. Это повлияет на то, как интерпретируются цветовые каналы текстуры ландшафта. Вы можете выбрать:
Вы можете также установить Reflection Probes (оптические датчики) для некоторых материалов, но они будут использоваться только при использовании встроенного стандартного материала или пользовательского материала,который поддерживает рендеринг с отражением. Возможные варианты reflection probes:
Идем дальше, вы увидите параметры Wind Settings for Grass
Speed определяет скорость обдувающего траву ветра. Size представляет собой размер ряби на травянистых участках. Bending позволяет определить степень, наклона объектов травы под действием ветра. Grass Tint позволяет выбрать общий оттенок цвета, применяемый к объектам травы.
Инструменты для изменения высоты
Прежде чем перейти к инструментам высоты, помните, что необходимо сначала задать параметры разрешения. В противном случае, если вы попытаетесь изменить их позже, то все эти поверхности будут утеряны.
Первыми тремя инструментами на панели инструментов Terrain Inspector являются инструменты изменения высоты. Эти инструменты используются для рисования изменений высоты на поверхности.
Они предоставляют набор «кистей» с настройками Brush Size и Opacity; Эти инструменты очень похожи на инструменты рисования из любого редактора изображений. Они позволяют рисовать детали ландшафта, как если бы вы рисовали изображение.
Если вы переместите курсор на вкладку Scene, вы увидите синюю область, проецируемую на поверхности. Это позволяет узнать область ландшафта, на которую повлияет ваша кисть.
Первым инструментом является Raise / Lower Height. При рисовании с помощью этого инструмента высота ландшафта будет увеличиваться пока вы водите мышкой с зажатой левой кнопкой по terrain’у. Если удерживать мышь в одной конкретной области, высота будет суммироваться. Такой эффект визуально изображен на следующем рисунке.
Чтобы опустить ландшафт, просто удерживайте клавишу Shift во время рисования инструментом, и это уменьшит высоту вашего ландшафта.
Он работает аналогично инструменту Raise/Lower, но имеет дополнительное свойство для установки целевой высоты Height. Вы можете выбрать желаемую высоту Height, изменив значение параметра Height. Кнопка Flatten рядом с свойством height, которая просто устанавливает высоту у всего terrain’а в заданное значение Height.
Пришло время потратить некоторое время и создать свой собственный ландшафт местности. Попытайтесь использовать вышеупомянутые три инструмента, чтобы создать красивый горный ландшафт.
Инструмент для создания текстур
Ландшафт создан теперь пора текстурировать его.
Прежде чем двигаться дальше, вам нужно импортировать aссеты окружающей среды, доступные в Unity 5. Для этого выберите Assets > Import Package и выберите Environment. Нажмите Import, чтобы импортировать все относящийся к окружающей среде ассеты.
Unity позволяет рисовать ландшафты используя текстуры. Вы можете нарисовать свой ландшафт различными текстурами в разных областях. Например, вы можете иметь текстуру для скалы, другую для песка еще одну для травы. Текстуры могут применяться с различной прозрачностью, что означает, что вы можете делать плавные переходы между двумя текстурами. Для достижения наилучших результатов следует нарисовать ландшафт с бесшовными текстурами.
Как вы могли заметить на вкладке Inspector, инструмент Paint Texture имеет несколько кистей и позволяет вам изменять Brush Size, Opacity и Target Strength.
В первый раз, когда вы используете инструмент для рисования Texture Tool, на нем не будет текстур. Первое, что вам нужно сделать, это добавить новую текстуру в палитру. Для этого нажмите кнопку Edit Textures и выберите Add Texture. Появится новое окно.
Как можно видеть, в этом окне можно выбрать Select нужную текстуру и ее обычную карту, если такова имеется. Нажмите на квадрат под текстурой и выберите текстуру. Появится окно, позволяющее выбрать текстуру. Выберите текстуру SandAlbedo и нажмите Add.
Теперь ваш ландшафт должен иметь вид песка. Обратите внимание, что вы всегда можете изменить ландшафт в опциях редактирования текстуры или удалить его.
Первая созданная вами текстура всегда должна быть базовой текстурой для ландшафта. Полный список текстур, используемых в этом примере:
Все они являются частью импортированных ассетов и могут быть найдены так же, как и текстура SandAbedo. Продолжайте и импортируйте их все.
Когда у вас есть все импортированные текстуры, пришло время текстурировать ваш ландшафт, как вы хотите. Выберите текстуру и нарисуйте нужную среду. Пример текстурированной карты.
Когда вы удовлетворены результатом, перейдите к следующему разделу.
Инструмент для создания деревьев
Теперь, когда вы нарисовали свой ландшафт, пришло время добавить к нему несколько деревьев. Unity 3D позволяет размещать деревья на вашем ландшафте так же, как вы рисовали текстуры. Используя настройки спрайтов для удаленных деревьев, Unity поддерживает хорошую производительность для рендеринга, так что вы можете иметь плотно засаженные леса с тысячами деревьев.
Чтобы начать рисовать деревья, выберите Terrain на вкладке Hierarchy и на вкладке Inspector выберите пятую кнопку.
Аналогично текстурам, необходимо также добавить деревья. Щелкните Edit Trees > Add Tree.
Unity предложит вам префаб дерева, которое вы хотите использовать. Нажмите на маленький круг, и появится другое окно. На этот раз оно покажет вам все готовые префабы, которые у вас есть в вашем проекте.
Выберите префаб дерева Broadleaf_desktop и нажмите Add. Это закроет окно prefab и добавит выбранное дерево в проект.
Теперь вы можете выбрать пальму, чтобы нарисовать ее на своем ландшафте.
В разделе Settings вы найдете несколько параметров, которые вы можете настроить, когда размещаете деревья в своей сцене. Brush Size определяет область, где вы будете рисовать, в то время как Tree Density определяет количество деревьев, которые вы будете иметь в нарисованной площади. Высокие значения будут означать больше деревьев. Tree Height позволит определить, как изменяется высота. Можно задать значение в произвольном порядке и использовать интервал значений, или задать определенное значения. Вы можете отключить параметр Lock Width to Height, чтобы сделать их одинаковыми.
В разделе Lighting вы можете установить, как генерируются световые карты для ваших деревьев.
Чтобы нарисовать деревья на поверхности, переместите указатель мыши на сцену. Синяя область представляет собой кисть. Если выбран тип дерева, нажмите левую кнопку мыши на поверхности и начните создавать деревья.
Чтобы удалить деревья из определенной области, нажмите Shift и используйте левую кнопку мыши. Это очистит все деревья в области кисти. Если вы просто хотите стереть определенный тип дерева, удерживайте Control вместо Shift. Это очистит только выбранный тип дерева.
Вы всегда можете изменить или удалить тип дерева, выбирая его и нажав кнопку Edit Trees. Чтобы изменить дерево, нажмите кнопку Edit Tree и, чтобы удалить его, нажмите кнопку Remove Tree.
Наконец, вы заметите, что внутри компонента Terrain Collider у вас есть поле с именем Enable Tree Colliders. При выборе этого параметра можно включить коллизии между другими игровыми объектами и деревьями.
Если вы не хотите вручную рисовать деревья, вы можете использовать кнопку Mass Place Trees. Если вы нажмете ее, появится новое окно. Затем Unity попросит вас создать несколько деревьев. Установите Number of Trees и нажмите Place. Затем Unity рандомно размещает деревья на поверхности.
Вы можете создать что-то вроде этого изображения (или что-то совершенно другое).
Когда вы будете готовы, можете переходить к следующему шагу.
Инструмент для создания других элементов
Unity позволяет создавать траву и другие небольшие объекты, такие как камни, которые покрывают поверхность. Трава рендерится с использованием двумерных изображений, а другие объекты обычно являются стандартными мешами.
Чтобы добавить детали в ландшафт, выберите свой ландшафтный объект из иерархии. На вкладке Inspector нажмите на шестую кнопку, ту, которая с цветами.
Как можно видеть, у вас теперь есть аналогичный интерфейс, как и у Height Tools. Здесь также имеется набор кистей, которые можно выбрать, чтобы нарисовать список деталей.
Поскольку вы не выбрали какие-либо детали объекта, добавим их, нажав Edit Details > Add Grass Texture.
Откроется окно, в котором можно задать несколько свойств для травы. Detail Texture позволяет вам определить текстуру, которая будет использоваться для травы. Вы также можете установить несколько свойств, таких как Max Width, Min Width, Max Height, Min Height, Noise Spread, Healthy Color, Dry Color и Billboard. Все эти свойства определят, как будет выглядеть ваша трава.
Для этого урока вы можете оставить параметры по умолчанию или изменить их по своему желанию.
Нажмите на круг перед полем Detail Texture. Это откроет новое окно. Найдите GrassFrond01AlbedoAlpha, выберите его и нажмите Add.
Как и для деревьев, вы можете использовать несколько кистей для рисования травы. Вы можете установить различные размеры Brush Sizes, изменить Opacity и Target Strength.
Настало время быть креативным, и покрасить ландшафт травой.
Если вы хотите добавить меши, чтобы нарисовать детали на вашем ландшафте, например камни, вам нужно повторить тот же процесс, что вы делали с импортом травы. Однако на этот раз при нажатии кнопки Edit Details выберите Add Detail Mesh. Откроется окно, где можно задать несколько параметров для мешей деталей, очень похожее на то, которое использовалась для импорта травы.
К сожалению, ассеты окружающей среды не включают в себя префаб камень, поэтому вы не сможете сразу рисовать камни. Тем не менее, вы можете искать некоторые камни в Unity Asset Store, так как это отличное место для поиска бесплатных ассетов.
Заключение
На этом заканчивается руководство по инструментам ландшафтного движка Unity. Вы узнали о нескольких инструментах и конфигурациях ландшафта. Благодаря этим знаниям вы можете создавать, изменять и улучшать текущие или новые ландшафты для своей новой передовой игры или приложения.
Unity имеет активную экономику. Существует много других продуктов, помогающих построить проект. Характер платформы также делает ее великолепным вариантом, благодаря которому вы можете улучшить свои навыки. В любом случае, вы можете видеть все, что у нас есть на Envato Marketplace.
Если у вас есть вопросы или комментарии, как всегда, не стесняйтесь писать в разделе для комментариев.