Главная » Просмотр файлов » М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006)

М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (1124363), страница 78

Файл №1124363 М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006)) 78 страницаМ. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (1124363) страница 782019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 78)

Теперь усложним. Пусть отношение высоты стены к ее ширине — два к трем, но текстура все еше квадратная. Чтобы избежать искажения текстуры, вам следует спроецировать на стену часть карты текстуры так, чтобы сохранились пропорции. Допустим, что вы решили использовать нижние лве трети карты для текстурирования стены, В таком случае используйте координаты текстуры (О, 0), (1, 0), (1, 223) и (О, 223), раз вершины стенка обходятся против часовой стрелки.

Внесем еще немного сложности. Будем считать, что вас почему-то интересует отображение на экран консервной жестяной банки с наклеенной на нее этикеткой. Чтобы получить текстуру, вы сходили за банкой в магазин, отодрали этикетку и отсканировали ее. Предположим, что этикетка имеет 4 условные единицы длины поперек и 12 единиц вдоль, то есть соотношение сторон — 3 к 1.

Поскольку текстуры должны удовлетворять соотношению 2" к 1, вы можете просто не ис. Присвоение координат текстур 357 пользовать верхнюю треть этикетки или вырезать из нее кусок с необходимыми пропорциями. Допустим, вы отказались от использования верхней трети. Далее заедем допущение, что цилиндр банки аппроксимируется 30 прямоугольниками сдлиной 4 единицы (высота банки) и шириной 12/30 (1/ЗО периметра крышки).

Вы можете использовать следующие координаты текстур для 30 аппроксимирующих прямоугольников; 1:(О, 0),(1/30, 0),(1/30, 2/3),(0, 2 '3) 2:(1/ЗО, 0),(2/30, 0),(2/30, 2/3),(1/30, 2/3) 3:(2/ЗО, О),(З/ЗО, О), (3/ЗО, 2/З),(г/ЗО, 2/3) 30: (29/30, 0), (1, 0), (1, 2/3), (29/30, 2/3) Только несколько кривых поверхностей, таких как конусы и цилиндры, могут быть спроецированы на плоску|о поверхность без геодезических искажений. Люеые другие фигуры претерпят деформацию. В целом, чем выше скругленность (сап аспге) поверхности, тем больше искажается текстура. Всли вас не тревожит искажение текстуры, найти простое рациональное решение етображения несложно. Так, рассмотрим сферу с координатами поверхности (сот 0 соз у, соз 0 гйп д, гйп О), где 0 < 0 ь 2к и 0 < у < к. Карта текстуры может быть хапрямую спроецирована в прямоугольник 0<а, но по мере приближения к полюсзм все сильнее будут проявляться аномалии.

Весь верхний край карты текстуры попадет на «северный» полюс, и весь нижний край — на «южный» полюс. Для хругих поверхностей, таких как тор («бублик») с большим отверстием, координаш поверхности преобразуются к координатам текстуры способом, который вносат лишь чуть-чуть искажений, поэтому он годится для многих приложений. На рис. 9.9 показаны два тора, один с небольшим отверстием (и, следовательно, со значительной деформацией вблизи центра) и один с дырой чуть ли не до краев (х потому с незначительными искажениями). Рис.

9.9. Искажение карты текстуры Вели вы текстурируете сплайновые поверхности, сгенерированные вычислителяка (см. главу 12), параметры и и и поверхности могут в отдельных случаях исюльзоваться как координаты текстуры. Тем не менее в целом успешное наложезхе текстур на полигональные приближения кривых поверхностей требует от вас тысокого мастерства. 358 Глава 9 ° Наложение текаур Повторяемые и обрезанные текстуры Вы вправе задать координаты текстур, выходящие за диапазон [О, 1], и затем «выпилить» этот диапазон или же тиражировать карту текстуры. Второй вариант подходит тогда, когда вы имеете, например, изображение большого самолета с координатами текстуры от 0.0 до 10.0 в двух направлениях.

Тогда вы получаете 100 копий текстуры, сопряженных на экране в плиточную поверхность. При размножении текстур целые части координат текстур игнорируются, благодаря чему копии укладываются рядом, не перекрываясь. Для болыпинства приложений, использующих повторение текстур, текселы наверху текстуры должны соответствовать пикселам снизу, и то же верно для правого и левого краев.

Допускается «зеркальное» расположение, где плитки чередуются в порядке «туда-сюда» (([[р-йор), другими словами — наподобие триггерного переключения. Например, в пределах диапазона координат текстур [О, 1] текстура может выглядеть ориентированной слева направо (или сверху вниз или от ближнего конца к дальнему), но здесь слово «зеркальное» обозначает смену ориентации текстуры в направлении «справа налево» для диапазона [1, 2], снова «слева направо» для координат [2, 3] и т.

д. Другая возможность состоит в ограничивании (с1ашр) координат текстур: любые значения большие 1.0 устанавливаются а 1.0, и любые значения меньше 0,0 устанавливаются в 0.0. Такое вырезание полезно для приложения, где вам нужна одна копия текстуры на большую поверхность. Если диапазон координат текстуры для поверхности охватывает значения от 0.0 до 10.0 в обоих направлениях, в левом нижнем углу поверхности появится только один экземпляр текстуры. Если вы используете текстуры с границами или задали для границы определен. ный цвет, на интерпретацию информации границ будут влиять как режим обработки границ (ч гарр1пя), так и метод фильтрации (см.

раздел «Фильтрация»). Если фильтрация выполняется по принципу 61 МЕАкЕ5Т, используется ближайший тексел текстуры. Для большинства режимов наложения граница (или ее цвет) игнорируется. Тем не менее, если координаты текстур выходят за рамки [О, 1] в задан режим наложения 61 С САЯР ТО ВОМОЕЙ, выбирается ближайший тексел ва границе. (При отсутствии границы используется некоторый константный цвет.) При фильтрации по методу 6С 11МЕАР используется взвешенное значение по массиву 2 х 2 (для двухмерных текстур) данных цвета. При задании границы и/или ее цвета оба свойства применя1отся совместно, по следующим правилам; ° в режиме обработки границ 6С МЕР ЕАТ граница игнорируется во всех ситуациях. К вычислениям привлекается массив 2 х 2 тексела с противоположного края текстуры.

Таким образом, текселы с правого края усредняются с пиксе- лами левого края, и то же верно для левого и правого краев; ° в режиме 6С ССАИР для тексела на границе (или в режиме 61 ТЕХТОЯЕ ВОМОЕМ СОСОМ) используется средневзвешенное по массиву 2 х 2 тексела; ° в режиме 6С ССАИР ТО ЕО6Е граница игнорируется всегда. Для вычислений привлекаются текселы вблизи краев текстуры; Присвоение координат текстур 359 ° в режиме 6С ССАМР ТО ВОКОЕК, если координаты текстуры выходят за диапазон [О, 1~, в расчет принимаются только текселы границы (при отсутствии границы основываются на константном цвете границы).

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

(См. раздел «Смешивание» главы 6.) Чтобы увидеть эффект от обработки границ, вам следует рискнуть и задать координаты вне диапазона 10.0, 1.01. Для начала возьмите пример из листинга 9.1 и измените координаты текстуры для квадратов с 0.0 на 4.0, как это сделано ниже: 11зеВ(п(6С ООА05); В1ТехСоогб2Е(8.8, 0.0); В1Неггех3Е(-2.8, -1.8, 0.0); В1ТехСоогб2Е(0.0. 4.0): В1ЧеггехЗЕ(-2.0, 1.8, 0.0); В1ТехСоогб2Е(4.0, 4.0); В1уегсех)Е(8.8, 1.9, 0.0); В1ТехСоогб2Е(4.0, 9.9); В1НегсехЗЕ(8.8, -1.8, 0.8); В)техсоогб2Е(8.8, О,О>; В(уеггех3Е(1.0.

-1.О, 8.9>; В1ТехСоогб2Е(0.0. 4.0); В1Чегсех)Е(1.9, 1.0, 9.9); В1ТехСоогб2Е(4.0, 4.0); В1ЧегсехЗЕ(2.41421, 1.0, -1.41421); В1ТЕХСООГб2Е(4.0, 9,0); В1ЧЕГТЕХЗЕ(2.41421, -1.0, -1.41421); 11Епб(>; Для режима 6С КЕРЕАТ результат продемонстрирован на рис. 9.10.

Здесь текстура дублируется сразу в двух направлениях, 3 и 6 это делают вызовы В1Тех Ра г а не Се г'(): 11техРагавегег1(6с техтОКЕ 20, 6с тЕХтцкЕ ИААР 5, 6( кЕРЕАТ); 11ТехРагаиегег((6С ТЕХТОКЕ 20, 61 ТЕХТОКЕ ИКАР Т, 61 КЕРЕАТ); Некоторые реализации Орепб). поддерживают режим 6С М1ККОКЕО КЕРЕАТ, обращающий ориентацию целочисленных коорлинат текстур. На рис. 9.11 показана разница между обыкновенным размножением с переносом (слева на рисунке) и зеркальным повторением (справа). Рис. 9.11. Режим 61 КЕРЕАТ в сравнении с 66 М1ККОКЕО КЕРЕАТ Рис.

9.10. Повторение текстуры На рис. 9.12 продемонстрировано действие режима 6С ССАМР в применении к обо- им направлениям. В местах, где координата 3 или г болыпе единицы, используется тексел, взятый оттуда, где значение координаты текстуры в точности равно 1. 360 Глава 9 ° Наложение текпур Рис. 9.12.

Ограничивание текстуры Режимы обработки границ по каждому направлению независимы. Вы вправе так- же применить ограничение в одном измерении и повторение для другого, как по- казано на рис. 9.13. Рис. 9.13. Размножение текстуры вместе с ограничиванием Теперь, после рассмотрения всех аргументов В1техрагаветег*(), суммируем все в одной подпрограмме. уо1с) 91техрагаветегЯ(С)епит гагдет, С|еппш рпате, ТУРЕ рахат)' уо1г) В1Техрагааетег(11)у(СЕепцш Гасящей С1.ещнп рпате, ТУРЕ "Рахат); Устанавливает различные параметры, управляющие обработкой текстуры, применением ее к фрагментам и сохранением в объекте текстуры. Аргумент Гагяеувыбнрается из 6! ТЕХТОЙЕ 10,6! ТЕХТОЙЕ 20, 6! ТЕХТОЙЕ 30 или 6! ТЕХТОКЕ СОВЕ ИАР в соответствии с характером текстуры.

Возможные значе. ния для аргументов рпате и рахат приведены в табл. 9.7. Вы можете задавать параметры по отдельности обычной версией команды, и в вашем распоряжении также ее векторная форма, работающая с массивом значений для случая 6! ТЕХТОЙЕ ВОйОЕЙ СОСОК. Если значения представлены целыми числами, они преобразуются в формат с плавающей запятой согласно табл.

4.1; кроме того, они ограничиваются диапазоном 10, 11 Таблица 9.7. Аргументы команды 4техРвгате1ег*() Значения Параметр 6! ССАИР,6! ССАМР ТО ЕООЕ,6! ССАМР ТО ВОЙОЕЙ,О! ЙЕРЕАТ, 6! М[КЙОЙЕО КЕРЕАТ 6! ССАМР,6! ССАИР ТО Е06Е,6! С!АМР ТО ВОКОЕй,6! КЕРЕАТ, 6! М1ККОКЕО КЕРЕАТ 6! С1АМР, 6! С!АМР ТО Е06Е, 6! ССАИР ТО ВОКОЕК, 6! КЕРЕАТ, 6! М1ККОКЕО КЕРЕАТ 6$ МЕАКЕ5Т,6! С!НЕАЙ 6! ТЕХТОКЕ )УВАР 5 6! ТЕХТОКЕ ЬУКАР Т 6! ТЕХТОЙЕ ЪУЙАР й 6! ТЕХТОКЕ МА6 ЕП.ТЕК Значения Параметр 6! ТЕХТОРЕ М)И Р1СТЕР Упражнение Рисунки 9.12 и 9.13 получены с исгюльзованием б! ИЕАРЕ5Т для фильтров уве- личения и миниатюризации. Что же произойдет, если вы изме»гите это значение ка б! С1ИЕАР? Результирующее изображение должно выглядеть не таким рез- иим. Информация границ может потребоваться во время обсчета текстурирования. Для простейшей демонстрации этого установите б! ТЕХТОРЕ ВОРОЕР СОСОР в хорошо заметный цвет.

Установив фильтры в б! ИЕАРЕ5Т и режим обработки границ 6! ССАИР ТО ВОРОЕР, оцените эффект от цвета границы текстуры на текстурируемый объект (для диапазона координат текстуры вне [О, 1]). Граница также оказывает воздействие на текстурирование с фильтрами б! С1ИЕАй и режимом обработки границ б! ССАИР. Что теперь случится, если включить режим б! ССАИР ТО Е06Е или б! РЕРЕАТ? Для обоих случаев цвет границы игнорируется. ПОсобие по текстураи от Нэйта Робинса Запустите пособие по текстурам Нэйта Робинса и оцените влияние параметров 6! РЕРЕАТ и б! ССАИР.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее