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

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

(Различия между версиями)
Перейти к: навигация, поиск
 
(1 промежуточная версия не показана)
Строка 1: Строка 1:
-
{{В процессе перевода|дата=6 января 2011|автор=1}}
 
== Справка по инструменты Polybump ==
== Справка по инструменты Polybump ==
-
Этот документ содержит подробную информацию о настройках и опциях инструмента Crytek Polybump, доступного в качестве плагина для 3ds Max или автономной версии.
+
Этот документ содержит подробную информацию о настройках и параметрах инструмента Crytek Polybump, доступного в качестве плагина для 3ds Max или автономной версии.
-
 
+
-
 
+
=== Окно «Computation Settings» (''Настройки вычисления'') ===
=== Окно «Computation Settings» (''Настройки вычисления'') ===
Строка 10: Строка 7:
В этом окне вы можете указать входные сетки и некоторые дополнительные настройки, необходимые для Polybump-вычислений, такие как размер и качество.
В этом окне вы можете указать входные сетки и некоторые дополнительные настройки, необходимые для Polybump-вычислений, такие как размер и качество.
-
[[Файл:AssetCreation_PolyBumpReference_image001.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image001.jpg|Рисунок 1. Окно «Computation Settings».}}
-
'''1.''' Низкополигональный файл
+
;1. Низкополигональный файл: Чтобы указать низкополигональные объекты, которые должны получить данные высокополигонального объекта(ов) необходимо указать имя файла (в Alias формата Wavefront OBJ).
-
Чтобы указать низкополигональные объекты, которые должны получить данные высокополигонального объекта(ов) необходимо указать имя файла (в Alias формата Wavefront OBJ).
+
 +
;2. Высокополигональные файлы: Указывает один или несколько высокополигональных OBJ. Использование нескольких высокополигональных сеток полезно, если вам нужно разделять вашу сетку с высоким разрешением (то есть персонаж) на несколько частей тела по причине рабочего процесса. Убедитесь, что все эти разделённые части имеют одинаковую позицию точки опоры (Pivot) в 3D-приложения и что не имеют преобразований, применённых к ним. Если необходимо, используйте «Reset X-Form» в 3ds Max или «Freeze all Transformations» в XSI.
-
'''2.''' Высокополигональные файлы
+
;3. Галочка «Smooth»: Активация галочки «Smooth» (''Сглаживание'') усреднит вершины всех нормалей в сетке, создавая иллюзию гладкого затенения. При использовании сетки экспортированной из 3ds Max, этот параметр не нужен, так как группы сглаживания будут сохранены. Такие приложения, как ZBrush, экспортируют сетки с «жёстким» рёбрами или с затенёнными гранями, в этом случае, функция будет полезной. Однако, такое вычисление требует некоторого числа памяти и дополнительных вычислений во время загрузки, что не требуется, если объект очень тесселирован, то есть сильно мозаичный. По умолчанию эта опция является наиболее хорошо работает с высокополигональными сетками. Если ваша высокополигональная сетка имеет небольшое число тесселированных областей, то, есть смысл активировать эту функцию.
-
Указывает один или несколько высокополигональных OBJ. Использование нескольких высокополигональных сеток полезно, если вам нужно разделять вашу сетку с высоким разрешением (то есть персонаж) на несколько частей тела по причине рабочего процесса. Убедитесь, что все эти разделённые части имеют одинаковую позицию точки опоры (Pivot) в 3D-приложения и что не имеют преобразований, применённых к ним. Если необходимо, используйте «Reset X-Form» в 3ds Max или «Freeze all Transformations» в XSI.
+
 +
;4. Клеточный файл: Здесь вы можете указать дополнительную клеточную сетки, которая будет использована при вычислении. Использование клеток рекомендуется, когда у вашей модели есть мелкие складки и пробелы, которые вызывают падение лучей с низкополигональной сетки на высокополигональную сетку противоположной поверхности сетки (см. ниже), создавая ошибки рендеринга. Это может произойти, например, на сетке руки в ямах между пальцами. Можно просто добавить несколько прямоугольников между пальцами, чтобы избежать ошибки рендеринга, так как они блокируют лучи от попадание на соседние пальцы и тем самым избегают попадания на низкополигональную сетку.
-
'''3.''' Активация флажка «Smooth» (''Сглаживание'') усреднит вершины всех нормалей в сетке, создавая иллюзию гладкого затенения. При использовании сетки экспортированной из 3ds Max, этот параметр не нужен, так как группы сглаживания будут сохранены. Такие приложения, как ZBrush, экспортируют сетки с «жёстким» рёбрами или с затенёнными гранями, в этом случае, функция будет полезной. Однако, такое вычисление требует некоторого числа памяти и дополнительных вычислений во время загрузки, что не требуется, если объект очень тесселирован, то есть сильно мозаичный. По умолчанию эта опция является наиболее хорошо работает с высокополигональными сетками. Если ваша высокополигональная сетка имеет небольшое число тесселированных областей, то, есть смысл активировать эту функцию.
+
{{picno|pic1=AssetCreation_PolyBumpReference_image002.jpg|Рисунок 2.}}
 +
{{picno|pic1=AssetCreation_PolyBumpReference_image003.jpg|Рисунок 3.}}
-
'''4.''' Клеточный файл
+
;5. Раздел «Rayshooting» (''«Выстрел» луча'') влияет на детальные настройки алгоритма Polybump.:
-
Здесь вы можете указать дополнительную клеточную сетки, которая будет использована при вычислении. Использование клеток рекомендуется, когда у вашей модели есть мелкие складки и пробелы, которые вызывают падение лучей с низкополигональной сетки на высокополигональную сетку противоположной поверхности сетки (см. ниже), создавая ошибки рендеринга. Это может произойти, например, на сетке руки в ямах между пальцами. Можно просто добавить несколько прямоугольников между пальцами, чтобы избежать ошибки рендеринга, так как они блокируют лучи от попадание на соседние пальцы и тем самым избегают попадания на низкополигональную сетку.
+
 +
* '''Режимы (''Mode''): Последний (''Latest''), Ближайший (''Nearest'')'''
 +
:Этот параметр определяет режим пересечения для алгоритма метода «бросания лучей» (''Ray casting''). Алгоритм «стреляет» лучами с определенной длиной (см. ниже) от низкополигональной сетки в оба направления, и наружу и внутрь, вдоль поверхности нормалей. Луч, в конечном счёте, ударит по высокополигональной сетке, и нормали поверхности, в этой точке, отрендерируются в текстуру с определенным цветом. Если высокополигональная сетка, не только однородная поверхность, но состоит из нескольких элементов (например, пояс вокруг талии персонажа), то луч будет ударять по высокополигональной сетке в нескольких точках. Режим «Высочайший/Последний» определяет, какие точки в конечном счёте будут использоваться для расчета. Как правило, «последний» даст лучшие результаты, так как вы, скорее всего, хотите включить в рендеринг верхнюю часть сетки (как и в поясе, к примеру). Кроме того, он выбран по умолчанию.
-
[[Файл:AssetCreation_PolyBumpReference_image002.jpg]]
+
* '''Длина луча (''Ray length''): % от размера низкополигональной сетки.'''
 +
:Это параметр указывает длину «выстреленных» лучей. Если лучи слишком коротки, то они могут не достичь важных элементов высокогополигональной сетки и даст неверный результат, но чем длинней лучи, тем выше риск столкнуться с другой точкой высокогополигональной сетки, например, в мелких складках, или в ямках между пальцами. Чтобы избежать этих проблем, может быть использована клеточная сетка (рисунок 4). Длина луча — это 10% от диаметра ограничивающей сферы.
-
[[Файл:AssetCreation_PolyBumpReference_image003.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image004.jpg|Рисунок 4. Клеточная сетка.}}
 +
{{picno|pic1=AssetCreation_PolyBumpReference_image005.jpg|Рисунок 5.}}
-
'''5.''' The rayshooting section configures the detail settings of the polybump algorithm.
+
{{picno|pic1=AssetCreation_PolyBumpReference_image006.jpg|Рисунок 6.}}
-
* Mode: Latest, Nearest
+
{{picno|pic1=AssetCreation_PolyBumpReference_image007.jpg|Рисунок 7. «Use nearest hit» c 2%}}
-
This option defindes the intersection mode for the ray casting algorithm. The algorithm shoots rays with a certain length (see the option below) from the low poly mesh in both directions, outwards and inwards, along the surface’s normal. The ray will eventually hit the high poly mesh, and the surface normal at that point will be rendered into the texture as a certain color. If the high poly mesh isn’t just one uniform surface, but consisting of several elements (for example a belt around the waist of a character), the ray will hit the high poly mesh at several points. Highest/Latest mode determines which point will ultimately be used for the calculation. Usually, «latest» will deliver best results, as you’ll most likely want the top-most parts of the mesh included in the rendering (as in the belt example). It is also the default setting.
+
 +
{{picno|pic1=AssetCreation_PolyBumpReference_image008.jpg|Рисунок 8. «Use nearest hit» c 5%}}
-
* Ray length: % of low poly size.
+
{{picno|pic1=AssetCreation_PolyBumpReference_image009.jpg|Рисунок 9. «Use nearest hit» c 50%}}
-
This specifies the length of the rays that are being shot. If the rays are too short, they might not reach salient elements of the high poly mesh and produce wrong results, but the longer the ray is, the higher the risk of hitting another point of the high poly mesh becomes, for example in small folds, or in the pits between the fingers. To avoid these problems, a cage mesh can be used (see 4). means the ray length is 10 % of the bounding sphere diameter.
+
-
[[Файл:AssetCreation_PolyBumpReference_image004.jpg]]
+
Обратите внимание, как очень короткие лучи не достигают высокополигональную сетку и производят черные пятна на карте нормалей (рисунок 7). Также обратите внимание, как при использование ближайшего удара, а не последнего, не рендерируется самая верхняя поверхность элементов высокополигональной сетки (ремни, зажимы и т.д.).
-
[[Файл:AssetCreation_PolyBumpReference_image005.jpg]]
+
* '''Горизонт (''Horizon''): Низкий (''Low''), Средний (''Med''), Высокий (''High'')'''
 +
:Если вы включите этот параметр, то Polybump высчитает карту горизонта, которая может быть использована в качестве источника для различных выводов (например, карта доступности, направление неокклюдированной области, возможное использования в будущем: сферическая гармоника).
 +
:Карта горизонта существенно улучшает окклюзию окружения, при этом высокогополигональная сетка проецируется с низкополигональной сеткой, а затем будет бейкинг в текстуру. Вы можете сделать его либо низким, средним или высоким, чтобы определить качество. Чем выше качество, тем больше будет длиться вычисление. Этот параметр имеет наиболее существенное влияние на время вычисление, так что низкое качество должно быть использованы для тестирования и устранения неисправностей, а высокое качество только для финального рендеринга. Установка в этом параметре значения «none» означает, что карта горизонта не будет отрендерина. Обратите внимание, что параметр длины луча также влияет на рендеринг карты горизонта. Использование коротких лучей даст более высоко-контрастную карту окклюзии, с видимым потемнением только в жестких складках, а использование длинных лучей даст очень «мягкое» затенение, где даже в небольших ямках поверхность станет темнее. Однако, использование очень высокой длины лучей, также означает увеличение времени рендеринга.
-
[[Файл:AssetCreation_PolyBumpReference_image006.jpg]]
+
* '''Сглаживание (''Anti-aliasing''): Отсутствует (''none''), Селективное 2x2 (''Selective 2x2''), Селективное 3x3 (''Selective 3x3''), Полное 2x2 (''full 2x2''), Полное 2x2 (''full 3x3'')'''
 +
:Включение сглаживания улучшит качество текстур, но увеличит в разы время вычисления. Полное сглаживание даёт более лучшее качество, чем селективное сглаживание, но это также потребует больше времени вычисления.
-
“use nearest hit” with 2 and 50 %
+
;6. Вывод (''Output''): Определяет размеры текстуры.
-
[[Файл:AssetCreation_PolyBumpReference_image007.jpg]]
+
;7. Предпросмотр (''Preview''): Этот раздел позволяет просмотреть объекты, которые вы выбрали для вычислений.
 +
:Низкополигональная сетка будет отрендрирована в белом цвете, а высокополигональная сетка в черном цвете. Если есть клеточная сетка, то она будет отрендрирована в красном цвете. Вы должны использовать этот режим просмотра, чтобы проверить, правильно ли выровнены объекты и одинаковые ли их позиции, это особенно важно при использовании OBJ-файлов экспортированных из Zbrush или XSI. Если все правильно, то вы увидете объекты перекрывающие друг друга, как здесь:
-
[[Файл:AssetCreation_PolyBumpReference_image008.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image010.jpg|Рисунок 10. Предпросмотр.}}
-
[[Файл:AssetCreation_PolyBumpReference_image009.jpg]]
+
=== Настройки экспорта ===
-
“use latest hit” with 2 and 50 %
+
{{picno|pic1=AssetCreation_PolyBumpReference_image011.jpg|Рисунок 11. Окно настроек экспорта.}}
-
Note how very short rays don’t reach the high poly mesh and produce black spots on the normal map (left pictures). Also note how using nearest hit instead of latest hit doesn’t render the top-most surface elements of the high poly mesh (belts, clips, etc.)
+
 +
Это диалоговое окно открывается при выборе «Document->Export data».
-
* Horizon: low, med, high
+
Доступные параметры:
-
If you activate this option, polybump will calculate a horizon map which can be used as source for various outputs (e.g. accessibility map, Unoccluded area direction, possible future use: spherical harmonics)
+
-
The horizon map is essentially the ambient occlusion of the high-poly mesh projected onto the low-poly mesh and baked into a texture. You can set it to either low, med or high to define the quality. The higher the quality, the longer the calculation will take. This quality setting has the most significant impact on calculation time, so low quality should be used for testing and troubleshooting, and high only for final renders. Setting the option to «none» means that no horizon map will be rendered. Note that the ray length parameter also influences the horizon map rendering. Using short rays will produce a more high-contrast occlusion map, with darkening visible in rather tight folds only, while using long rays will produce a very «soft» shading where even slight pits in the surface will become darker. However, using a very high ray length also means increasing rendering time.
+
 +
* '''Карта нормалей (''Normal Map'') (1)'''
 +
:Формат текстурной карты, как правило, 8-битный RGB без альфа-канала.
 +
* '''Уменьшение размера (''Reduce Resolution'') (2)'''
 +
:Размер окончательной текстуры, в отношении размера исходной карты Polybump.
-
* Anti-aliasing: none, Selective 2x2, Selective 3x3, full 2x2, full 3x3
+
{{picno|pic1=AssetCreation_PolyBumpReference_image012.jpg|Рисунок 12. Уменьшение размера.}}
-
Enabling anti-aliasing will improve the texture quality, but will also increase calculation times. Full anti-aliasing produces better quality than selective anti-aliasing, but it also requires longer calculation times.
+
-
'''6.''' Output
+
Пункт «0 (no change)» означает соотношение 1:1, окончательная текстура будет такой большой, какой вы её изначально указали в Polybump. «1» означает маленькую текстуру, -1 означает большую текстуру, и так далее.
-
Specifies the texture dimensions.
+
-
'''7.''' Preview
+
* '''Расширение контура (''Expand border'') (3)'''
-
This section lets you preview the objects you chose for computation.
+
:Если включено, то Polybump «размажет» контур объектов в текстуре, вне их UV-оболочек, чтобы сохранить швы из получаемой модели в окончательной игровой модели. Использование этой функции рекомендуется, если вы увидите швы и неточности в MIP-текстурировании.
-
The low-poly mesh will be rendered in white, and the high-poly mesh in black. If there is a cage mesh present, it will be rendered in red. You should use this view to check if the objects align properly and share the same position, this is especially important when you use OBJs exported from Zbrush or XSI. If everything is correct you should see the objects overlapping each other like here:
+
-
[[Файл:AssetCreation_PolyBumpReference_image010.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image013.jpg|Рисунок 13. Расширение контура.}}
-
=== Export settings ===
+
Вы может выбрать: без расширения, 1,4,8, или 16-пиксельное расширение.
-
[[Файл:AssetCreation_PolyBumpReference_image011.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image014.jpg|Рисунок 14. Отсутствие расширения.}}
-
This dialog opens up when you select Document -> Export data.
+
{{picno|pic1=AssetCreation_PolyBumpReference_image015.jpg|Рисунок 15. 16-пиксельное расширение.}}
-
The available options are:
+
* '''Преобразовать векторы в касательное/объектное пространство (''Transform Vectors to Tangent/Object Space'') (4)'''
 +
:Этот параметр определяет окончательный «формат» карты нормалей. Большинство игровых движков (в том числе CryENGINE2) используют касательное пространство карты нормалей, так что эту настройку рекомендуется использовать. Объектное пространство означает, что нормали кодируются в абсолютном пространстве мира, что означает, что объекты использующие эти карты нормалей не смогут иметь трансформацию, применённую к ним, или освещение будет выглядеть не так, как надо. Однако, они немного ускоряют процесс, но вряд ли движок игры использует абсолютное пространстве мира карт нормалей.
-
* Normal Map (1): The format of the texture map, typically 8-bit RGB with no alpha channel
+
Есть много возможностей вычислить матрицу касательного пространства на вершину и, какое вычисление необходимо для реконструкции нормалей в шейдерах при рендеринге низкополигональной модели.Чтобы избежать искажение такого вычисления, то должно быть использовано преобразование нормалей абсолютного пространства мира в касательное пространство (экспорт в .ОСР). Справочный документ:
-
* Reduce Resolution (2): The size of the final texture, in relation to the size of the polybump source map.
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image012.jpg]]
+
-
 
+
-
0 (no change) means a 1:1 ratio, the final texture will be as big as you originally specified in polybump. 1 means a smaller texture, −1 means a larger texture, and so on.
+
-
 
+
-
* Expand border (3): If activated, polybump «smudges» the border of objects in the texture outside of their UV shells, in order to keep seams from occuring in the final game model. Using this feature is recommended, as you will see seams and inaccuracies once mip-mapping is involved.
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image013.jpg]]
+
-
 
+
-
You can choose between no expansion, 1,4,8, and 16 pixels.
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image014.jpg]]
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image015.jpg]]
+
-
 
+
-
No expansion 16 pixel expansion
+
-
+
-
 
+
-
* Transform Vectors to Tangent/Object Space (4): This setting specifies the final «format» of the normal map. Most game engines (including CryEngine2) use tangent space normal maps, so using this setting is recommended. Object space means that the normals are encoded into absolute world space, which means that objects using these normal maps cannot have transformations applied to them, or the lighting will look wrong. However, they are slightly cheaper to process, but hardly any game engine uses world space normal maps.
+
-
 
+
-
There are many possibilities how to compute tangent space matrices per vertex and that computation is required to reconstruct the normals in the shader when rendering the low poly model. To avoid distortions the same computation should be used when transforming the world space normals to the tangent space (exporting .srf). Reference:
+
<div style="margin-left: 30px">
<div style="margin-left: 30px">
{|
{|
-
|Triangle Mesh Tangent Space Calculation||
+
|Вычисление треугольной сетки касательного пространства||
|-
|-
-
|Martin Mittring, [http://www.introgamedev.com/resource_shaderx4.html ShaderX4, 2006]||
+
|Мартин Миттринг, [http://www.introgamedev.com/resource_shaderx4.html ShaderX4, 2006]||
|}
|}
</div>
</div>
 +
Высококачественные нормали в объектном/мировом пространстве существуют в .SRF-файле и могут быть извлечены и, возможно, преобразованы в другое пространство.
-
High quality normals in object/worldspace still exists in the .srf file and can be extracted and possibly transformed from there into some other
+
* '''Данные горизонта (''Horizon data'') (5)'''
-
space.
+
:Если вы высчитываете карту горизонта, вы можете выбрать, как экспортировать в той или иной форме. Если эти флажки неактивны, вы не высчитываете карту, и вам необходимо вернуться к настройка вычисления, и включить это.Если вы отметите параметр доступность (''Accessibility''), то Polybump создаст файл _ACC.TIF содержащий черно-белую карту горизонта. Вы можете использовать эту карту для дальнейшей работы с текстурой, например, как наложение над диффузной текстурой для имитации грязи или окклюзии окружения, или вы можете просто положить его в слот диффузной текстуры вашего окончательного ассета, чтобы получить типичные вид «купола освещения».
-
 
+
:Если вы отметите параметры направления неокклюдированной области (''Unoccluded Area Direction''), то Polybump создаст файл _DDNDIFF.TIF содержащих карту нормалей с бейкированной картой горизонта. Даст тот же эффект, что и обычные карты нормалей в сочетании с ACC-картой в диффузном слоте, однако она кодирует угол открывания неокклюдированного конуса, что позволяет выделить какие-то мягкие тени высокополигональных деталей. Окклюзия окружения будет реагировать на влияние света более правильно и окклюзия окружения исчезнет там, где свет попадает напрямую. Простой бейкинг окклюзии окружения в диффузной текстура может выглядеть как грязь, даже остаётся непосредственное потемнение. _DDNDIF требует достаточно много дополнительной текстурной памяти (_DDN также требуется) и включение функции должно быть тщательно обдумано.
-
 
+
-
* Horizon data (5): If you calculated a horizon map, If you calculated a horizon map, you can now choose how to export in some form. If these checkboxes are greyed out, you haven’t calculated the map and you need to go back to calculation settings to make one. If you check the accessibility option, polybump will create a _ACC.TIF file containing the black and white horizon map. You can use this map for further texture work, for example as an overlay over your diffuse texture to simulate dirt or ambient occlusion, or you can simply put it in the diffuse texture slot of your final asset to get the typical «skydome lighting» look.
+
-
If you check the unoccluded area direction (_DDNDIFF) option, polybump will create a _DDNDIFF.TIF file containing the normal map with the horizon map baked in. This will have a similar effect as an ordinary normal map combined with an ACC map in the diffuse slot, however it encodes the opening angle of the unoccluded cone and that allows to express some sort of soft shadows of the high poly details. The ambient occlusion will react to light influence more properly and ambient occlusion will disappear where it is directly lit. Simply baking ambient occlusion into the diffuse texture can look like dirt as even lit directly the darkening remains. _DDNDIF requires quite a lot of additional texture memory (_DDN is still required) and it should be carefully considered if this feature is needed.
+
-
 
+
-
If a _DDNDIFF texture is present in the directory of the material and the other textures, and you have specified an ordinary _DDN texture in your material’s normal map slot, CryEngine2 will automatically choose the _DDNDIFF texture for the advanced rendering technique, provided the textures have the same prefix (as in: boots_DDN.tif and boots_DDNDIFF.tif).
+
-
 
+
-
 
+
-
* Displacement (6): When set to linear signed, polybump will include a displacement map in the alpha channel of the normal map.
+
-
 
+
-
=== Chamfering Edges ===
+
-
 
+
-
This is an in-depth explanation of how to reproduce smooth bevels in the high-poly mesh with a normal-mapped low-poly mesh. The following diagrams represent a high poly mesh with a rounded corner and the corresponding low-poly mesh, in a cut-away side view:
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image016.jpg]]
+
-
 
+
-
''Example 1'' : Low poly mesh with non-chamfered edge, separate smoothing groups. Normals are perpendicular to the polygon on the entire surface. Edge detail gets captured (see intersection points), but only if the edge of the low poly mesh touches the high poly mesh where the bevel occurs. Even then, the rounded bevel isn’t accurately represented due to the sudden change of the normal orientation (see the sharp edge in the texture):
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image017.jpg]]
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image018.jpg]]
+
-
 
+
-
 
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image019.jpg]]
+
-
 
+
-
 
+
-
''Example 2'' : Low poly mesh with non-chamfered edge, separate smoothing groups. Edge detail in the «deadzone» doesn’t get captured because the low poly mesh is too far away from the high poly mesh. Note how the edge/corner appears almost 100 % sharp in the render view:
+
-
 
+
-
[[Файл:AssetCreation_PolyBumpReference_image020.jpg]]
+
-
[[Файл:AssetCreation_PolyBumpReference_image021.jpg]]
+
Если текстура _DDNDIFF присутствует в каталоге материала и других текстур, и вы указали обычную текстуру _DDN в слоте карты нормалей вашего материала, то CryENGINE2 автоматически выберет текстуру _DDNDIFF для передовой техники рендеринга, при условии, что текстура имеет тот же префикс (например: boots_DDN.tif и boots_DDNDIFF.tif).
 +
* '''Искажение (''Displacement'') (6)'''
 +
:При выборе  линейного подписания (''Linear Signed''), Polybump будет включать в себя карты смещения в альфа-канале карты нормалей.
-
Generally, sharp edges produce poor results, especially when the low poly isn’t positioned so the corner of the low poly directly touches the high poly mesh.
+
=== Фаска рёбер (''Chamfering Edges'') ===
-
[[Файл:AssetCreation_PolyBumpReference_image022.jpg]]
+
Здесь подробно разъяснено о том, как воспроизвести гладкую фаску в высокополигональной сетке с нормальным маппингом низкополигональной сетки. Следующие диаграммы представляют высокополигьнальную сетку с закругленным углом и соответствующая низкополигональная сетка, в разрезанном виде сбоку:
-
''Example 3'' : Low poly mesh with non-chamfered edge, unified smoothing groups. Normals are averaged across the surface, they are gradually interpolated from perpendicular to the surface (upper left) to 45 degrees at the corner. The result is a gradient in the normal map, and the rounded edge is represented accurately. Using this method is sufficient for representing rounded edges and even corners, however it fails if the final mesh is viewed at an extreme angle (see bottom picture).
+
{{picno|pic1=AssetCreation_PolyBumpReference_image016.jpg|Рисунок 16.}}
-
[[Файл:AssetCreation_PolyBumpReference_image023.jpg]]
+
==== ''Пример 1'' ====
 +
Низкополигональная сетка с рёбрами без фаски, со скошенными краями и с отдельной группой сглаживания. Нормали перпендикулярны полигонам на всей поверхности. Рёбра точно захвачены (см. точки пересечения), но только тогда, когда ребро низкополигональной сетки касается высокополигональной сетки, где происходит наклон. Даже тогда, когда фаска округлена, она не точно представлена в связи с внезапным изменением ориентации нормалей (см. острое ребро в текстуре):
-
[[Файл:AssetCreation_PolyBumpReference_image024.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image017.jpg|pic2=AssetCreation_PolyBumpReference_image018.jpg|Рисунок 17 и 18. Пример 1.}}<br />{{picno|pic1=AssetCreation_PolyBumpReference_image019.jpg|Рисунок 19.}}
-
[[Файл:AssetCreation_PolyBumpReference_image025.jpg]]
+
==== ''Пример 2'' ====
 +
Низкополигональная сетка с рёбрами без фаски и с отдельной группой сглаживания. Рёбра находятся в «мертвой зоны», они не захвачены, потому что низкополигональная сетка находится слишком далеко от высокополигональной сетки. Обратите внимание, как рёбра/углы видны почти на 100% точно в окне рендера:
 +
{{picno|pic1=AssetCreation_PolyBumpReference_image020.jpg|pic2=AssetCreation_PolyBumpReference_image021.jpg|Рисунок 20 и 21. Пример 2.}}
 +
Как правило, острые края производят плохие результаты, особенно при не позиционированной низкополигональной сетке, так угол низкополигональной сетки непосредственно затрагивает высокополигональную сетку.
 +
{{picno|pic1=AssetCreation_PolyBumpReference_image022.jpg|Рисунок 22.}}
 +
==== ''Пример 3'' ====
 +
Низкополигональная сетка с рёбрами без фаски и с единой группой сглаживания. Нормали усредненны по всей поверхности, они постепенно интерполируют перпендикулярно поверхности (вверху) до 45 градусов по углу. В результате в карте нормалей градиент, а округлые рёбра представлены ​​точно. Использование этого метода достаточно для представления закругленных рёбер и даже углов, однако он не выполняется, если окончательная сетка рассматривается в крайнем углу (см. нижний рисунок).
-
[[Файл:AssetCreation_PolyBumpReference_image026.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image023.jpg|pic2=AssetCreation_PolyBumpReference_image024.jpg|pic3=AssetCreation_PolyBumpReference_image025.jpg|Рисунок 23, 24 и 25. Пример 3.}}
-
''Example 4'' : 1-segment chamfer, unified smoothing groups (or smooth edges). The normals remain perpendicular to the surface until shortly before the bevel, which results in a softer gradient in the normal map, and the rays hit the high poly mesh at a less acute angle than with the method above (compare the diagrams), which results in less vivid colors in the normal map. The final result is slightly better compared to not chamfering the edges, however the most significant improvement can be seen when looking at it from an extreme angle (see bottom picture).
 
-
[[Файл:AssetCreation_PolyBumpReference_image027.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image026.jpg|Рисунок 26.}}
-
[[Файл:AssetCreation_PolyBumpReference_image028.jpg]]
+
==== ''Пример 4'' ====
 +
1-сегментная сетка с единой группой сглаживания (или сглаженными рёбрами). Нормали остаются перпендикулярны к поверхности, не далеко от наклона, что приводит к более мягкому градиенту в карте нормалей, и лучи попадают на высокополигональную сетку с менее острым углом, чем с описанным выше способом (сравните диаграммы), что приводит к менее ярким цветам в карте нормалей. Окончательный результат немного лучше по сравнению с рёбрами без фаски, однако наиболее значительное улучшение видно при взгляде на него с крайнего угла (см. нижний рисунок).
-
[[Файл:AssetCreation_PolyBumpReference_image029.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image027.jpg|pic2=AssetCreation_PolyBumpReference_image028.jpg|pic3=AssetCreation_PolyBumpReference_image029.jpg|Рисунок 27, 28 и 29. Пример 4.}}
-
[[Файл:AssetCreation_PolyBumpReference_image030.jpg]]
+
{{picno|pic1=AssetCreation_PolyBumpReference_image030.jpg|Рисунок 30.}}
-
Low poly meshes with their corresponding normal maps in 3dsMax:
+
Низкополигональная сетка с соответствующими картами нормалей в 3ds Max:
-
No chamfer — left, two-segment chamfer — right.
+
Без фаски — слева, двух-сегментная фаска — справа.
-
In conclusion, it is advisable to use low poly meshes with unified smoothing groups, and to additionally chamfer edges and corners if they can be seen at extreme angles. However, it is not always necessary to chamfer the low poly mesh, and using very simple meshes can produce surprisingly good results if they are carefully matched to the high-poly mesh.
+
В заключение, целесообразно использовать низкополигональную сетку с единой группы сглаживания, и с дополнительной фаской рёбер и углов, если они могут быть видны под большим углом. Однако, не всегда низкополигональной сетке нужна фаска, поскольку даже используя очень простую сетку можно достичь удивительно хороших результатов, если она тщательно подобрана под высокополигональную сетку.
-
[[Категория:Official:Asset Creation:References]]
+
[[Категория:Официальная документация:Создание ресурсов:Справка]]

Текущая версия на 18:01, 15 марта 2011

Содержание

Справка по инструменты 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: Без фаски — слева, двух-сегментная фаска — справа.

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