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


9

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

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

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

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

Ответы:


10

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

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

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


Отличное замечание по поводу некогерентных обращений к памяти в пиксельном шейдере. Прыжок вокруг такой текстуры действительно разрушит кеш текстуры.
— Боб Сомерс

@Bob Somers: Честно говоря, это не будет большим ударом по производительности, если вы не программируете для низкоуровневой или мобильной платформы, или вы уже облагаете налогом максимальную стоимость графических процессоров.
— Мартин Сойка

Хороший вопрос, Мартин. В прошлом году я жил на земле GPGPU, написав чувствительный к производительности код, поэтому я подумал, что это интересный момент, который не сразу очевиден. :)
— Боб Сомерс

6

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.