Настройка материалов (текстуры)


На данный момент, Hydra в текстурных картах умеет хранить следующие параметры материала:

  • emissive
  • diffuse
  • specular
  • reflection
  • transparency
  • bump
    • normalmap
    • displacement

Bumpmapping рассматривается отдельно.


Рисунок 1. Демонстрация текстур.

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


 <diffuse>
   <color sid="diffuse">0.5 0.5 0.5 1.000000</color>
   <radiance> 1.000000 </radiance>
   <texture> ../additional_textures/masonry-wall-texture.jpg </texture>
 </diffuse>


Путь может быть указан относительно основного файла (.dae либо .max), или абсолютный (на вашей локальной машине). При рассчете изображения для любого параметра материала, для которого задана текстура, Hydra будет вычислять значение этого параметра как произведение значения из текстуры и значения, указанного в самом материале. Например, для описанного в примере материала диффузная компонента будет равна покомпонентному произведению (0.5, 0.5, 0.5) и значения пришедшего из текстуры. Поэтому, если вы хотите, чтобы значение diffuse (для примера) было в точности равно тому значению, которое хранится в текстуре, устанавливайте значения сооветствующей компоненты в 1, как в следующем примере:


<diffuse>
  <color sid="diffuse">1.0 1.0 1.0 1.000000</color>
  <radiance> 1.000000 </radiance>
  <texture> ../additional_textures/masonry-wall-texture.jpg </texture>
</diffuse>


Displacement mapping

Отдельно следует рассмотреть применение карт смещений (bump maps). За карты смещений отвечает тэг displacement.


<displacement>
  <height>0.005</height>
  <height_texture>  images/Infinite-Level_02_Disp_NoSmoothUV.tif </height_texture>
  <normals_texture> images/Infinite-Level_02_Tangent_NoSmoothUV.jpg </normals_texture>
  <shadows> 0 </shadows>
  <invert_height> 1  </invert_height>
</displacement>


Параметр height отвечает за высоту смещения. В абсолютных значениях, так что в зависимости от размера объекта вам скорее всего придется этот параметр подкручивать. Важный момент, displacement вдавливается в модель. То есть height говорит, насколько сильно смещение уходит под поверхность. При этом, если параметр height_texture равен 0, но текстура bump задана, для визуализации будет использован простой алгоритм "bump mapping" называемый иногда "normal-mapping". Если параметр height нулю не равен, для визуализации используется алгоритм "parallax occlusion mapping", дающий более реалистичный результат (в особенности при больших углах наклона камеры по отношению к поверхности). Bump mapping (normal mapping) работает немного быстрее, чем parallax occlusion mapping, хотя эта разница не очень ощутима. Bump mapping следует в основном использовать тогда, когда вы намеренно хотите создать иллюзию именно микрорельефа, а не реального рельефа со смещением.

 

Параметр height_texture указывает на текстуру, хранящую сам displacement, т.е. это и есть bump текстура.

 

Параметр normals_texture указывает на карту нормалей для соответствующей bump текстуры. Если текстура с картой нормалей не указана, она будет рассчитана рендером самостоятельно и сохранена в директории где находится текстура под именем your_texture_normalmap_calculated.png, где your_texture - имя файла вашей текстуры.

Например, если ваша текстура называлась "rockwall_height.dds", то рассчитанный normalmap будет называться "rockwall_height.dds_normalmap_calculated.png". Для больших текстур рассчет нормалмапов может занять ощутимое (в пределах нескольких секунд) время, т.к. в данный момент этот рассчет выполняется на CPU. По этой причине Hydra сохраняет рассчитанные нормалмапы в файлах и при повторном рендеринге загружает их оттуда, а не считает заново. Hydra отслеживает дату последней модификации файла, однако, если вы измелили bump текстуру, и у вас по какой-то причине результат выглядит не так как ожидается, возможно имеет смысл удалить соответствующий "_normalmap_calculated.png" файл, чтобы заставить рендер перерасчитать нормалмап.

 

Параметр shadows должен быть равер 1 или 0. Он указывает, необходимо ли рассчитывать самозатенение от геометри, находящейся в карте смещений.

Рисунок 2. Демонстрация параметра shadows=1 (на кубике).

Последний параметр invert_height указывает, нужно ли инвертировать данные в текстуре - соответственно для смещения. Необходимость в наличии этих параметров связана с тем, что в различных системах создания bump карт, могут использоваться разные системы координат. Например, кто-то хранит 'смещение', а кто-то '1-смещение'. invert_height будет трактовать "смещение" как "1-смещение". Для большинства bump карт этот параметр должен быть равен 1. 




<< Вернуться назад

Статьи и обзоры

Поиск пересечений

Обратная трассировка лучей

Быстрая трассировка лучей

Индустриальная основа

Фотореалистичная визуализация

GPU ray tracing

Сферические гармоники

Дружественные проекты:

OpenSource RTRT

Siberian renderer

Наши разработки

Hydra renderer

AdaRT

Публикации

Загрузить

Скриншоты и видео

ССЫЛКИ

© Copyright 2007 Владимир Фролов, Александр Фролов

При поддержке Лаборатории компьтерной графики и мультимедия ф-та ВМК МГУ
Создание сайта: Александр Фролов