Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

94      Глава 4. Работа с графикой

Повторите эти шаги, чтобы получить стены. Скорее всего, вы захотите привести в порядок вкладку Hierarchy, сделав стены потомками общего базового объекта (напоминаю, что такой объект нужно поместить в точку с координатами 0, 0, 0, а затем на вкладке Hierarchy перетащить на него остальные объекты), но это действие не является обязательным. И не забудьте расположить в сцене несколько простых источников света, чтобы видеть окружающее пространство. В главе 2 вы уже узнали, что для создания источника света нужно выбрать его тип в дополнительном меню, которое появляется после выбора команды Light в меню GameObject. Примерный вид вашего уровня после этих операций показан на рис. 4.3.

 

О Player

К а а ( а а

И а

а )

 

( • )

Рис. 4.3. Геометрическая модель игрового уровня, построенного по плану, представленному на рис. 4.1

Заставьте объект, представляющий игрока или камеру, двигаться по сцене (для создания игрока воспользуйтесь контроллером персонажа и сценариями движения — эта тема подробно объяснялась в главе 2). Теперь можно походить по сделанной из примитивов сцене, чтобы протестировать получившийся уровень! Все очень просто, но пока у вас есть только чистая геометрия. Декорируем ее с помощью двухмерных изображений.

ЭКСПОРТ ГЕОМЕТРИЧЕСКИХ МОДЕЛЕЙ В ДРУГИЕ ПРОГРАММЫ

Большая часть работы по визуальному оформлению сцены выполняется во внешних приложениях для работы с трехмерной графикой, например в программе Blender. Удобнее всего это делать, загрузив во внешнюю программу свою геометрическую модель. Хотя по умолчанию возможность экспорта скомпонованных примитивов в Unity отсутствует, существуют сценарии, позволяющие добавить в редактор такую функциональность. Большинство из них дают возможность выделить в сцене всю геометрию и щелкнуть на кнопке Export (я упоминал их в главе 1, в разделе, посвященном настройкам редактора).

Эти сценарии обычно экспортируют геометрию как OBJ-файл (этот тип файлов обсуждается чуть позже). На сайте Unity3D щелкните на кнопке поиска и введите запрос obj exporter. Или можете посмотреть пример такого сценария на странице http://wiki.unity3d.com/index.php?title=ObjExporter.

4.3. Наложение текстур

Пока что наш уровень представляет собой грубый набросок. Он уже доступен для игры, но очевидно, что над внешним видом сцены требуется еще долго работать. Следующим шагом по совершенствованию уровня будет наложение текстур.

4.3. Наложение текстур      95

ОПРЕДЕЛЕНИЕ  Текстурой (texture) называется двухмерное изображение, применяемое для улучшения качества трехмерной графики. Это обобщенное определение термина; различные способы использования текстур тут не учитываются. Впрочем, каким бы способом изображение ни использовалось, оно все равно будет называться текстурой.

В трехмерной графике текстуры имеют ряд применений, но наиболее простым является отображение их на поверхности трехмерных моделей. Позднее вы узнаете, как это происходит в случае сложных моделей, сейчас же мы, по сути, покроем стены обоями, как показано на рис. 4.4.

П а

П а

( а)

( а , а )

Рис. 4.4. Внешний вид игрового уровня до и после наложения текстур

Как видно из рисунка, текстура превращает откровенно нереалистичную цифровую конструкцию в кирпичную стену. Другие варианты применения текстур включают в себя маски, позволяющие вырезать фигуры, и карты нормалей для имитации рельефа. Рекомендую вам самостоятельно почитать дополнительные материалы о работе с текстурами.

4.3.1. Выбор формата файла

Для сохранения двухмерных изображений существует множество форматов. Какой из них лучше выбрать? Форматы, поддерживаемые Unity, перечислены в табл. 4.2.

Таблица 4.2. Форматы файлов двухмерных изображений, поддерживаемые Unity

Формат

Достоинства и недостатки

 

 

PNG

Повсеместно используется в Интернете. Сжатие без потерь; есть альфа-канал

 

 

JPG

Повсеместно используется в Интернете. Сжатие с потерями; нет альфа-канала

 

 

GIF

Повсеместно используется в Интернете. Сжатие с потерями; нет альфа-канала.

 

(Технически потери возникают не из-за сжатия, а в результате преобразования

 

к 8-битному изображению. Но конечный результат все равно один и тот же)

 

 

BMP

Формат, по умолчанию используемый в Windows. Применяется без сжатия; нет

 

альфа-канала

 

 

TGA

Повсеместно применяется в трехмерной графике; во всех прочих областях

 

малоизвестен. Используется без сжатия, но возможно и сжатие без потерь; есть

 

альфа-канал

 

 

96      Глава 4. Работа с графикой

 

Таблица 4.2 (продолжение)

 

 

Формат

Достоинства и недостатки

 

 

TIFF

Повсеместно применяется в цифровой фотографии и издательском деле.

 

Используется без сжатия, но возможно и сжатие без потерь; нет альфа-канала

 

 

PICT

Формат по умолчанию на старых компьютерах Mac. Сжатие с потерями; нет

 

альфа-канала

 

 

PSD

Собственный формат Photoshop. Используется без сжатия; есть альфа-канал.

 

Основным достоинством является возможность непосредственной работы

 

с файлами в Photoshop

 

 

ОПРЕДЕЛЕНИЕ  Альфа-канал (alpha channel) служит для хранения информации о прозрачности изображения. Видимые цвета поступают по трем «каналам»: красному, зеленому и синему. Альфа — это дополнительный невидимый канал, управляющий прозрачностью изображения.

Хотя Unity допускает импорт и использование в качестве текстур изображений всех перечисленных в табл. 4.2 форматов, форматы значительно различаются по количеству поддерживаемых функций. Для файлов, импортируемых в качестве текстур, особенно важны два фактора: как именно сжимается изображение и есть ли у него альфа-канал. С альфа-каналом все просто: так как он часто используется в трехмерной графике, лучше, чтобы у изображения он был. Объяснить важность разных аспектов сжатия чуть сложнее. Впрочем, объяснение можно свести к фразе «сжатие с потерями — это плохо». Изображения, используемые без сжатия и допускающие сжатие без потерь, сохраняют свое качество, в то время как при сжатии с потерями качество падает по мере уменьшения размера файла.

С учетом этих соображений я рекомендовал бы использовать в качестве текстур в Unity файлы формата PNG или TGA. Формат Targas (TGA) был любимым вариантом для создания текстур, пока в Интернете не получил распространение формат PNG. В наше время PNG с технологической точки зрения является практически эквивалентом формата TGA, но получил большее распространение благодаря применению как в качестве текстур, так и в Интернете. К числу рекомендуемых форматов относится также PSD, потому что удобно работать с одним и тем же файлом как в Photoshop, так и в Unity. Хотя я предпочитаю хранить рабочие файлы отдельно от «готовых» экспортированных в Unity вариантов (аналогичных взглядов я придерживаюсь касательно хранения трехмерных моделей, но об этом речь пойдет позже).

В результате все изображения, представленные в примере проекта, имеют формат PNG, и я рекомендую вам работать именно с ним. А теперь пришло время импортировать в Unity несколько изображений и применить их к объектам сцены.

4.3.2. Импорт файла изображения

Начнем с создания/подготовки наших будущих текстур. Все изображения, используемые в качестве текстур, обычно являются бесшовными, что позволяет многократно повторять их на больших поверхностях.

4.3. Наложение текстур      97

ОПРЕДЕЛЕНИЕ  Бесшовное изображение (tileable image) представляет собой рисунок, края которого совпадают друг с другом. Именно это позволяет повторять его на поверхности без видимых швов в местах соединения. Концепция назначения текстур в трехмерном моделирования сходна с использованием фоновых рисунков на веб-страницах.

Получить бесшовное изображение можно различными способами, например обработать фотографию или нарисовать собственный вариант картинки. Учебные пособия и объяснения можно найти в различных книгах и на сайтах, но сейчас мы не будем тратить на это время. Вместо этого мы воспользуемся изображениями с сайтов, предлагающих наборы графики для трехмерного моделирования. Например, показанные на рис. 4.5 текстуры я скачал с сайта www.textures.com. Именно их я собираюсь назначить полу и стенам; вы можете выбрать собственные картинки, подходящие, по вашему мнению, для этой цели.

Рис. 4.5. Бесшовные текстуры камня и кирпичей, скачанные с сайта textures.com

Скачайте выбранные вами изображения и подготовьте их к использованию в качестве текстур. С технической точки зрения ничто не мешает задействовать их сразу, но в исходном виде они далеки от идеала. Разумеется, они являются бесшовными (именно поэтому мы их и скачали), но рисунок имеет некорректный размер, а файл — не тот формат, который нам нужен. Размер текстуры должен выражаться в степенях двойки. Графические процессоры показывают максимальную эффективность при обработке изображений, размер которых выражается числом 2N: 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 (следующее в этом ряду — число 4096, но это слишком большое изображение, чтобы использовать его в качестве текстуры). В графическом редакторе (это может быть Photoshop, GIMP или любой другой вариант из перечисленных в приложении Б) отмасштабируйте скачанные изображения до размера 256 × 256 и сохраните их в формате PNG.

Теперь перетащите эти файлы из папки на вашем компьютере на вкладку Project в Unity, как показано на рис. 4.6. Это действие позволит скопировать их в Unityпроект, после чего их можно будет использовать в трехмерной сцене. Если перетаскивать файлы вам по каким-то причинам неудобно, щелкните правой кнопкой мыши на вкладке Project и выберите в появившемся меню команду Import New Asset, чтобы открыть окно выбора файлов.