Я пытаюсь понять математическую теорию картографирования UVW. Может кто-нибудь объяснить мне, как работает UVW картирование? Или хотя бы предоставить мне указатель?
opengl
mathematics
textures
uv-mapping
разъем
источник
источник
Ответы:
Я так понимаю. Может быть совершенно неправильно, но я уверен, что кто-то
пламяпоправьте меня если я ошибаюсь.Математическая теория UV-текстурного сопоставления аналогична теории UV-текстурного картографирования.
Смотрите ссылку Bummzack здесь: Что такое UV и UVW Mapping? чтобы получить лучшее объяснение того, что такое УФ-картирование. По сути, вы отображаете область текстуры на область поверхности. Интерполяция промежуточных значений на основе этих отображений.
То же самое с UVW. За исключением того, что сейчас вы отображаете объем текстуры на объем поверхностей. Интерполяция промежуточных значений. Теперь с 3-м измерением вы можете деформировать 2-мерную текстуру, чтобы лучше соответствовать объекту.
Давайте посмотрим, как это используется в 3D текстурах. 3D текстуры могут быть созданы слоями 2D текстур и интерполируя тексели между ними. Визуально 3D-текстура может выглядеть примерно так:
Где «плоскости» на оси R - это 2D текстуры. Если бы мы установили каждый слой на другой сплошной цвет и применили его к 3D-объекту, мы получили бы что-то вроде этого:
Вы можете видеть, как сплошные цвета были интерполированы между слоями. Вот такая же вещь, но с пейзажем. Где сверху вниз, текстуры могут быть: снег, камень, трава, песок.
Теперь, если мы используем только одну R-плоскость (одну 2D-текстуру), но отображаем 3D-объект? Очевидно, что это не дает такой гибкости, как множественные слои текстур, но это, безусловно, намного меньше работы. Однако простое проецирование 2D-текстуры на 3D-поверхность может вызвать некоторые проблемы. Подумайте о ситуации, когда вы светите лазером на стену. Под перпендикулярным углом лазерная точка хороша и круглая. Под любым другим углом точка начинает растягиваться и наклоняться. То же самое произойдет при проецировании 2D-текстуры на 3D-поверхность. Любое лицо, которое не перпендикулярно проекции, будет искажено. Как мы это исправим? Искажая проекцию. Возьмите лазерный пример, если у нас был лазер, который, когда светился на перпендикулярной поверхности, был растянут и перекошен. Когда мы направили этот лазер на наклонную стену, угол мог "Третье измерение позволяет нам «формировать» проекцию так, чтобы она соответствовала поверхности, на которую мы нацеливаемся. Например, какая-то волнистая трехмерная поверхность может иметь такую текстуру (но не такую грубую):
Как я уже сказал, это только мое понимание этого. Я согласен, на эту тему не так много хорошей информации. Надеемся, что этот (вероятно, неправильный) ответ побудит кого-то с большим знанием предмета высказаться.
Изображения для 3D-текстур взяты с этой страницы: http://www.gpwiki.org/index.php/OpenGL:Tutorials:3D_Textures
источник