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

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску

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

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


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


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

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

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

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


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


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

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

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


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


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

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

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

GLSL Затенение

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


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


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

200px

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

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


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


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

250px

Тени в GLSL:

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


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

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

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

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