Перейти к содержимому

Что такое текстура unity

  • автор:

Unity3d. Уроки от Unity 3D Student (B09-B12)

Когда вы работает с игровыми объектами в Unity3d, вам потребуется также использовать материалы. Например, мы хотим добавим материал с текстурой к кубу.
B0900

Для начала сохраним нашу текстуру в папку Assets (в корневой папке проекта).

Добавим директорию Materials (мы помним, что всегда удобно поддерживать «иерархический порядок» в проекте) и назовем наш файл bulb texture (расширение *.png (в оригинальном уроке *.psd), см. примечание).
B0901

Переключимся назад в Unity3d, убедимся что в Project View появилась папка Materials c нашей текстурой.
B0902

Создадим куб. Добавить нашу текстуру к кубу, можно просто перетащив ее из Project View на куб (материал создастся автоматический). Но, возможно, вы захотите настроить его заранее, тогда выбираем Create->Material.
B0903

Назовем его bulb и положим в папку Materials.
B0904

Выберем buld и перенесем нашу текстуру из Project View на пустой серый квадрат в Inspector View (с надписью none(Texture 2D)), либо нажав на Select все в том же квадрате и выбрав ее из появившегося списка.
B0905

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

При выборе материала в Inspector View вы так же можете выбрать шейдер, по которому будет расчитываться его конечный вид
B0907
PS: О шейдерах мы обязательно поговорим отдельно, но много позже.

Так же у материала можно настраивать tiling (мозаичное размещение текстуры). Чем больше значения tiling по x-ой или y-ой координате, тем больше раз она повторяется по соответствующей стороне. Чтобы понять как это работает — поставте значения по x и y равным 10 (при изменении значения текстура на кубе будет обновляться в реалтайме).
B0908

Параметр offset (смещение) отвечает за сдвиг текстуры «по кругу». Чтобы лучше понять как он работает, поэкспериментируйте c ним.

Базовый Урок 10 — Основы работы с аудио

В уроке рассказывается, как проигрывать компонент Audio Source (аудио ресурс) и вызывать звуковые клипы с помощью скриптинга.

  • AudioListener (аудио приемник)
  • AudioSource (аудио ресурс)

Обычно AudioListener является компонентом у камеры. Выберем камеру и убедимся в этом, посмотрев в Inspector View.
b1000

Для того чтобы слушать звуки вы должны иметь хотя бы один AudioListener в каждой сцене.

Добавим пустой GameObject и добавим к нему компонент Audio Source.
b1001

Добавить аудио-клип можно либо через Inspector View, либо с помощью скрипта.

В нашем проекте есть два аудио-файла — моно и стерео.
b1002

Моно обычно используется для звуковых эффектов. Только для него можно использовать затухание или другие 3d-эффекты.
Стерео, соответственно, для музыки, т.к. стереозвук прогирывается как есть.

В окне Preview можно проиграть выбранный файл.
b1003

Добавим наш клип (GreenadeLaunch) в поле Audio Clip. Если включен параметр Play On Awake, то звук будет проигрываться сразу после запуска сцены.
b1004

Если же мы хотим, чтоб аудио-клип прозвучал в нужный нам момент, нужно написать скрипт. Оставим поле Audio Clip у Audio Source пустым и добавим c#-скрипт, назвав его PlaySounds. Добавим в скрипт следующий код:

Добавим скрипт к пустому GameObject, а значение переменной myClip у скрипта проиницилизируем звуковым файлом (GreenadeLaunch). Теперь нажав на play вы снова усшылите звук.

Проигрывать аудио можно и без использования Audio Source. Удалим компонент Audio Source c нашего GameObject, а код в теле метода Start() заменим следующим:

Тут, PlayClipAtPoint — статическая функция класса AudioSource, которая создает новый GameObject, с соответствующим Audio Source (в нашем случае это myClip) и после проигрывания аудио-клипа удаляет данный GameObject.

Сохраните скрипт и убедитесь что он есть у нашего GameObject, а значение myClip равно GreenadeLaunch.
b1006

Жмем Play и сразу после загрузки сцены жмем на Pause чтобы убедиться что на сцене появился новый игровой объект с именем One Shot Audio.
b1007

Базовый Урок 11 — Основы соединений

В уроке рассказывается, как использовать Fixed joint (неподвижное соединение) и Hinge joint (шарнирное соединение) для создания цепи у «шара для разрушения зданий»

Для создания интересной физики в Unity3d воспользуемся «соединениями» (joints). И для илюстрации этого создадим модель шара для разрушения зданий.

Исходная сцена содержит плоскрость (Floor), камеру (Main Camera) и точечный источник света (Point light).
Для начала создадим cферу, добавим к ней компонент Rigidbody и назовем ее Ball.
Добавим на сцену цилиндр, так же добавив к нему Rigidbody. Размер и положения цилиндра и сферы указанны на рисунке ниже. Для цилиндра scale равно 0.15, 0.25 и 0.15, для x, y и z соответственно, цилиндр свинут «вверх» к «краю» шара (грани при этом пересекаются).
b1100

Чтобы связать сферу и цилиндр — выбирете сферу (Ball) и добавьте к ней компонент Fixed Joint. Переменную Connected Body проинициализируем значением Cylinder.rigidbody. Напомню, что для этого достаточно перетащить Cylinder из Hierarchy view в Inspector View, на поле напротив Connected Body.
b1102

Переименуем Cylinder на более подходящее названия для крепежа шара, например, Ballstem. Значение переменной Connected Body поменяется автоматический.
b1103

Нажмите play и увидите как шар падает вместе с прикрепленным к нему цилиндром.
b1104

Теперь начнем создавать подвижные участки цепи.
Создадим капсулу (назовем ее Chain1), при этом размеры ее будут аналогичны размерам Ballstem’а, а находится она будет чуть выше него, чтоб крайние грани объектов пересекались. Chain1 так же будет с компонентом rigidbody.
b1105

А к Ballstem’у добавим компонент Hinge Joint, у которого
Connected Body мы инициализируем Chain1.rigidbody.
Место закрепление обозначенно ораньжевой стрелкой.
b1106

Нам потребуется еще один участок цепи. Выберем Chain1 и сделаем его дубликат (ctrl+D или cmd + D). Переименуем его в Chain2, так же сдвинув его к верхушке Chain1. К Сhain1 добавим Hinge Joint, с
Connected Body равным Chain2.rigidbody.
b1107

Аналогично добавим Chain3.

В конце, мы добавим HingeJoint к Chain3, при этом мы не будем задавать значение Connected Body. В этом случае объект будет прикрепленн «сам к себе» (точнее сказать к пустому месту в сцене).
b1108

Выделем Ball, Ballstem, Chain1, Chain2, Chain3 и наклоним их.
b1109

Жмем play и смотрим как перемещаются наш шар с цепью.

Базовый Урок 12 — Ввод с использованием виртуальных осей

В уроке рассказывается, как использовать стрелки (arrow keys), для перемещения влево и вправо, с помощью «осей» (axes)

На это раз на сцене у нас есть плоскость (floor), камера (Main Camera), источник света (Point light) и пустой gameObject.

Еще один вариант ввода — использование «осей» (Axes).
Откроем Input Manager (Edit->Project settings->Input). Разверните Axis и затем Horizontal.
b1200

Посмотрим на некоторые дефолтные параметры:

Параметр Значение Комментарий
Negative Button left Клавиша для перемещения в отрицательном направлении
Positive Button right Клавиша для перемещения в положительном направлении
Alt Negative Button a Альтернативная клавиша для перемещения в отрицательном направлении
Alt Possitive Button d Альтернативная клавиша для перемещения в положительном направлении
Type Key or Mouse Button Тип ввода, для перемещения вдоль данной оси (в нашем случае X)
Axis X axis Ось объекта, вдоль которой мы будем перемещаться

Для того, чтобы использовать данное перемещение (Horizontal), нам потребуется метод GetAxis() класса Input.

  1. если написано «метод класса», то предполагается что он static.
  2. если написано «метод объекта», тогда метод принадлежит конкретному объекту.

Добавим C#-скрипт, назовем его GetAxis.cs и напишем:

Добавим скрипт к пустому gameObject’у, и нажмем play. Если зажать стрелку влево/вправо (или же a/d), в status bar’е вы увидите как меняется значение переменной horiz:
b1201

Значение этой переменной может меняться от -1 до 1 (в зависимости от зажатой клавиши). Как только вы отпустите клавишу, horiz станет снова равен 0.

Добавим еще строчку кода в Update(), сразу за Debug.Log():

Запустим сцену и нажмем на стрелку — вы увидите, как наш gameObject начнет перемещаться вдоль оси X.
b1202

Текстуры

Normally, the mesh geometry of an object only gives a rough approximation of the shape while most of the fine detail is supplied by Textures. A texture is just a standard bitmap image that is applied over the mesh surface. You can think of a texture image as though it were printed on a rubber sheet that is stretched and pinned onto the mesh at appropriate positions. The positioning of the texture is done with the 3D modelling software that is used to create the mesh.

Cylinder with tree barkCylinder with tree bark

Unity can import textures from most common image file formats.

Textures for use on 3D models

Textures are applied to objects using Materials. Materials use specialised graphics programs called Shaders to render a texture on the mesh surface. Shaders can implement lighting and colouring effects to simulate shiny or bumpy surfaces among many other things. They can also make use of two or more textures at a time, combining them for even greater flexibility.

Вы должны создавать ваши текстуры с размерами, являющимися степенями двойки (например, 32х32, 64х64, 128х128, 256х256 и т.д.). Просто поместите их в папку Assets вашего проекта, этого будет достаточно, затем они появятся в окне Project View.

После того как ваша текстура будет импортирована, вы должны будете назначить ее материалу. После этого материал может быть применен к мешу, системе частиц(Particle System) или GUI текстуре(GUI Texture). Используя настройки импорта(Import Settings), текстуру также можно конвертировать в Cubemap или Normalmap для различного применения в игре. Более подробную информацию об импорте текстур, пожалуйста, читайте на странице компонента Texture.

2D графика

In 2D games, the Sprites are implemented using textures applied to flat meshes that approximate the objects’ shapes.

Sprite from a 3D viewpointSprite from a 3D viewpoint

An object in a 2D game may require a set of related graphic images to represent animation frames or different states of a character. Special techniques are available to allow these sets of images to be designed and rendered efficiently. See the manual page about the Sprite Editor for more information.

A game’s graphic user interface (GUI) consists of graphics that are not used directly in the game scene but are there to allow the player to make choices and see information. For example, the score display and the options menu are typical examples of game GUI. These graphics are clearly very different from the kind used to detail a mesh surface but they are handled using standard Unity textures nevertheless. See the manual chapter on GUI Scripting Guide for further details about Unity’s GUI system.

Particles

Meshes are ideal for representing solid objects but less suited for things like flames, smoke and sparkles left by a magic spell. This type of effect is handled much better by Particle Systems. A particle is a small 2D graphic representing a small portion of something that is basically fluid or gaseous, such as a smoke cloud. When many of these particles are created at once and set in motion, optionally with random variations, they can create a very convincing effect. For example, you might display an explosion by sending particles with a fire texture out at great speed from a central point. A waterfall could be simulated by accelerating water particles downward from a line high in the scene.

Star particle systemStar particle system

Unity’s particle systems have a wealth of options for creating all kinds of fluid effects. See the manual chapter on the subject for further information.

Terrain Heightmaps

Textures can even be used in cases where the image will never be viewed at all, at least not directly. In a greyscale image, each pixel value is simply a number corresponding to the shade of grey at that point in the image (this could be a value in the range 0..1 where zero is black and one is white, say). Although an image like this can be viewed, there is no reason why the numeric pixel values can’t be used for other purposes as well, and this is precisely what is done with Terrain Heightmaps.

A terrain is a mesh representing an area of ground where each point on the ground has a particular height from a baseline. The heightmap for a terrain stores the numeric height samples at regular intervals as greyscale values in an image where each pixel corresponds to a grid coordinate on the ground. The values are not shown in the scene as an image but are converted to coordinates that are used to generate the terrain mesh.

Interestingly, even though a heightmap is not viewed directly as an image, there are still common image processing techniques that are useful when applied to the height data. For example, adding noise to a heightmap will create the impression of rocky terrain while blurring will smooth it out to produce a softer, rolling landscape.

More information about terrains in Unity can be found in this section of the manual.

Текстуры для Unity3D: как работать, готовые модели

Lorem ipsum dolor

Иногда детально моделировать сложные объекты в игре на Unity3D — это долго, а хочется выполнить работу как можно быстрее. В этом случае на помощь придут текстуры для Unity. Они помогут создать реалистичную игровую модель, при этом не тратится много времени, но самое главное — не будут трати ть ся ресурсы устройства на вычисление игровой графики.

Текстуры для Unity и для других игровых движков или редакторов графики — это обычное изображение, которое накладывается на поверхность готовой модели, чтобы придать ей цвет, свойства и рельефность.

Как вы знаете, за передачу геометрических данных 3D-модели отвечает набор полигонов. Полигон — это векторный многоугольник, из большого количества которых получаются готовые 3D-объекты. С полигонами взаимодействует дизайнер игровых моделей. Фактически получается так: чем больше полигонов, тем качественней будет детализирована игровая модель. Но отрисовка полигонов занимает слишком много времени. Поэтому часто реалистичность объектов достигается не большим количеством полигонов, а наложением текстур и материалов.

Текстуры для Unity 3D

  • обозначить трещины;

  • обозначить сучки;

  • сделать выпуклости;

  • и др.

Текстуры для Unity3D: применение карт рельефа

  1. Bump Map. Определяет иллюзию рельефности, вообще не меняя геометрические данные модели. По сути, на текстуру добавляются визуальные искажения, которые и создают ощущение неровностей на поверхности.

  2. Parallax Map. Определяет иллюзию движения отдельных частей модели относительно общей сцены. Такой вид карты воздействует на положение отдельных пикселей, но не полигонов.

  3. Displacement map. Этот вид карты влияет на геометрические данные модели и обеспечивает максимально реалистичную рельефность текстуры. Однако общее количество полигонов модели остается неизменным. Этот вид карты рельефа определяет реальное изменение поверхности модели и не создает иллюзий, как первые два вида. Из-за своей сложности, она считается наиболее затратной, поэтому используется нечасто.

Текстуры шумов для Unity

  • поверхность асфальта;

  • песочный пляж;

  • поверхность камней;

  • штукатурку зданий;

  • поверхность шкурки цитрусовых;

  • поверхность планет;

  • вид хлеба;

  • и др.

Текстуры для Unity3D: большие объекты

  • поверхность горы;

  • поверхность пустыни;

  • песчаный пляж;

  • снежный покров;

  • и др.

Заключение

Сегодня мы рассмотрели теоретическую часть темы «Текстуры в Unity 3D», к практическим моментам мы перейдем в следующих статьях. Нужно понять, что применение текстур позволяет достаточно быстро и незатратно добавить реалистичность готовым 3D-моделям. Это значит, что нужно обязательно научиться их использовать в собственных работах.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

4. Материалы и текстуры

По умолчанию все объекты имеют серый цвет. Можно изменить цвет любого объекта с помощью материала.

Материал — это набор свойств объекта, с помощью которых можно изменять внешний вид его поверхности. Материал может содержать в себе: цвет, текстуру, блик, рельеф объекта.

Используй пункт главного меню Assets → Create → Material или контекстное меню окна Проект, для создания нового материала. После создания, ты можешь применить его к объекту и настроить все его свойства в Инспекторе. Для применения материала к объекту, просто перетащи его из окна Проект на любой объект в Сцене или Иерархии. Чтобы изменить материал у всех объектов одного prefab’а, необходимо изменить материал у сохраненного prefab’а в окне Проект. Попробуем сделать материалы для моста. Нам понадобятся два цвета: коричневый и темно-коричневый (для столбов). Создадим два материала для этого.

Выбери один из них и в Инспекторе измени цвет (в самом верху, рядом со словом Albedo). Повтори тоже самое с другим материалом.

Теперь необходимо заменить материалы в prefab’е моста. Разверни prefab в окне Проект, нажав на стрелочку:

Выбери несколько объектов, которые должны быть одного цвета. А теперь посмотри на окно Инспектор и найди там компонент Mesh Renderer . Именно он отвечает за то, какого наш объект будет цвета и как он будет отражать свет. Найди свойство Material и разверни его нажав на стрелочку. Ты увидишь число, которому соответствует количество материалов необходимых для этой 3D модели (Size) и, собственно, сами материалы. В нашем случае один материал — Default-Material. Его и нужно заменить, нажав на соседний кружочек .

Теперь ты можешь добавить материалы к остальным элементам prefab’а. Обрати внимание, что изменяя prefab в окне Проект, ты меняешь сразу все его копии на Сцене. Вот, что получилось у нас:

Материалы не только отвечают за свет, как мы уже говорили, но и за другие свойства, например:

Albed — цвет и текстура.

Metallic — определяет металлическая (значение 1) ли поверхность или нет (значение 0).

Smoothness — определяет насколько поверхность глянцевая (значение 1) или шероховатая (значение 0).

4.2. Текстура

Текстура — это растровое изображение, накладываемое на поверхность трехмерной модели для придания ей цвета, окраски или иллюзии рельефа.

Unity поддерживает все самые популярные форматы изображений: jpeg, png, tiff, tga, psd. Текстура должна быть квадратной и иметь следующие размеры: 32х32, 64х64, 128х128, 256х256, 512х512, 1024х1024, 2048х2048, 4096х4096, 8192х8192. Если не следовать этим правилам — Unity попытается сам преобразовать изображение в нужный размер.

4.3. Импорт текстуры

Создай папку в окне Проект, где будут храниться все текстуры. Предлагаем назвать папку Texture . Нажми на эту папку правой кнопкой мыши и выбери «Import New Asset…». Выбери картинку.

Выбери нужный материал. В окне Инспектор нажми кружочек рядом с параметром Albedo и выбери текстуру.

Для простых объектов (куб, сфера, плоскость) можно изменить количество повторений текстуры на объекте. По умолчанию, текстура не повторяется. Выбери материал, в окне Инспектор параметр Tiling отвечает за повторение текстуры по осям x, y.

4.4. Normal Map

Есть простой сервис http://cpetry.github.io/NormalMap-Online/, где из картинки можно настроить и скачать себе Normal map.

Импорт Normal map

Создай папку в окне Проект, где будут храниться все текстуры. Предлагаем назвать папку Normal map .

Нажми на эту папку правой кнопкой мыши и выбери «Import New Asset…». Выбери картинку.

Выдели в окне проекта, добавленную картинку. В свойстве Texture Type выбери Normal Map .

Чтобы добавить материалу неровность, выбери его, в окне Инспектор нажми кружочек рядом с параметром Normal map и выбери нужную.

4.5. Unity: Создание материала ‘Стекло’

Для создания стекла можно использовать стандартный шейдер и выставить для него Rendering Mode = Transparent и в настройках цвета для Albedo выставить прозрачность (Alpha = 0).

Но можно его сделать более реалистичным. Для этого нужно рядом со стеклом добавить GameObject ▶ Light ▶ Reflection Probe. В ее настройках можно указать уровень детализации побольше Resolution = 512 (будет красиво, но скажется на производительности), а для того, чтобы отображались не только статические объекты, нужно выставить Baking Type в Realtime.

Если для Reflection Probe установить чекбокс в разделе его свойств Runtime Settings ▶ Box Projection , то отражения на стекле будут еще более реалистичными.

По умолчанию для Reflection Probe выставлено значение Refresh Mode = On Awake. Это значит, что динамические объекты (типа персонажа или врагов и т.п.) стекло не будет отражать. Если не жалко ресурсов, но хочется красоты и «реальности», то можно выставить режим обновления на каждый кадр.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

From $34/Day — Car Rental HPN With Zero Terminal Shuttle