Каковы недостатки маркировки каждого края как шва при развертывании сетки?

9

Я программист, который пытается немного освоить основы трехмерного моделирования. Мне достаточно комфортно с базовым моделированием геометрии, и я могу разворачивать и текстурировать простые модели. Но у меня есть вопрос ...

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

Я предполагаю, что это просто связано с сохранением формы модели, когда дело доходит до редактирования диффузной текстуры? Это единственная причина, по которой вы не хотите просто резать каждый край и выкладывать все грани индивидуально?

Я понимаю, что показываю свое полное незнание предмета, когда задаю этот вопрос, поэтому извиняюсь, но иногда сверх очевидные вещи труднее всего найти ответы .

NM-01
источник

Ответы:

10

Каждый «УФ-шов» в вашей модели, то есть каждое место, где грани модели непрерывны, а УФ-карта для одного и того же края вырезана, - это проблема как для художников, так и для оборудования.

  • Это затрудняет правильное текстурирование модели. Это особенно верно, когда редактирование выполняется непосредственно на текстуре, в 2D, а не в программе для рисования 3D. Чем меньше таких швов, тем легче мысленно обернуть текстуру вокруг модели.
  • В то время как простое смешивание может работать для диффузной текстуры и некоторых других типов текстур, вы должны быть очень осторожны с такими вещами, как карта нормалей касательного пространства. Для них вы не можете просто линейно смешивать (интерполировать) между значениями X и Y (обычно отображаются в R и B в средствах просмотра текстур), при этом результирующий вектор нормали не нормализуется, а шов становится видимым (обычно немного темнее). «линия») при некоторых условиях освещения. С другой стороны, попытка зафиксировать его в текстуре и сделать значения на обеих кромках UV близкими друг к другу или одинаковыми, может привести к тому, что шов станет видимым, поскольку он неестественно плоский по сравнению с остальной частью модели.
  • Пиксельные шейдеры должны выполнять больше работы на каждом разрыве (даже если это обычно абстрагируется в аппаратном обеспечении в настоящее время) и получать доступ к различным местам памяти для извлечения данных текстуры (что обычно является менее оптимизированным «путем кода» в аппаратном обеспечении) , в отличие от обычной работы с пространственно близкими значениями текстуры.
  • Автоматическое отображение (и очень немногие магазины могут позволить себе обработать сгенерированные текстуры с низким разрешением вручную) сломает всю тяжелую работу, которую вы и ваши художники сделали, чтобы сделать шов невидимым при разрешении по умолчанию.

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

Мартин Сойка
источник
Отличное замечание по поводу некогерентных обращений к памяти в пиксельном шейдере. Прыжок вокруг такой текстуры действительно разрушит кеш текстуры.
Боб Сомерс
@Bob Somers: Честно говоря, это не будет большим ударом по производительности, если вы не программируете для низкоуровневой или мобильной платформы, или вы уже облагаете налогом максимальную стоимость графических процессоров.
Мартин Сойка
Хороший вопрос, Мартин. В прошлом году я жил на земле GPGPU, написав чувствительный к производительности код, поэтому я подумал, что это интересный момент, который не сразу очевиден. :)
Боб Сомерс
6

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

Как вы упомянули, художнику может быть очень трудно понять, как его 2D-редактирование обернется вокруг 3D-модели, если швы не имеют смысла. В случае, когда каждая грань была отделена и оптимально размещена с помощью какого-то алгоритма упаковки бина, было бы почти невозможно редактировать текстуру вручную. Надеемся, что в эти дни они используют какой-то инструмент для рисования 3D, но все же приятно (и необходимо!) Вносить изменения непосредственно в 2D текстуру.

Другая проблема (краевые артефакты) может проявиться из-за ограничений точности с плавающей запятой при выборке текстур. Допустим, все лица разложены на черном фоне. Из-за ошибки с плавающей точкой в ​​ваших текстурных координатах или во время выборки на видеокарте весьма вероятно, что эти черные краевые пикселы будут иногда появляться или смешиваться при фильтрации текстуры. Поскольку это влияет на каждое лицо, у вас будет происходить этот странный эффект background-artifact-wireframe. Единственный способ бороться с этим - искусственно сузить ваши текстурные координаты, но тогда каждое лицо будет выглядеть странно, потому что оно не совсем совпадает с соседями по текстуре.

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

Боб Сомерс
источник