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

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

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

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

В трехмерной компьютерной графике отсечение происходит путем отбрасывания объектов, находящихся за плоскостью отсечения. В конечном итоге должно быть установлено соответствие между преобразованными координатами и пиксслами на экране. Этот процесс называют преобразованием окна просмотра (ч1еп рогг). . Перечисленные операции и методы управления ими описываются в следующих асновных разделах данной главы: 98 Глава 3 ° Визуализация ° Обзор: аналогия с камерой. Дает представление о процессе преобразования через аналогию с процессом фотографирования. В этом разделе представлен простой пример программы, которая преобразует объект, н кратко описываются основные команды преобразований в ОрепС!..

° Команды преобразования общего назначения. ° Модельно-видовые преобразования. Подробно объясняет, как определить и представить результат модельно-видовых преобразований. Эти преобразования устанавливают взаимное расположение модели и камеры для получения желаемого результата. ° Преобразования проецирования. Описывает, как задать форму и расположение видимого обьежа (ч1еччпя чо1шпе). Видимый объем определяется согласно тому, как сцена проецируется на экран (в перспективной или ортогональной проекции) и какие выступающие за этот объем части объектов отсекаются. ° Преобразование окна просмотра.

Рассказывает, как контролировать преобразование координат трехмерной модели в координаты на экране. ° Проблемы преобразований. Дает несколько советов, как поступить в случае, если вы нс можете получить желаемый эффект при моделировании, просмотре, проецировании объектов и вписывании их в окно просмотра. ь Управление стеком матриц. Обсуждает, как сохранить и восстановить какие- либо преобразования. Это особенно полезно, когда вы рисуете сложные объекты, состоящие из более простых элементов. ° Дополнительные плоскости отсечения. Описывает, как определить дополнительные плоскости отсечения, кроме определенных видимым объемом.

° Примеры объединения нескольких преобразований. Продемонстрирует вам несколько более сложное использование преобразований. ° Изучив раздел «Обратные, или имитационные, преобразования», вы узнаете, как из оконных координат точки получить первоначальные координаты объекта. Само преобразование (без инверсии) также может быть эмулировано. Дополнительно в ОрепС1.

версии 1.3 были добавлены новые функции для поддержки развертывания матриц по строкам, а не по столбцам (транспонирования, в терминах ОрепС1.). Обзор: аналогия с камерой Процесс преобразования, подготавливающий изображение желаемой сцены, сходен с фотографированием. Как показано на рис. 3.1, шаги при работе с фотокамерой (или компьютером) могут быть следующими: 1. Установить штатив и направить камеру на сцену (видовое преобразование).

2. Подготовить фотографпруемую сцену в нужной композиции (модельное преобразование). Обзор: аналогия с камерой 99 3. Подобрать объектив или отрегулировать масштабирование (преобразование проекции). 4. Определиться с размером конечной фотографии, например, вы можете захо- теть ее увеличить (впнсывание в окно просмотра). После того как все этапы выполнены, изображение может быть зафиксировано кли сцена нарисована. Фотокамера Компьютер Рис.

3.1. Аналогия с камерой 100 Глава 3 ° Визуализация Обратите внимание, что эти шаги соответствуют последовательности, в которой вы определяете необходимые преобразования в вашей программе, а не обязательно в последовательности, в которой над вершинами объектов выполняются важные математические операции. Видовые преобразования должны предшествовать модельным в коде, но можно определить проекцию и видовое преобразование в любой точке перед началом рисования. Рисунок 3.2 показывает порядок, в котором эти операции происходят на вашем компьютере. Оконныа координаты Рнс. 3.2, Стадии преобразования вершин Чтобы определить видовое, модельное и проекционное преобразования, мы создадим матрицу М размерности 4 н 4, которая затем будет умножаться на координаты каждой вершины ч в сцене для осуществления преобразования: и' =Мы (Помните, что вершины уже имеют четыре координаты (х, у, г, ш), хотя в большинстве случаев ге = 1, а для двухмерных данных г - О.) Обратите внимание, что видовое и модельное преобразования автоматически применяются к векторам нормали к поверхности, дополнительно к координатам вершин.

(Векторы нормали используются только в системе координат наблюдателя.) Это гарантирует правильное соотношение вектора нормали и данных вершин. Определенные нами видовое и модельное преобразования формируют матрицу модели, которая применяется к входным координатам обьекта для получения выходных координат в системе наблюдения. Затем срабатывают, если такие определены, дополнительные плоскости отсечения с целью удаления некоторых объектов из сцены или для показа объекта в разрезе. После этого ОрепС). применяет матрицу проекции лля получения усеченных координагл.

Это преобразование определяет видимый объем; объекты вне его отсекаются и не попадают в финальную сцену. Затем выполняется деление по перспективе путем деления значений координат на ге для получения нормализованных Обзор: аналогия с камерой 101 координат устройства.

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

Можно предположить, что координат х и у достаточно для определения точек, отображаемых на экране. Однако все преооразовання выполняются также и над координатой г. Это позволяет в конце процесса преобразования с помощью значений г правильно передать глубину (удаленне от экрана). Одно из применений глубины — устранение ненужных прорисовок. Предположим, что существуют дне вершины с одинаковыми координатами х и у, по с различными координатами г. Исходя из этой информации, Ореном решает, какая из поверхностей закрывается другой, что помогает избежать прорисовок скрытых поверхностей, (См.

главы 5 и (О для получения дополнительной информации об этой технологии, называемой удаление невидимых поверхностен.) Для более полного понимания текущей главы вам необходимо знание действий с матрицами. Если вы хотите пополнить свои знания в этой области, можете взять любой учебник по линейной алгебре. Пример: рисование куба Программа из листинге 3.! рисует куб, масштабируемый модельным преобразованием (рис. 3.3). Видовое преобразование к1и сооклс() позиционирует камеру и направляет ее туда, где рисуется куб.

Также определяются преобразования проекции и окна просмотра. Оставшуюся часть этого раздела занимает рассмотрение листинга 3.! и краткое объяснение использования команл преобразования. Поскедующие разделы содержат полное, детальное обсуждение всех команд преобрззования Орепо!., Листинг 3.1. Трансформированный куб: сиЬе.с чо(б (п!1(чо!П) ( К)С)евсее(вг(О.О, О.О. О.О, О.О>; К15ьабенобе1(ОС ГСАТ); ) че(В б(зр1ау(чазб) ( К(С)евг(ОС СО(Он Вбрр(а В(т>! К>Се)рг>((1.В, 1.О, 1.О>; 51соэа1бепт!1уо; /* очищаем матрицу '/ /" видовое преобразование К)ч(вва/(1(О.О, О.О, 5.О, В,О, О.О, О.О, О.О, ).О, О.О>; К15са1е((1.В, 2.0, 1.0); /* модельное преобразование '/ К(ч(Н(гееиЬе(1.В>; К(Г)вен(); продолжвнов р 102 Глава 3 ° Визуализация Листинг 3.1 (продолжение) чо!б геьларе(!пС и, !пС П) ( 91Н!еирпгС(0, О, (6[5!се!) и, (6Сэ)се!) П); 91Матг)хМобе(6С РЙО)ЕСТ10М); 91Соаб1бепС(Су(); 91Ргиэтпм(-1.9.

1.0, - 1.9, 1.9, 1.5, 20.9)! 91Матг)хМобе(6С МООЕСН1Ей); ) (пс ма!и(!пс агзс, спаг*' агзч) ( 91НС1п(С(аагзс, агзч); 9[ос)п)св)эр)аумобе(6сет 51нбсе [ 6сцт абв); 91иС!п!Сй!пбои5!се(599, 500)'! 91ч(1п!Сй(пбоиРоэ)С!оп(199, 100); 91иСЕгеасей!пбои(агах[9]); !пчс(); 91иСО(эр1аугчпс(б(эр1ау); 9[п(аеэьарегипс(геэнаре): 91итна!пьоор(); гесчгп 0; Рис. З.З. Трансформированный куб Видовое преобразование Вспомним, что видовое преобразование аналогично размешепию и нацеливанию фотоаппарата.

В приведенном примере кода перед определением видового преобразования текугцая матрица устанавливается в единичную с помощью функции 91соаб1бепс! су(). Это необхолимо, так как большинство команд преобразования умножают текущую матрицу на некоторую другую, а затем делают результирусошусо матрицу текушей. Без загрузки единичной матрицы вы будете накладывать полученный результат на результат предыдущей операции преобразования. В некоторых случаях такие наложения необходимы, но в основном матрица должна сбрасываться.

В листинге 3.1 после того, как матрица инициализирована, осуществляется видовое преобразование функцией 91исооКАС () . Аргументы этой функции определяют положение камеры (или взгляда), ее направление и угол наклона. Используемые в примере значения помещают камеру в точку пространства с координатами (О, О, 5), направляют осггическую систему на позицию (О, О, 0) и задают вектор ориентации (О, 1, 0) — направление от низа к верху основания пирамиды видимого объема.

Обзор: аналогия с камерой 103 Если функция я1псоохдг() не вызывается, действуют значения по умолчанию; то есть камера расположена в начале координат, указывает вниз вдоль оси я я имеет вектор ориентации (О, 1, О). В листинге 3.1 с помощью функции я1я(оохдг() камера перемешается на пять единиц по оси к (См. Раздел «Модельно-видовые преобразования» для получения дополнительной информации.) Модельное преобразование Модельное преобразование применяется для позиционирования модели и залаяяя ее орнснтации.

Например, вы можете повернуть, переместить или масштабировать модель — или реализовать некоторую комбинациго зтих операций. В листянге 3.1 для таких целей используется функция а15са1ет(). Ее аргументы апределяют, как осуществляется масштабирование по трем осям. Если все аргуиенты равны 1,0, она не имеет смысла. В результате работы программы куб растянут вдвое по оси у. Таким образом, если один из углов куба до цреобразоваиия взходился в точке (3.0, 3.0, 3.0), то после него угол переместился в точку (3.0, 6.0, 3.0).

В результате мы получим не куб, а прямоугольный параллелепипед, В качестве упражнения замените в листинге 3.1 команду я1оьооКАГ() на функцию я1тгаля1асе() с аргументами (0.0, 0.0, -5.0). Результат будет такой же, как я при использовании я1всоохяг(). Вы уже догадались, почему? Потому, что здесь вместо перемещения самой камеры (видовое преобразование), позволяющего захватить куб в объектив, мы подвинули куб относительно камеры (модельное преобразование). Эта двойственность объясняет, почему видовое я модельное преобразования обьединяют в модельпо-видовую ягатрицу перед тем, яак их выпошшть.

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

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

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