Blender Basics 4-rd edition/Chapter 22- Textures in Game Engine

Материал из Blender3D.

Перейти к: навигация, поиск

Содержание

Глава 22: Использование текстур в Игровом Движке

Автор: James Chronister
Перевод: Азовцев Юрий aka gumanoed


В играх все процессы отрисовки объектов должны происходить настолько быстро, насколько это возможно. Традиционные техники отрисовки (блики, отражение и прозрачность методом трассировки-лучей) не могут быть выполнены достаточно быстро. Поэтому текстуры должны быть наложены и настроены несколько по другому. В играх используется метод наложения текстур с помощью UV-Разверток и новая технология GLSL Затенения. Иногда этим методики удобно использовать и для обычных сцен. С их помощью можно сделать очень многое. Мы рассмотрим с вами лишь основы их использования. Но вы всегда можете найти более подробную информацию и новые способы их применения в интернете на тематических сайтах и форумах по Blender.


Наложение UV-Текстур

Вы можете представить себе UV-Текстуру как картонную коробку, разрезанную и разложенную на плоскости. Текстура должна подходить к каждой из сторон коробки. Это сложно сделать с помощью традиционных материалов и текстур. Давайте представим, что вы хотите смоделировать динозавра. Текстура меняет свой цвет на различных его частях и должна быть точно наложена без съезжаний и искажений. Именно здесь вам пригодятся UV-Текстуры. В этом примере я собираюсь наложить сделанную в GIMP текстуру (справа на иллюстрации) на базовый Куб:

Это обычное jpeg-изображение, которое не удастся наложить корректно как обычную материал/текстуру.

Начнем с создания новой сцены, где у нас по умолчанию есть базовый куб. Изменим режим отображения объектов с Solid на Textured. Именно этот режим отрисовки объектов используется во время работы Игрового Движка. Наверняка вы заметили что внешний вид текстуры зависит от освещения сцены. Добавьте еще один источник света для лучшего освещения в сцене.
Измените тип Окна Свойств на "UV Editing". Это даст вам возможность видеть сцену в окне 3D-Вида и иметь доступ к инструментам редактирования и настройки UV-Текстуры в окне "UV-Редактора". Внизу окна UV-Редактора разверните меню Image и выберите пункт Open Image. В открывшемся менеджере файлов найдите и откройте текстуру, которую вы хотите использовать.


Теперь, выделите Куб перейдите в Режим Редактирования. Измените режим выбора элементов меша с Вершин (Vertices) на Ребера (Edges). Так как текстура накладывается на грани, вы можете выбрать отдельные грани и настроить наложение на каждую по отдельности. Но мы с вами воспользуемся другим способом и сделаем UV-Развертку куба, с которой, в последствии, совместим текстуру. Image:BlenderBasics_4rdEdition2011-167_5.jpg
Для этого, выделите ребра, как показано на иллюстрации. После выделения нужных ребер на Полке Инструментов найдите блок кнопок UV Mapping и нажмите кнопку Mark Seam (Отметить Шов). По отмеченным ребрам будут сделаны "разрезы" для развертки куба в плоскость.


Переключите режим выбора элементов меша в Грани (Faces) и нажмите клавишу "A" для выбора всех граней куба. Теперь, для выполнения развертки куба нажмите клавишу "U". Появится меню с несколькими вариантами выполнения развертки и наложения UV-Текстуры, нам нужна опция Unwrap (Развернуть). Теперь вы должны увидеть развернутые грани куба в окне UV-Редактора. В окне UV-Редактора вы можете работать с развернутым мешем куба как с любым объектом в Blender. Вы можете выделять вершины, перемещать и масштабировать их. При перемещении элементов развернутого меша вы сразу увидите изменения в наложении текстуры на Кубе в окне 3D-вида. Расположите вершины меша в окне UV-Редактора так, что бы они соответствовали элементам изображения текстуры. Перейдя в Объектный Режим вы можете нажать клавишу "P" для проверки внешнего вида объекта во время работы игрового движка.

Используя эту технику вы можете выбрать одну или несколько граней на объекте для наложения определенной текстуры.

Переключите режим организации окон в Default и рендер в "Blender Game" и загляните в раздел Material в Окне Свойств.


Наиболее часто используемые функции здесь:


Invisible: удобно использовать для создания "ограничителей игрового пространства" вдоль гоночной трассы
Backface Culling: по умолчанию текстура видна только с одной стороны грани. Если эту опцию выключить, текстура будет накладываться с обоих сторон.
Transparency: слайдер степени прозрачности
Physics: деактивируйте эту панель и объект-актер сможет проходить насквозь другие объекты

Использование UV-Текстур в анимированном видео:

Как и игровая физика может быть записана и использоваться в обычных анимациях, так и UV-текстуры можно использовать совместно с традиционными текстурами и материалами. После выполнения всех вышеописанных шагов, добавьте Кубу обычный материал. Перейдите в раздел Texture, добавьте Кубу текстуру типа Image и откройте то же изображение, которое вы использовали при настройке развертки.
Разверните панель Mapping и выберите "UV" в блоке Coordinate. После нажатия "F12" вы должны увидеть следующий результат.

GLSL Затенение

GLSL затенение новая технология в Blender и находится в постоянно разработке. В ней реализуется стремление добавить доступные при обычном рендере эффекты освещения в игровой движок, что должно придать сцене больший реализм. Как и в случае с UV-Развертками мы рассмотрим лишь основы использования этой технологии.


Не все видеокарты поддерживают технологию GLSL. На некоторых компьютерах GLSL материалы работать не будут. Смотрите информацию на Blender wiki по необходимым спецификациям оборудования.


Для начала работы с GLSL материалами откройте новую сцену, разделите окно 3D-Вида на два, переключите одно из получившихся окон в "UV-Редактор",
движок рендера переключите в "Blender Game" и режим отрисовки объектов переключите в "Textured". Последнюю вещь, которую нам нужно будет сделать для начала работы с GLSL - зайти в Окне Свойств в раздел "Render" и на панели "Shading" переключить режим отрисовки с "Multitexture" в "GLSL". Теперь все готово для использование возможностей технологии GLSL в Игровом Движке. Не все возможности текстур и затенений доступны на данный момент в GLSL, но эта технология находится в постоянном развитии. Как уже упоминалось ранее, мы будем использовать лишь часть из всех возможностей.

Добавление Текстур:

Для добавления текстуры для использования в Игровом Движке совместно с GLSL вам сначало понадобиться добавить Материал, а затем уже Текстуру, как вы это делали ранее для обычных анимационных роликов. В моем примере я создал плоскость для имитации земли и поместил на нее куб. Для плоскости я создал материал и добавил текстуру с изображением камня. Изначально камни выглядили слишком крупно и для настройки я использовал йункцию Повторения (Repeat) в разделе Texture. Вы не можете использовать обычную функцию "Repeat X,Y" с панели "Image Sampling". Для этой операции воспользуйтесь инструментами с панели Mapping.


С кубом ситуация была немного более сложной. По умолчанию, текстура проецируется на куб в режиме "Flat" и GLSL на данный момент не поддерживает переключение в режим проэкции "Cube". Мне пришлось воспользоваться техникой, использованной нами в разделе о "Наложении UV-Текстур".
Мне пришлось сделать развертку и настроить наложение текстуры для каждой грани по отдельности.
При использовании этого метода не забудьте в разделе Texture переключить режим с "Mapping" на "UV".


Одной из замечательных возможностей GLSL является возможность использовать параметр "Normal Geometry" для придания текстуре некоторого объема. Текстура будет выглядеть еще лучше при использовании более высокого значения параметра "Specular".

Тени в GLSL:

Еще одной замечательной возможностью технологии GLSL является возможность объектов отбрасывать тени в Игровом Движке. На данный момент технология просчета-лучей не поддерживается, для получения нужного эффекта потребуется воспользоваться традиционной технологией - лампой Spotlight и режимом Buffer Shadow (за более подробной информацией по этой технологии обратитесь к главе 6: Освещение).


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

Настройки окружения:

Многие параметры окружения, доступные в режиме "Multi-texture" будут работать и в режиме "GLSL Shading". Но некоторые из них в GLSL будут настраиваться несколько по другому, как например эффект "Mist" (Туман). С помощью этого эффекта вы можете добавить туман в свою игру, но настройки нужно будет сделать несколько иначе. Настройки цвета Горизонта и Зенита так же отличаются от случая использования стандартного рендера и традиционных материалов и текстур.

Практическое задание: Использование тексту в Игровом Движке

Личные инструменты