Guest3d.wohlnet.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
2.04: Виртуальная студия: Свойства поверхности

Большая часть внешнего вида 3D объектов сцены определяется свойствами их поверхностей. Этот раздел приоткроет завесу над текстурными картами, текстурированием, методами сглаживания и прозрачностью.

Текстуры (Textures)
Текстура - это изоображение, которое может быть натянуто на 3D форму. В графике реального времени, по причинам соблюдения быстродействия, их размеры в пикселях (ширина и высота) должны быть кратны степени 2. В Quest3D, они также должны быть больше 8. Размеры 32x32, 128x256 и 256x256 пикселей являются правильными.

Большие размеры означают увеличение размеров файлов, а также повышение потребления памяти. Даже несмотря на то, что современная графическая аппаратура может иметь 64, 128 или даже 256 Mб текстурной памяти, неразумное использование тестур может вызвать проблемы. В то время, как ‘.jpg’ изображение с размерами 2048x2048 пикселей занимает всего около 40 кб дискового пространства, оно занимает около 8 Mб текстурной памяти.

Рекомендуется придерживаться размеров текстуры настолько малых, насколько это возможно, без потери деталей. Хорошим правилом можно считать использование размеров текстуры не более, чем она будет видимой на экране. Например, для зданий, расположенных на расстоянии, 128x128 пикселей может быть достаточно. Плоскости травы вряд ли должны быть больше 32x32.

Сжатие (Compression)
В дополнение, текстуры в Quest3D могут быть сжаты. Качество изображения может быть немного снижено, но сжатые текстуры могут потерблять в четыре раза меньше памяти по сравнению с несжатыми версиями. Создание 3D сцены постоянно балансирует межды качеством и производительностью.

Мипмеппинг (Mipmaps)
Большие текстуры на удаленных поверхностях могут создавать артефакты.

Используя различные версии изображения, уменьшая его размер, эти искажения могут быть побеждены. Эти меньшие версии текстуры называются ‘mipmaps’ и могут быть созданы Quest3D автоматически.

Использование мипмеппинга на плоскости изображения снизу привело к следующим результатам.

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

Файловый формат .dds
Формат изображений ‘.dds’ может хранить информацию о мипмеп картах. Размер файла увеличивается, но время загрузки в Quest3D уменьшается, так как не нужно генерировать мипмеп при запуске.

‘.dds’ плагин для Photoshop сопровождает Quest3D. Чтобы установить его, из меню Пуск выберите Все Программы > Act-3D > Quest 3D 3.0 > Extras > Exporters > Photoshop > DDS file. Убедитесь, что устанавливаете утилиту в подкаталог ‘Plug-Ins’ папки Photoshop на вашем жестком диске.

UV Меппинг (UV Mapping)
Текстуры накладываются на 3D объекты согласно так называемым наборам UV координат ‘UV coordinate sets’. UV координаты определяют, где на поверхности модели должен прорисоваться каждый пиксель.

Quest3D может управлять простыми методами ‘UV меппинга’, такими, как планарный (planar) и кубический (cubic), показанными ниже. Эти простые типы UV меппинга могут быть перемещаемы и масштабируемы.

UV координаты располагаются в диапазоне от 0 до 1.0. (0, 0) - это верхний левый угол изображения, в то время как (1.0, 1.0) - нижний правый угол.

Так как UV координаты относительны, как только на объект правильно наложена UV карта, текстуры любых размеров могут быть применены к объекту.

Натягивание текстуры на 3D объект обычно требует высокого контроля и точности. На практике, UV меппинг означает расположение каждой вершины 3D объекта на 2D изображении.

Сложный UV меппинг должен быть выполнен в вашем рабочем пакете 3D моделирования. Пожалуйста, обратитесь к руководству вашего пакета моделирования для дополнительной информации по UV меппингу. Ключевые слова: ‘uv’, ‘unwrap’, ‘texture’, ‘mapping’.

Продвинутая форма UV меппинга в Quest3D - это метод карты отражения ‘Reflection map’. Он проецирует текстуру на поверхность, отталкиваясь от текущего расположения камеры. Иозбражение ниже показывает объект с картой отражений, расположенный под разными углами, а также саму текстуру отражения.

Прозрачность (Transparency)
Прозрачность поверхности пожмет быть достигнута различными способами. В Объектной Секции, в закладке поверхностей ‘Surface’, выпадающий список прозрачности ‘Transparency’ предоставляет ряд опций.

Верхний ряд на изображении ниже показывает следующие методы прозрачности, по порядку: ‘No Transparency’ (Нет прозрачности), ‘Multiply’ (Умножение) и ‘Add’ (Добавление). Нижний ряд показывает ‘Add Smooth’ (Сглаженное Добавление), ‘Alpha Value’ (Значение Альфа) и ‘Alpha Texture’ (Текстура Альфа).

‘Multiply’ (Умножение) может быть использован для темных окон или теней, к примеру. ‘Add’ (Добавление) создает эффект свечения. ‘Add Smooth’ (Сглаженное Добавление) - более легкая версия. ‘Alpha Value’ (Значение Альфа) делает поверхность прозрачной от 0% до 100%. ‘Alpha Texture’ (Текстура Альфа) используется для точного задания прозрачности.

Текстурные стадии (Texture stages)
Поверхности может быть назначено более одной текстуры. Максимальное количество текстурных стадий (‘texture stages’), которые могут быть применены к поверхности, зависит от графической карты. Большинство графических карт поддерживает две стадии, но новые карты поддерживают три или четыре. Глава 10, ‘Ландшафты’, обсуждает продвинутые методы смешивания, операясь на множественные проходы визуализации.

Различные стадии текстуры могут быть смешаны друг с другом рядом способов. В Объектном Разделе, в закладке ‘Surface’, выпадающий список смешивания текстур ‘Texture Blending’ предоставляет ряд опций. Они подобны опциям в выпадающем списке прозрачности ‘Transparency’, обсуждаемом выше.

Ряд на изображении ниже показывает три исходных текстуры: стадия 1, стадия 2 и альфа карта. Нижний ряд показывает следующие типы смешивания, по порядку: ‘Multiply’ (Умножение), ‘Add’ (Добавление), ‘Alpha Value’ (50%) (Значение Альфа) и ‘Alpha Texture’ (Текстура Альфа).

Настройка ‘Multiply’ (Умножение), обычно приводит к темным цветам. ‘Add’ (Добавление) приводит к более светлым цветам. ‘Alpha Value’ (Значение Альфа) смешивает две стадии от 0 до 1 (от 0% до 100%). ‘Alpha Texture’ (Текстура Альфа) используется для точного определения сглаживания.

Наборы UV (UV sets)
Поверхность может иметь более одного набора UV координат. Максимальное количество наборов UV зависит от графической карты. Большинство карт поддерживает до двух наборов. Смешивание текстурных стадий с отдельными UV координатами может быть выполнено для маскировки повторений. В дополнение, такие эффекты, как световые карты нуждаются в отдельных наборах.

Изображение ниже показывает две текстурных стадии, каждая со своей собственной uv картой. Результат смешивания показан справа.

Сортировка объектов (Object sorting)
При визуализации сцены, Quest3D автоматически сортирует все поверхности для их отображения в правильном порядке. Иногда, особенно при работе с прозрачными объектами, поверхности могут сортироваться неправильно. В этом случае, часть поверхности или вся поверхность визуализируются позади или через другую поверхность, в то время, как должна распологаться перед.

Для избежания возникающих мерцания и наложения, в целом, прозрачные поверхности должны визуализироваться после непрозрачных. Другими словами, необходимо активировать счетчик сортировки поверхностей по ‘Z Bias’ (смещение по оси Z). Эта настройка может быть изменена в Объектной Секции, в закладке ‘Surface’, в продвинутом режиме ‘Advanced..’. Когда порядок визуализации поверхностей будет нечистым, поверхности с более высоким значением смещения по оси Z (Z Bias) будут визуализироваться поверх остальных.

Поверхности с изображения выше теперь отрендерены в правильном порядке, как показано на следующей картинке.

Альфа артифакты (Alpha artifacts)
Альфа текстуры, используемые для прозрачности иногда могут вызывать нежелаемые результаты.

Пиксели, которые должны быть прозрачными, могут быть выдернуты настройкой ‘Reject Alpha Pixels’ (Отказ от альфа пикселей). Она может быть настроена в Объектном Разделе, в закладке ‘Surface’, в режиме ‘Advanced..’. Значение ‘Ref’ определяет порог для выброса нежелаемых пикселей.

Изображение ниже показывает оттекстурированную поверхность с правильной прозрачностью альфа.

Урок
Этот урок имеет дело с текстурами, прозрачностью, методами смешивания и сортировкой поверхностей. В конце данной главы вы должны научиться работать с текстурами в Quest3D.

Необходимая сцена Quest3D:
..\Tutorials\2.4 – Surface properties\Surface properties.cgr
Необходимые текстуры:
..\Resources\Textures\Architecture\Buildings_128.jpg
..\Resources\Textures\Landscapes\Grass.jpg
..\Resources\Textures\Reflection\Reflection_1.jpg
Шаг за шагом:

  • Откройте сцену ‘Surface properties.cgr’. Она содержит дорогу через сельскую местность, несколько зданий на заднем фоне, ряд деревьев и припаркованную машину.
  • Перейдите в Объектный Раздел (Object Section).
  • Нажмите на закладку анимации ‘Animation 3D View’, чтобы выбрать ее.
  • Убедитесь, что вид Animation 3D View отображает сцену с помощью камеры проекта (Project Camera).
  • С данной обзорной позиции изучите здания на заднем фоне. Обратите внимание, что они довольно малы по сравнению со всем остальным на экране.
  • Нажмите на объект ‘Buildings’ в списке, чтобы выбрать его.
  • В закладке ‘Textures’ в правой части экрана, найдите подсвеченную текстуру ‘Buildings_1024.jpg’. Дважды щелкните на нее, чтобы открыть окно свойств.
  • В окне настроек текстуры, обратите внимание, отображены ее размеры и потребляемая память.
  • Нажмите кнопку загрузки ‘Load’ и перейдите в папку ‘..\Resources\Textures\Buildings\’. Выберите файл ‘Buildings_128.jpg’ и нажмите ‘Open’. Новое изображение отобразится в окне предварительного просмотра. Обратите внимание на новые размеры и потребление памяти. Нажмите ‘OK’, чтобы закрыть окно текстуры.
  • Повторно изучите здания на заднем плане. Обратите внимание на то, что их текстуры все еще слишком остры. Снижение размеров текстуры в целях повышения производительности в данном случае не привело к понижению качества.
  • Переключитесь на камеру редактора (Editor Camera), нажав на ее иконку.
  • Посмотрите на ландшафт сверху. Обратите внимание на то, что зеленая поверхность нуждается в текстуре.
  • Нажмите на объект ‘Landscape’ в списке, чтобы выбрать его.
  • Нажмите на поверхность ‘Landscape’ в списке (surface), чтобы выделить ее.
  • В закладке ‘Textures’ в правой части экрана, нажмите кнопку ‘Load’, чтобы загрузить новую текстуру. Перейдите в папку ‘..\Resources\Textures\Landscapes\’.. Выберите файл ‘Grass.jpg” и нажмите ‘Open’. Нажмите ‘OK’, чтобы закрыть окно текстуры. Убедитесь, что ‘Texture Channelgroup’ выставлена на ‘Surface properties’.
  • Нажмите на новую текстуру, чтобы применить ее к поверхности травы объекта ‘Landscape’. Обратите внимание, что текстура растянулась по все поверхности ландшафта.
  • В закладке текстурных стадий ‘Textures Stages’ в левой части экрана, из выпадающего списка ‘Mapping’, выберите ‘Planar Y’. Обратите нимание, что теперь текстура спроецирована на поверхность по вертикальной оси.
  • Потяните кнопку масштабирования ‘Scale’, чтобы изменить повторность (tiling). Обратите внимание на то, как изменяется внешний вид поверхности.
  • Введите ‘20’ для значений ‘U’ и ‘V’ в боксах, рядом с кнопкой ‘Scale’, для точного задания повторности (tiling).
  • Нажмите на иконку для отображения сцены с помощью камеры проекта (Project Camera).

  • В закладке ‘Textures’ в правой части экрана, найдите подсвеченную текстуру ‘Grass.jpg’ и дважды щелкните по ней. В окне настроек, обратите внимание, значение количества мипмепа (MipMap Count) на данный момент ‘All’ (Все); при этой настройке Quest3D автоматически решает, как много уровней мипмепа необходимо. Смените настройку на ‘None’ (Отсутствие) и нажмите ‘Apply’, изучите разницу. Верните снова на all и нажмите кнопку ‘OK’ для закрытия окна текстуры.
  • Нажмите на иконку, чтобы отобразить сцену через камеру редактора (Editor Camera).
  • В списке объектов (Objects List) в нижнем правом углу экрана, нажмите на объект ‘Car’, чтобы выбрать его.
  • В списке поверхностей (Surfaces List), в нижней части экрана, нажмите на поверхность ‘Chassis’, чтобы выделить ее.
  • В закладке текстурных стадий ‘Texture Stages’ в правой части экрана, нажмите на закладку ‘Stage 2’.
  • В закладке ‘Textures’ в правой части экрана, нажмите кнопку ‘Load’ для загрузки новой текстуры. Перейдите в папку ‘..\Resources\Textures\Reflection\’. Выберите файл ‘Reflection.jpg” и нажмите ‘Open’. Нажмите ‘OK’ для закрытия окна текстуры.
  • Нажмите на новую текстуру, чтобы применить ее к поверхности ‘Chassis’ объекта ‘Sports Car’. Обратите внимание, что текстура растянулась по машине.
  • В закладке ‘Texture’, в левой части экрана, из выпадающего списка ‘Mapping’, выберите карту отражений ‘Reflection map (CamReflvec)’. Обратите внимание, как это повлияло на UV меппинг.
  • Облетите камерой редактора (Editor Camera) вокруг машины. Обратите внимание, как это влияет на UV меппинг.
  • В закладке ‘Surface’, из выпадающего списка смешивания текстур ‘Texture Blending’ выберите значение альфа ‘Alpha Value’.
  • В закладке настроек ‘Properties’, перетяните слайдер ‘Texture factor’ на ‘0.92’. Обратите внимание, что стадия отражения смешалась с диффузной текстурой под ней.
  • Облетите машину. Изучите эффект отражения. Если необходимо, подстройте слайдер ‘Texture Factor’ для изменения баланса смешивания.
  • Нажмите на поверхность ‘Windows’ (surface) в списке, чтобы выделить ее.
  • В закладке ‘Surface’, из выпадающего списка прозрачности ‘Transparency’, выберите ‘Multiply’ (Умножение). Обратите внимание, что окна машины стали прозрачными и более темными.
  • Из выпадающего списка прозрачности ‘Transparency’, выберите ‘Add’ (Добавить). Обратите внимание на то, как окна машины стали прозрачными и более светлыми, почти светящимися.
  • Из выпадающего списка прозрачности ‘Transparency’, выберите ‘Alpha Value’ (Значение Альфа). Обратите внимание на то, что окна машины стали полностью прозрачными.
  • В закладке настроек ‘Properties’, перетяните слайдер ‘Alpha’ на значение ‘0.5’. Обратите внимание на то, что окна машины стали прозрачными на 50%.

  • Изучите деревья в сцене. Обратите внимание на прямоугольные поверхности вокруг их листьев, которые должны быть прозрачными.
  • Нажмите на объект ‘Trees’ в списке, чтобы выделить его.
  • Нажмите на поверхность ‘Leaves’ в списке, чтобы выделить ее.
  • В закладке ‘Surface’, из выпадающего списка ‘Transparency’ выберите ‘Alpha Texture’. Обратите внимание, что прямоугольники вокруг листьев стали более прозрачными. Также обратите внимание, что все еще присутствует нежелаемый контур вокруг листьев.
  • В закладке ‘Surface’, нажмите на кнопку ‘Advanced..’.
  • Выберите ‘Reject Alpha Pixels’ и введите значение ‘150’ для ‘Ref’. Обратите внимание, что контур вокруг листьев исчез.

Законченная сцена:
..\Tutorials\2.4 – Surface properties\Surface properties – Complete.cgr

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом guest3d.wohlnet.ru. Для этого нужно написать письмо в свободной форме на den@wohlnet.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход