Справка по инструменту Polybump

Материал из CryWiki Russia

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

Содержание

Справка по инструменты Polybump

Этот документ содержит подробную информацию о настройках и параметрах инструмента Crytek Polybump, доступного в качестве плагина для 3ds Max или автономной версии.

Окно «Computation Settings» (Настройки вычисления)

Находится в меню Document -> Computation settings. В этом окне вы можете указать входные сетки и некоторые дополнительные настройки, необходимые для Polybump-вычислений, такие как размер и качество.

AssetCreation PolyBumpReference image001.jpg
Рисунок 1. Окно «Computation Settings».


1. Низкополигональный файл
Чтобы указать низкополигональные объекты, которые должны получить данные высокополигонального объекта(ов) необходимо указать имя файла (в Alias формата Wavefront OBJ).
2. Высокополигональные файлы
Указывает один или несколько высокополигональных OBJ. Использование нескольких высокополигональных сеток полезно, если вам нужно разделять вашу сетку с высоким разрешением (то есть персонаж) на несколько частей тела по причине рабочего процесса. Убедитесь, что все эти разделённые части имеют одинаковую позицию точки опоры (Pivot) в 3D-приложения и что не имеют преобразований, применённых к ним. Если необходимо, используйте «Reset X-Form» в 3ds Max или «Freeze all Transformations» в XSI.
3. Галочка «Smooth»
Активация галочки «Smooth» (Сглаживание) усреднит вершины всех нормалей в сетке, создавая иллюзию гладкого затенения. При использовании сетки экспортированной из 3ds Max, этот параметр не нужен, так как группы сглаживания будут сохранены. Такие приложения, как ZBrush, экспортируют сетки с «жёстким» рёбрами или с затенёнными гранями, в этом случае, функция будет полезной. Однако, такое вычисление требует некоторого числа памяти и дополнительных вычислений во время загрузки, что не требуется, если объект очень тесселирован, то есть сильно мозаичный. По умолчанию эта опция является наиболее хорошо работает с высокополигональными сетками. Если ваша высокополигональная сетка имеет небольшое число тесселированных областей, то, есть смысл активировать эту функцию.
4. Клеточный файл
Здесь вы можете указать дополнительную клеточную сетки, которая будет использована при вычислении. Использование клеток рекомендуется, когда у вашей модели есть мелкие складки и пробелы, которые вызывают падение лучей с низкополигональной сетки на высокополигональную сетку противоположной поверхности сетки (см. ниже), создавая ошибки рендеринга. Это может произойти, например, на сетке руки в ямах между пальцами. Можно просто добавить несколько прямоугольников между пальцами, чтобы избежать ошибки рендеринга, так как они блокируют лучи от попадание на соседние пальцы и тем самым избегают попадания на низкополигональную сетку.
AssetCreation PolyBumpReference image002.jpg
Рисунок 2.


AssetCreation PolyBumpReference image003.jpg
Рисунок 3.


5. Раздел «Rayshooting» («Выстрел» луча) влияет на детальные настройки алгоритма Polybump.
  • Режимы (Mode): Последний (Latest), Ближайший (Nearest)
Этот параметр определяет режим пересечения для алгоритма метода «бросания лучей» (Ray casting). Алгоритм «стреляет» лучами с определенной длиной (см. ниже) от низкополигональной сетки в оба направления, и наружу и внутрь, вдоль поверхности нормалей. Луч, в конечном счёте, ударит по высокополигональной сетке, и нормали поверхности, в этой точке, отрендерируются в текстуру с определенным цветом. Если высокополигональная сетка, не только однородная поверхность, но состоит из нескольких элементов (например, пояс вокруг талии персонажа), то луч будет ударять по высокополигональной сетке в нескольких точках. Режим «Высочайший/Последний» определяет, какие точки в конечном счёте будут использоваться для расчета. Как правило, «последний» даст лучшие результаты, так как вы, скорее всего, хотите включить в рендеринг верхнюю часть сетки (как и в поясе, к примеру). Кроме того, он выбран по умолчанию.
  • Длина луча (Ray length): % от размера низкополигональной сетки.
Это параметр указывает длину «выстреленных» лучей. Если лучи слишком коротки, то они могут не достичь важных элементов высокогополигональной сетки и даст неверный результат, но чем длинней лучи, тем выше риск столкнуться с другой точкой высокогополигональной сетки, например, в мелких складках, или в ямках между пальцами. Чтобы избежать этих проблем, может быть использована клеточная сетка (рисунок 4). Длина луча — это 10% от диаметра ограничивающей сферы.
AssetCreation PolyBumpReference image004.jpg
Рисунок 4. Клеточная сетка.


AssetCreation PolyBumpReference image005.jpg
Рисунок 5.


AssetCreation PolyBumpReference image006.jpg
Рисунок 6.


AssetCreation PolyBumpReference image007.jpg
Рисунок 7. «Use nearest hit» c 2%


AssetCreation PolyBumpReference image008.jpg
Рисунок 8. «Use nearest hit» c 5%


AssetCreation PolyBumpReference image009.jpg
Рисунок 9. «Use nearest hit» c 50%


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

  • Горизонт (Horizon): Низкий (Low), Средний (Med), Высокий (High)
Если вы включите этот параметр, то Polybump высчитает карту горизонта, которая может быть использована в качестве источника для различных выводов (например, карта доступности, направление неокклюдированной области, возможное использования в будущем: сферическая гармоника).
Карта горизонта существенно улучшает окклюзию окружения, при этом высокогополигональная сетка проецируется с низкополигональной сеткой, а затем будет бейкинг в текстуру. Вы можете сделать его либо низким, средним или высоким, чтобы определить качество. Чем выше качество, тем больше будет длиться вычисление. Этот параметр имеет наиболее существенное влияние на время вычисление, так что низкое качество должно быть использованы для тестирования и устранения неисправностей, а высокое качество только для финального рендеринга. Установка в этом параметре значения «none» означает, что карта горизонта не будет отрендерина. Обратите внимание, что параметр длины луча также влияет на рендеринг карты горизонта. Использование коротких лучей даст более высоко-контрастную карту окклюзии, с видимым потемнением только в жестких складках, а использование длинных лучей даст очень «мягкое» затенение, где даже в небольших ямках поверхность станет темнее. Однако, использование очень высокой длины лучей, также означает увеличение времени рендеринга.
  • Сглаживание (Anti-aliasing): Отсутствует (none), Селективное 2x2 (Selective 2x2), Селективное 3x3 (Selective 3x3), Полное 2x2 (full 2x2), Полное 2x2 (full 3x3)
Включение сглаживания улучшит качество текстур, но увеличит в разы время вычисления. Полное сглаживание даёт более лучшее качество, чем селективное сглаживание, но это также потребует больше времени вычисления.
6. Вывод (Output)
Определяет размеры текстуры.
7. Предпросмотр (Preview)
Этот раздел позволяет просмотреть объекты, которые вы выбрали для вычислений.
Низкополигональная сетка будет отрендрирована в белом цвете, а высокополигональная сетка в черном цвете. Если есть клеточная сетка, то она будет отрендрирована в красном цвете. Вы должны использовать этот режим просмотра, чтобы проверить, правильно ли выровнены объекты и одинаковые ли их позиции, это особенно важно при использовании OBJ-файлов экспортированных из Zbrush или XSI. Если все правильно, то вы увидете объекты перекрывающие друг друга, как здесь:
AssetCreation PolyBumpReference image010.jpg
Рисунок 10. Предпросмотр.


Настройки экспорта

AssetCreation PolyBumpReference image011.jpg
Рисунок 11. Окно настроек экспорта.


Это диалоговое окно открывается при выборе «Document->Export data».

Доступные параметры:

  • Карта нормалей (Normal Map) (1)
Формат текстурной карты, как правило, 8-битный RGB без альфа-канала.
  • Уменьшение размера (Reduce Resolution) (2)
Размер окончательной текстуры, в отношении размера исходной карты Polybump.
AssetCreation PolyBumpReference image012.jpg
Рисунок 12. Уменьшение размера.


Пункт «0 (no change)» означает соотношение 1:1, окончательная текстура будет такой большой, какой вы её изначально указали в Polybump. «1» означает маленькую текстуру, -1 означает большую текстуру, и так далее.

  • Расширение контура (Expand border) (3)
Если включено, то Polybump «размажет» контур объектов в текстуре, вне их UV-оболочек, чтобы сохранить швы из получаемой модели в окончательной игровой модели. Использование этой функции рекомендуется, если вы увидите швы и неточности в MIP-текстурировании.
AssetCreation PolyBumpReference image013.jpg
Рисунок 13. Расширение контура.


Вы может выбрать: без расширения, 1,4,8, или 16-пиксельное расширение.

AssetCreation PolyBumpReference image014.jpg
Рисунок 14. Отсутствие расширения.


AssetCreation PolyBumpReference image015.jpg
Рисунок 15. 16-пиксельное расширение.


  • Преобразовать векторы в касательное/объектное пространство (Transform Vectors to Tangent/Object Space) (4)
Этот параметр определяет окончательный «формат» карты нормалей. Большинство игровых движков (в том числе CryENGINE2) используют касательное пространство карты нормалей, так что эту настройку рекомендуется использовать. Объектное пространство означает, что нормали кодируются в абсолютном пространстве мира, что означает, что объекты использующие эти карты нормалей не смогут иметь трансформацию, применённую к ним, или освещение будет выглядеть не так, как надо. Однако, они немного ускоряют процесс, но вряд ли движок игры использует абсолютное пространстве мира карт нормалей.

Есть много возможностей вычислить матрицу касательного пространства на вершину и, какое вычисление необходимо для реконструкции нормалей в шейдерах при рендеринге низкополигональной модели.Чтобы избежать искажение такого вычисления, то должно быть использовано преобразование нормалей абсолютного пространства мира в касательное пространство (экспорт в .ОСР). Справочный документ:

Вычисление треугольной сетки касательного пространства
Мартин Миттринг, ShaderX4, 2006

Высококачественные нормали в объектном/мировом пространстве существуют в .SRF-файле и могут быть извлечены и, возможно, преобразованы в другое пространство.

  • Данные горизонта (Horizon data) (5)
Если вы высчитываете карту горизонта, вы можете выбрать, как экспортировать в той или иной форме. Если эти флажки неактивны, вы не высчитываете карту, и вам необходимо вернуться к настройка вычисления, и включить это.Если вы отметите параметр доступность (Accessibility), то Polybump создаст файл _ACC.TIF содержащий черно-белую карту горизонта. Вы можете использовать эту карту для дальнейшей работы с текстурой, например, как наложение над диффузной текстурой для имитации грязи или окклюзии окружения, или вы можете просто положить его в слот диффузной текстуры вашего окончательного ассета, чтобы получить типичные вид «купола освещения».
Если вы отметите параметры направления неокклюдированной области (Unoccluded Area Direction), то Polybump создаст файл _DDNDIFF.TIF содержащих карту нормалей с бейкированной картой горизонта. Даст тот же эффект, что и обычные карты нормалей в сочетании с ACC-картой в диффузном слоте, однако она кодирует угол открывания неокклюдированного конуса, что позволяет выделить какие-то мягкие тени высокополигональных деталей. Окклюзия окружения будет реагировать на влияние света более правильно и окклюзия окружения исчезнет там, где свет попадает напрямую. Простой бейкинг окклюзии окружения в диффузной текстура может выглядеть как грязь, даже остаётся непосредственное потемнение. _DDNDIF требует достаточно много дополнительной текстурной памяти (_DDN также требуется) и включение функции должно быть тщательно обдумано.

Если текстура _DDNDIFF присутствует в каталоге материала и других текстур, и вы указали обычную текстуру _DDN в слоте карты нормалей вашего материала, то CryENGINE2 автоматически выберет текстуру _DDNDIFF для передовой техники рендеринга, при условии, что текстура имеет тот же префикс (например: boots_DDN.tif и boots_DDNDIFF.tif).

  • Искажение (Displacement) (6)
При выборе линейного подписания (Linear Signed), Polybump будет включать в себя карты смещения в альфа-канале карты нормалей.

Фаска рёбер (Chamfering Edges)

Здесь подробно разъяснено о том, как воспроизвести гладкую фаску в высокополигональной сетке с нормальным маппингом низкополигональной сетки. Следующие диаграммы представляют высокополигьнальную сетку с закругленным углом и соответствующая низкополигональная сетка, в разрезанном виде сбоку:

AssetCreation PolyBumpReference image016.jpg
Рисунок 16.


Пример 1

Низкополигональная сетка с рёбрами без фаски, со скошенными краями и с отдельной группой сглаживания. Нормали перпендикулярны полигонам на всей поверхности. Рёбра точно захвачены (см. точки пересечения), но только тогда, когда ребро низкополигональной сетки касается высокополигональной сетки, где происходит наклон. Даже тогда, когда фаска округлена, она не точно представлена в связи с внезапным изменением ориентации нормалей (см. острое ребро в текстуре):

AssetCreation PolyBumpReference image017.jpg

AssetCreation PolyBumpReference image018.jpg
Рисунок 17 и 18. Пример 1.


AssetCreation PolyBumpReference image019.jpg
Рисунок 19.


Пример 2

Низкополигональная сетка с рёбрами без фаски и с отдельной группой сглаживания. Рёбра находятся в «мертвой зоны», они не захвачены, потому что низкополигональная сетка находится слишком далеко от высокополигональной сетки. Обратите внимание, как рёбра/углы видны почти на 100% точно в окне рендера:

AssetCreation PolyBumpReference image020.jpg

AssetCreation PolyBumpReference image021.jpg
Рисунок 20 и 21. Пример 2.


Как правило, острые края производят плохие результаты, особенно при не позиционированной низкополигональной сетке, так угол низкополигональной сетки непосредственно затрагивает высокополигональную сетку.

AssetCreation PolyBumpReference image022.jpg
Рисунок 22.


Пример 3

Низкополигональная сетка с рёбрами без фаски и с единой группой сглаживания. Нормали усредненны по всей поверхности, они постепенно интерполируют перпендикулярно поверхности (вверху) до 45 градусов по углу. В результате в карте нормалей градиент, а округлые рёбра представлены ​​точно. Использование этого метода достаточно для представления закругленных рёбер и даже углов, однако он не выполняется, если окончательная сетка рассматривается в крайнем углу (см. нижний рисунок).

AssetCreation PolyBumpReference image023.jpg

AssetCreation PolyBumpReference image024.jpg
|
AssetCreation PolyBumpReference image025.jpg
Рисунок 23, 24 и 25. Пример 3.


AssetCreation PolyBumpReference image026.jpg
Рисунок 26.


Пример 4

1-сегментная сетка с единой группой сглаживания (или сглаженными рёбрами). Нормали остаются перпендикулярны к поверхности, не далеко от наклона, что приводит к более мягкому градиенту в карте нормалей, и лучи попадают на высокополигональную сетку с менее острым углом, чем с описанным выше способом (сравните диаграммы), что приводит к менее ярким цветам в карте нормалей. Окончательный результат немного лучше по сравнению с рёбрами без фаски, однако наиболее значительное улучшение видно при взгляде на него с крайнего угла (см. нижний рисунок).

AssetCreation PolyBumpReference image027.jpg

AssetCreation PolyBumpReference image028.jpg
|
AssetCreation PolyBumpReference image029.jpg
Рисунок 27, 28 и 29. Пример 4.


AssetCreation PolyBumpReference image030.jpg
Рисунок 30.


Низкополигональная сетка с соответствующими картами нормалей в 3ds Max: Без фаски — слева, двух-сегментная фаска — справа.

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