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

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

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

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

Наконец помните, что команды видового преобразования должны вызываться до любых модельных преобразований, изменяющих объекты первыми. Преобразования просмотра выполняются любым из способов, описанных ниже. Кроме того, можно использовать значения по умолчанию лля положения и ориентации точки обзора, которые помещают ее в начало координат и направляют вдоль отрицательной оси к ° Посредством одной или нескольких команд модельного преобразования (таких как а1Тгапз1аге*() и й1йогате»()). Результат можно представить как изменение положения камеры или всех объектов в сцене относительно неподвижной камеры.

° Для опрелеления линии взгляда можно использовать команду библиотеки о1л) ~1и(.сока((). эта команда включает в себя набор команд вращения и перемещения. ° Создать свою собственную команду, включающую вращения и сдвиг. В некоторых приложениях может потребоваться команда, позволяющая удобно и быстро определять специфичное видовое преобразование. Например, можно определить углы крена, тангажа и курса самолета в полете или описать преобразование в терминах полярной системы координат для камеры, вращающейся вокруг объекта по определенной орбите. Модельно-видовые преобразования 115 Функции 9!Тгап5!а~е и д!Ко~а~е Эмулируя преобразования просмотра командами модельного преобразования, мы пытаемся переместить позицию наблюдения в нужном направлении, оставляя объекты неподвижными. Так как точка обзора и объекты по умолчанию располагаются в начале координат (рис.

3.9), необходимо провести некоторую подготовку, чтобы объект был видим. Заметьте, что, как показано на рисунке, камера по умолчани|о смотрит вниз по оси а (Вы видите заднюю часть камеры.) Рис. Злк Объект и точка просмотра в на~але координат В самом простом случае можно отодвинуть наблюдателя назад от объектов; это даст такой же эффект, что п перемещение объектов вперед от точки обзора. Помните, что по умолчанию «перед» находится в отрицательном направлении оси г; если вращается точка обзора, «перед» имеет другое значение, Таким образом, для отдаления точки обзора на пять единиц от объектов, как показано на рис.

3.10, используется следующая команда: кгтгалзтатет<в,в; о,е; -з,в~; Эта команла перемещает объекты в сцене на — 5 единиц вдоль оси г, что эквивалентно смешению камеры на +5 единиц вдоль оси г, 7 Рис. 3.10. Разделение точки просмотра и объекта Предположим, что вы хотите взглянуть на объекты со стороны. Когда нужно использовать команду вращения, до или после команды переноса? Если думать 116 Глава 3 ° Визуализация в терминах фиксированной системы координат, для начала надо представить объект и камеру в нуле системы координат. Сперва поворачиваем объект, а затем удаляем его от камеры так, чтобы была видна нужная сторона.

В фиксированной системе координат команды должны вызываться в обратном порядке относительно оказываемого эффекта, то есть сначала записываем команду сдвига, а затем— команду вращения. Теперь представим локальную систему координат. В этом случае при исполнении перемещение объекта и его локальной системы координат от начала координат предшествует врагцению и команды записываются в том же порялке. Последовательность команд трансформации для получения требуемого результата следующая: Х(тгале(аее((О.В, О.а, -З.О); Х)алеете((ЭВ.О. О.О, 1.В, О.О); Если возникают проблемы с результатом от перемножения матриц, попробуйте обе системы координат — фиксированную и локальную — для определения, какой результат вам больше подходит. Напомним, что в фиксированной системе координат вращение всегда происходит относительно ее начала координат, а в локальной — вокруг нуля локальных координат.

Как запасной вариант есть еще функция к1иЬооКЯ((), описанная ниже. Функция дП.оо~А1 Часто программисты строят сцену вокруг начала координат или какой-то другой подходяшей точки, а затем смотрят на нее из точки, дающей требуемый вид сцены. Как следует из ее имени, функция я1о(ооКА(() предназначена для определения точки наблюдения. Она получает три набора аргументов, определяющих положение точки обзора, направление камеры и вектор ориентации. Выберите требуемую точку обзора, дающую нужный вид сцены.

Точка, определяющая направление взгляда, будет где-то в центре сцены. (Если сцена строилась в начале координат, этой точкой обычно является начало координат.) Определение вектора ориентации является немного более сложным. Если строится сцена реального мира в начале или вокруг начала координат, то положительное направление оси у даст требуемый вектор для функции к1о1ооКА(() .

Однако если разрабатывается симулятор полета, данный вектор перпендикулярен крыльям самолета и направлен от самолета в небо, когда самолет находится на земле. чо(с) к1осооКА1(С(х)онЫе еуех, СЕг)оцЫе вуеу, С(х)оиЫс еуег, СИоиЫе сел(вх, СИоиЫе септегу, СМооЫе сел(егх, СЫооЫе ирх, СМоиЫе и)пя СМоиЫе ирх); Определяет видовую матрицу и умножает ее на текушую матрицу. Нужная точка обзора описывается значениями еуех, еуеу и еуег. Аргументы селгегх, селгегу и сепгегз определяют любую точку на линии взгляда, но обычно — некоторую точку в центре сцены.

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

По умолчанию камера располагается в начале координат, смотрит вниз по оси з, а положительное направление оси у указывает вектор ориентации. Это аналогично вызову функции 1<вьоохл<(Е.Е. Е,О, О.Е, Е.Е, Е.О, -1ЕЕ.Е, О.О. 1.Е, Е,Е1; Значение з для линии взгляда равно -100,0, но может быть любым отрицательным зна <ением г, так как линия взгляда останется такой же. Подобный вызов не имеет смысла, поскольку этн значения приняты по ум«лчанию (рис. 3.11). (Ливни, исходящие из камеры, определяют объем видимости, то есть поле зрейия.) Рис.

3.11. Положение камеры по умолчанию На рис. 3.12 изображен типичный результат использования функции а1ц ЬоокАт(). Положение камеры определяется точкой (4, 2, 1), Камера нацелена на модель, то есть координаты точки на линии взгляда равны (2, 4, -3). Вектор ориентации (2, 2, — 1) поворачивает точку наблюдения на 45'. ющий вектор камеры Рис. 3.12. Использование функции д<цьооМА1() 118 Глава 3 ° Визуализация Вызов, дающий такой резуль~ат, выглядит следующим образом: 81иьООКАт(4.8. 2.0, 1.8, 2.0.

4.0, -3.8, 2.8, 2.8, -1.8); Функция 810Еоохдт () является частью библиотеки С)Л), а не основной библиотеки ОрепС1. Это сделано не потому, что функция — не нужная, а потому, что она комбинированная — включает в себя несколько базовых функций ОрепС(., в частности 81тгапз1ате*О и 81йотате*О. Пусть камера находится в произвольной точке обзора и ориентирована согласно линии взгляда, определенной с помощью функции 81цсоокдт (), а сцена расположена в начале координат. Для отмены действия 81цсооКА(О нужно переместить камеру в начало координат и позиционировать ее вдоль отрицательного направления оси г в положение по умолчанию. Просто перенесем камеру в начало координат.

Легко представить серию поворотов вокруг каждой из трех осей неподвижной системы координат, которые позволят ориентировать камеру вдоль отрицательного направления оси г. Так как ОрепС1 позволяет делать вращение вокруг любой нз осей, можно крутить камеру как угодно с помощью одного только вызова команды 8180 тате" () . ПРИМЕЧАНИЕ За один раз можно осуществить только одно видовое преобразование.

Нельзя объединять результаты двух преобразований, как и камера не устанавливается на двух штативах сразу. Если требуется изменить положение камеры, вызовите предварительно функцию 8юоаб!депбтуО, чтобы предупредить воздействие любых текущих преобразований просмотра. Пособие по проецированию от Нэйта Робинса Если у вас есть набор программ от Нзйта Робинса, запустите пособие по проецированию. В атом пособии показано применение 81цЕооКАт О с различными значениями аргументов. ПРИМЕЧАНИЕ Для преобразования произвольного вектора таким образом, чтобы он совпадал с другим произвольным вектором (например, с отрицательной осью т), нужно провести несколько математических операций.

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

Угол вращения вокруг оси, определяемый векторным произведением, всегда принимает значения от 0' до 180'. (О нахождении векторного и скалярного произведений см. приложение Д.) Вычисление угла между двумя нормализованными векторами через арккосинус их скалярного произведения не очень точно, особенно для малых углов, но достаточно для начала работы. Создание собственных функций В некоторых специализированных приложениях может потребоваться определить собственные функции преобразования. Так как зто делается достаточно редко и зто достаточно специализировано, оставим данный вопрос большей частью на самостоятельное рассмотрение читателя. Следующие задания предлагают реализацию двух преобразований просмотра, которые могут пригодиться. Преобразования проецирования 119 Упражнение Допустим, пишется авиасимулятор и нужно отобразить мир глазами пилота из кабины самолета. Мир описывается координатной системой с началом на взлетно-посадочной полосе и координатами самолета (х, у, г).

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

Тип файла
PDF-файл
Размер
56,35 Mb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

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