Текстуры
Вы можете добавлять текстуры на поверхность terrain’а для создания окраски и мелких деталей. Так как terrain’ы довольно большие объекты, к ним обычно применяют текстуры, которые можно бесшовно стыковать, чтобы замостить ими поверхность (повтор обычно не заметен с точи зрения персонажа, который находится близко к земле). Одна текстура будет служить как “фоновая” картинка по всему ландшафту, но вы также можете рисовать области, используя другие текстуры, чтобы симулировать различные покрытия, такие как трава, пустыня и снег. Нарисованные текстуры могут быть применены с разной прозрачностью, так, чтобы у вас получился плавный переход между травянистой местностью и песчаным пляжем, например.
Включение текстур
Кнопка с кистью на панели инструментов включает рисование текстур.
Изначально у terrain’а не будет текстур, назначенных для рисования. Если вы кликнете кнопку Edit Textures и из выпавшего меню выберите Add Texture, вы увидите окно, в котором вы можете указать текстуру и её свойства.
Depending on the material type you set in Terrain Settings, the color channels of the main texture map may have different uses. These are listed below in Terrain Texture Settings.
Click on Select to see your texture assets in a separate Select Texture window (not shown). Click on the texture you want and it displays in the Add Terrain Texture window. (See Add Terrain Texture window, before and after, in Fig 1 below.)
Нанесение текстур на ландшафт
Depending on the material type you set in Terrain Settings, the color channels of the main texture map may have different uses. The different Add Terrain Texture windows are listed here.
Standard [image above in Fig 1]: RGB channels are the albedo color of the terrain surface, while alpha channel controls the smoothness. There is also a ‘Metallic’ slider which controls the overall look of the surface.
Diffuse: RGB channels are the diffuse color. Alpha channel is not used.
Specular: RGB channels are the diffuse color. Alpha channel is the gloss map.
Custom: How the splat map is used depends on your custom shader, but usually you want the RGB channels to be the base color.
Besides the main texture map, you can also specify a normal texture for all of the 3 built-in material types. The texture type of the normal texture used here must be ‘Normal Map’ (you can change the texture type of a texture asset in its import settings). Shader code that handles normal map will be turned on only when at least one normal texture is set for the terrain, so you don’t need to pay the performance cost of normal map if you don’t use them.
Свойство Size (прямо под селекторами текстур) позволяет вам установить ширину и высоту на которую будет растягиваться изображение по поверхности terrain’а. Свойство Offset определяет, как далеко от точки вращения terrain’а будет начинаться тайлинг; вы можете установить его в 0, чтобы начать тайлинг прямо от угла. После того как вы установили текстуру и нужные вам свойства, нажмите на кнопку Add, чтобы сделать текстуру доступной terrain’у.
To make changes to an added terrain texture, select its thumbnail, click the ‘Edit Textures’ button and select ‘Edit Texture…’ from the menu. Or, you can simply double click on its thumbnail. To remove a terrain texture, select its thumbnail, click the ‘Edit Textures’ button and select ‘Remove Texture’ from the menu.
Рисование текстурами
Первая текстура, которую вы добавите, будет использоваться в качестве “фона” для покрытия terrain’а. Однако, вы можете добавить сколько угодно текстур; последующие текстуры будут доступны для рисования с помощью привычных кистей. Под текстурами в инспекторе terrain’а вы увидите не только обычные опции Brush Size и Opacity, но и дополнительную опцию Target Strength. Она устанавливает максимальную степень непрозрачности, которую достигнет кисть, даже если повторно пройдётся по одной и той же точке. Это может быть полезно при добавлении едва заметных островков разнообразия цветов на одном типе terrain’а для разбавления монотонности большой, плоской области с такой же затайленой текстурой, повторяющейся снова и снова.
Creating and Using Materials
To create a new Material, use Assets->Create->Material from the main menu or the Project View context menu.
By default, new materials are assigned the Standard Shader, with all map properties empty, like this:
Используйте пункт главного меню Assets->Create->Material или контекстное меню окна Project (Project View) для создания нового материала. После создания, вы можете применить его к объекту и настроить все его свойства в инспекторе (Inspector). Для применения материала к объекту, просто перетащите его из окна Project (Project View) на любой объект в сцене (Scene) или иерархии сцены (Hierarchy).
Установка свойств материала
Вы можете выбрать какой именно шейдер будет использоваться в конкретном материале. Для этого просто раскройте выпадающее меню Shader в инспекторе и выберите подходящий вам шейдер. Выбранный вами шейдер будет задавать доступные для изменения свойства. Свойствами могут выглядеть как цвета, слайдеры, текстуры, числа или векторы. Если вы применили материал к активному объекту в сцене, вы увидите, как в реальном времени будут применяться изменяемые вами свойства.
Существует два способа присваивания текстуры (Texture) свойству.
- С помощью перетаскивания текстуры из окна Project на квадратную область свойства Texture
- С помощью нажатия кнопки Select и выбора текстуры из появившегося выпадающего списка
В дополнение к основным шейдерам, применяемым к игровым объектам, существует ряд других категорий для особых целей:-
- FX: водные и световые эффекты.
- GUI: отображение графического интерфейса пользователя (GUI — это аббревиатура для Graphic User Interface, что в переводе означает “графический интерфейс пользователя”).
- Mobile: Simplified high-performance shader for mobile devices.
- Nature: деревья и земная поверхность.
- Particles: эффекты системы частиц.
- Skybox: For rendering background environments behind all geometry
- Sprites: For use with the 2D sprite system
- Unlit: For rendering that entirely bypasses all light & shadowing
- Legacy: The large collection of older shaders which were superseded by the Standard Shader
Технические детали шейдера
A Shader is a script which contains mathematical calculations and algorithms for how the pixels on the surface of a model should look. The standard shader performs complex and realistic lighting calculations. Other shaders may use simpler or different calculations to show different results. Within any given Shader are a number of properties which can be given values by a Material using that shader. These properties can be numbers, colours definitions or textures, which appear in the inspector when viewing a Material. Materials are then used by Renderer components attached to Game Objects, to render each Game Object’s mesh.
It is possible and often desirable to have several different Materials which may reference the same textures. These materials may also use the same or different shaders, depending on the requirements.
Below is an example of a possible set-up combination using three materials, two shaders and one texture.
In the diagram we have a red car and a blue car. Both models use a separate material for the bodywork, “Red car material” and “Blue car material” respectively.
Both these bodywork materials use the same custom shader, “Carbody Shader”. A custom shader may be used because the shader adds extra features specifically for the cars, such as metallic sparkly rendering, or perhaps has a custom damage masking feature.
Each car body material has a reference to the “Car Texture”, which is a texture map containing all the details of the bodywork, without a specific paint colour.
The Carbody shader also accepts a tint colour, which is set to a different colour for the red and blue cars, giving each car a different look while using a single texture for both of them.
The car wheel models use a separate material again, but this time both cars share the same material for their wheels, as the wheels do not differ on each car. The wheel material uses the Standard Shader, and has a reference again to the Car Texture.
Notice how the car texture contains details for the bodywork and wheels — this is a texture atlas, meaning different parts of the texture image are explicitly mapped to different parts of the model.
Even though the bodywork materials are using a texture that also contains the wheel image, the wheel does not appear on the body because that part of the texture is not mapped to the bodywork geometry.
Similarly, the wheel material is using the same texture, which has bodywork detail in it. The bodywork detail does not appear on the wheel, because only the portion of the texture showing the wheel detail is mapped to the wheel geometry.
This mapping is done by the 3D artist in an external 3d application, and is called “UV mapping”.
Если быть точнее, шейдер определяет:
- The method to render an object. This includes code and mathematical calculations that may include the angles of light sources, the viewing angle, and any other relevant calculations. Shaders can also specify different methods depending on the graphics hardware of the end user.
- The parameters that can be customised in the material inspector, such as texture maps, colours and numeric values.
- Какие текстуры использовать для отрисовки.
- The specific values for the shader’s parameters — such as which texture maps, the colour and numeric values to use.
Написанием шейдеров должны заниматься программисты 3D графики. Шейдеры создаются при помощи довольно простого языка ShaderLab. Однако, заставить шейдер правильно работать на множестве различных видеокарт — непростая задача и она требует хороших всесторонних знаний о том, как работают графические адаптеры.
A number of shaders are built into Unity directly, and some more come in the Standard Assets Library.
Смена материала объекта в Unity
При этом материал объекта не изменяется, хотя условия выполняются. Пробовал отключать Animator и NavMeshAgent перед сменой материала ( в else), не помогло. В чём проблема? (Ниже представлен массив материалов и стандартный материал объекта)
Отслеживать
ZOOM SMASH
задан 30 окт 2017 в 18:50
ZOOM SMASH ZOOM SMASH
1,402 3 3 золотых знака 17 17 серебряных знаков 37 37 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Необходимо обращаться к свойству material компонента MeshRenderer
if (MoveToPoint(point[stage])) < stage = stage == 1 ? 0 : 1; if (on_x) transform.localScale = new Vector3(-transform.localScale.x, 1, 0.032f); else gameObject.GetComponent().material = materials[stage]; >
Хорошо бы попробовать прямой вызов без условий где-то в Start()
gameObject.GetComponent().material = materials[0];
Ужасные мучения
Текстурирование и создание игровых материалов всегда были интересной… и мучительной работой одновременно. До перехода на Substance Designer я использовал для создания всех нужных карт Photoshop и xNormal. Приходилось много раз переключаться между двумя этими приложениями, и это надоедало. Теперь я избавился от этой проблемы.
Substance Designer (SD) — это программное обеспечение, позволяющее создавать материалы и текстуры «на лету». В нём используется удивительно простая система узлов. Я художник, и обычно меня очень пугала работа с узлами (и вообще всем, кроме кисти). Честно говоря, когда я впервые увидел SD, то слегка вздрогнул. К счастью, у авторов программы есть видео, демонстрирующие её возможности. Они дают такого мотивирующего «пинка», что вам приходится совершить «прыжок веры».
Почему SD?
Сначала определимся, почему мы остановились именно на Substance Designer? Первая причина — Unity перешёл на новую систему материалов под названием PBS, Physically Based Shading («физически обоснованный шейдинг»), хорошо описанную в этом потрясающем посте. Мы хотели использовать эту новую технологию по максимуму.
Вторая причина заключается в том, что в игре Antegods мы хотели исследовать область процедурной генерации. В SD есть удивительно быстрые алгоритмы, позволяющие создавать материалы почти мгновенно. Одним нажатием или добавлением нового узла можно значительно изменить внешний вид всего материала.
Последняя причина в том, что рабочий процесс переноса материалов в Unity просто безупречен. Можно экспортировать весь материал в Unity, изменять его уже там… и всё работает без проблем!
Примеры
Вот примеры материалов, созданных нами в Substance Designer.
Процесс обучения SD никогда не заканчивается. Есть очень много способов достичь одинакового результата, и некоторые из них лучше или быстрее других.
Ищем золото!
Сейчас я продемонстрирую вам небольшой пример по созданию золота. Алхимики пытались получить его веками, и это очень важный материал для нашей игры, основанной на древней латиноамериканской культуре.
Если вы знаете Substance Designer в совершенстве, вы, наверно, увидите способ сделать материал гораздо лучше. Если это так, то расскажите нам! С другой стороны, если вы полный новичок в этом ПО, я предлагаю вам сначала посмотреть очень полезные обучающие видео компании Allegorithmic.
Материал «золото» на самом деле довольно просто создать, но он всё равно требует множества настроек. Вот как выглядит окончательный граф в Substance Designer.
Я обычно начинаю с настройки Specular/Glossiness (отражения/глянцевости). В основном потому, что я больше к ним привык, чем к Metallic/Roughness (металл/шероховатость). Это уже может быть странно, потому что настройка Metallic/Roughness — стандарт в Unity.
Во-вторых, мне нужна была красивая металлическая или каменная структура с трещинами и вмятинами.
Cracks & Grain (трещины и зернистость) — это очень малозаметная структура, которая в основном видна на карте нормалей (Normal), и совсем немного — на карте диффузности (Diffuse). Я начал с мозаичного шаблона и соединил его с узлами Clouds (облака) для получения здесь малозаметной структуры.
Я хотел, чтобы трещины проявлялись больше в Normal, чем в Diffuse, поэтому поместил узел прямо перед выходом, чтобы он находился в части с картами нормалей.
Для правдоподобности золото должно быть как можно более гладким, иначе у нас получится жёлтая фольга. Поэтому карта нормалей очень слабо выражена, но её всё равно видно.
Добавив к карте Cracks & Grain простую градиентную карту (Gradient map), я могу быстро создать карту Diffuse.
Но нам кое-чего не хватает. В Substance Designer удобно то, что можно работать с ранее созданными картами. Здесь я взял карту нормалей, превратил её в карту Curvature, увеличил значения и превратил всё это в цветовую карту (color map). (Карты Grayscale и Color не смешиваются.)
Смешав их поверх уже сущестующей карты Diffuse, мы получим немного более интересную текстуру.
И, наконец, для отражения (Specular) я использовал простой узел Clouds. С помощью градиентной карты я нанёс немного более тёмные цвета, чем в диффузной карте, а поверх добавил детали с помощью curvature с увеличенными значениями.
Для глянцевости (Glossiness) я использовал тот же узел Clouds, осветлил результат (чем ярче, тем больше блеска), добавил увеличенные детали Curvature, и на этом всё!
Осталось экспортировать материал, просто нажав на Export. SD экспортирует файл .sbsar в Unity, и он работает в точности как материал. Он автоматически располагает карты в нужных местах, после чего позволяет выполнить настройку. Должен сказать, что материалы в Unity выглядят немного иначе, чем в самом Substance Designer, но, возможно, создатели ПО исправили это в последнем обновлении.
Вот и всё, материал уже находится в Unity. Как видите, внизу есть настройки. Например, можно быстро изменить размер текстуры, что очень удобно, если нужно уменьшить масштаб проекта.
Также тут есть кнопка Randomize. При её нажатии материал изменяет все сгенерированные значения. Сейчас моё золото выглядит не самым лучшим образом, потому что в нём всегда используются небольшие значения для облаков (clouds) и трещин (cracks). Однако если немного поднять значение cracks и нажать кнопку Randomize, то произойдёт следующее:
Это уже близко к нужной нам процедурной генерации. Каждый раз материал будет выглядеть немного иначе.
Но SD способен на большее: можно раскрывать нужные узлы и функции. После этого они становятся видимыми в Unity, и их можно настраивать. В моём примере я раскрыл две функции: количество трещин по осям X и Y. В редакторе можно перетаскивать ползунки, настраивая материал на свой вкус.
Рекомендуем!
В заключение я рекомендую Substance Designer всем, кто работает с текстурами и материалами. Это ПО предоставляет большую свободу и позволяет быстро достичь потрясающих результатрв. В нём так много функций, что можно, как мне кажется, создать практически всё.
А на прощание вот несколько графов, которые мы создали, осваивая программу. Успехов в работе!
Игра Antegods поддерживается Dutch Cultural Media Fund (Голландским культурным медиафондом), Cultural Industries Fund NL (Голландским фондом индустрии культуры) и Программой Европейского Союза MEDIA.
- substance designer
- создание материалов
- PBS
- Physically Based Shading
- шейдеры
- узлы