Иногда детально моделировать сложные объекты в игре на Unity3D — это долго, а хочется выполнить работу как можно быстрее. В этом случае на помощь придут текстуры для Unity. Они помогут создать реалистичную игровую модель, при этом не тратится много времени, но самое главное — не будут тратиться ресурсы устройства на вычисление игровой графики.
Текстуры для Unity и для других игровых движков или редакторов графики — это обычное изображение, которое накладывается на поверхность готовой модели, чтобы придать ей цвет, свойства и рельефность.
Как вы знаете, за передачу геометрических данных 3D-модели отвечает набор полигонов. Полигон — это векторный многоугольник, из большого количества которых получаются готовые 3D-объекты. С полигонами взаимодействует дизайнер игровых моделей. Фактически получается так: чем больше полигонов, тем качественней будет детализирована игровая модель. Но отрисовка полигонов занимает слишком много времени. Поэтому часто реалистичность объектов достигается не большим количеством полигонов, а наложением текстур и материалов.
Текстуры для Unity 3D
Как работают текстуры для Unity? Представим ситуацию, что вы разработали игровую сцену. По умолчанию она будет серого цвета. Берем один объект из сцены — пусть это будет мост. По вашей задумке, мост должен быть деревянным, однако «в сыром» варианте он никак не напоминает дерево. Можно изменять до бесконечности геометрию моста, пока он не станет выглядеть «как деревянный». Но это долго, ведь можно применить текстуры.
Используя текстуры, вы накладываете на поверхность полигонов моста изображение текстуры дерева. При этом геометрия моста не изменяется, но уже появляется визуальное ощущение, что он сделан из дерева. Но самое главное, что на такой процесс не тратится много времени. Наложив текстуру, мост будет только визуально «как деревянный», его рельеф останется гладким, как и прежде. Этот момент также можно исправить и задать мосту микрорельеф:
обозначить трещины;
обозначить сучки;
сделать выпуклости;
и др.
Чтобы добавить микрорельеф, нужно воспользоваться картой высот, которая как раз помогает делать рельеф реалистичным.
Текстуры для Unity3D: применение карт рельефа
В Unity3D есть несколько вариантов использования карт рельефа (карт высоты):
Bump Map. Определяет иллюзию рельефности, вообще не меняя геометрические данные модели. По сути, на текстуру добавляются визуальные искажения, которые и создают ощущение неровностей на поверхности.
Parallax Map. Определяет иллюзию движения отдельных частей модели относительно общей сцены. Такой вид карты воздействует на положение отдельных пикселей, но не полигонов.
Displacement map. Этот вид карты влияет на геометрические данные модели и обеспечивает максимально реалистичную рельефность текстуры. Однако общее количество полигонов модели остается неизменным. Этот вид карты рельефа определяет реальное изменение поверхности модели и не создает иллюзий, как первые два вида. Из-за своей сложности, она считается наиболее затратной, поэтому используется нечасто.
Текстуры шумов для Unity
Не всегда на игровую модель нужно накладывать реальную текстуру, иногда можно воспользоваться более простым способом — использовать текстуру шума. Текстура шума — это изображение, которое содержит «визуальный мусор».
Когда мы делаем деревянный мост и нам нужна текстура дерева, тогда мы используем изображение текстуры дерева. Но представьте, что вам нужно в игровой сцене добавить «асфальт». Когда вы его определяете на игровой сцене, он выглядит идеально гладким. Но в реальной жизни не бывает идеально гладкого асфальта. Если присмотреться к реальному асфальту, тогда можно увидеть, что он имеет «шероховатую» поверхность со множеством микровпадин и микровыпуклостей.
Добавлять полноценную текстуру асфальта на модель асфальта в игре нет смысла, потому что есть способы проще — это текстура шумов. На практике, текстура шумов — это изображение шероховатости, небольших пятен, впадин и выпуклостей, которые генерирует компьютер. Текстура шумов используется в тех случаях, когда на игровых объектах нужно убрать состояние визуальной идеальности и добавить немного реалистичности. Как известно, в реальной жизни идеальные поверхности встречаются крайне редко.
Если текстуре шума подобрать правильные параметры, тогда можно имитировать большое количество «реальных» поверхностей. Например:
поверхность асфальта;
песочный пляж;
поверхность камней;
штукатурку зданий;
поверхность шкурки цитрусовых;
поверхность планет;
вид хлеба;
и др.
Текстуры для Unity3D: большие объекты
Текстуры для Unity 3D могут быть добавлены разными способами. Когда вам нужна текстура деревянного моста — вы добавляете изображение структуры дерева и работаете с ним. То же самое будет, если вы будете работать с другими игровыми моделями на сцене. Но что делать, года вам нужно добавить текстуру на поверхность сцены? Например:
поверхность горы;
поверхность пустыни;
песчаный пляж;
снежный покров;
и др.
Самый простой способ — это опять же воспользоваться готовым изображением и покрыть большой объект им. Это можно сделать, так как текстурное изображение можно «повторять» большое количество раз. Однако у такого способа есть один большой недостаток — если объект реально большой, тогда на такую процедуру у вас уйдет много времени. Плюс, нужно будет позаботиться, чтобы игроки не видели «стыковки» изображений. И самое главное — при таком подходе будет трудно «состыковать» разные текстурные поверхности. Например, песчаный пляж должен плавно перейти в зеленое поле.
Для такой текстуры в Unity3D придуман отличный инструмент — это самостоятельное рисование текстур. Вы самостоятельно можете «зарисовать» большие области «песком», «снегом», «травой», «землей» и др. Но самое главное, такой инструмент поддерживает «прозрачность». Таким образом у вас получится идеально стыковать разные виды поверхностей больших объектов.
Заключение
Сегодня мы рассмотрели теоретическую часть темы «Текстуры в Unity 3D», к практическим моментам мы перейдем в следующих статьях. Нужно понять, что применение текстур позволяет достаточно быстро и незатратно добавить реалистичность готовым 3D-моделям. Это значит, что нужно обязательно научиться их использовать в собственных работах.
Другое