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

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

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

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

Значение — 1.0 приводит к зеркальному отражению объекта отностительно оси. Прибегать к функции к15са!е*() рекомендуется только в случаях, когда это действительно ттеобходилто, так как она увеличивает затраты на обсчет освещения, ренормализуя векторы нормалей после преобразования. 112 Глава 3 ш Визуализация Рис. 3.7. Масштабирование и отражение объекта Пример кода модельного преобразования В листинге 3.2 приведена часть программы, рисующей четыре раза треугольник, как показано на рис.

З.Я. Осуществляются четыре преобразования треугольников: ° рисуется каркасный треугольник без преобразований; ° рисуется такой же треугольник, но линии каркаса штриховые и треугольник смен(ен (влево — в отрицательную сторону по оси х); ° треугольник рисуется штриховой линией с длинными штрихами, его высота (по оси у) убавлена на 50%, а ширина (по оси х) увеличена на 50%; ° рисуется повернутый треугольник с пунктирными границами.

модельного преобразования: гпобе(.с Листинг 3.2. Использование 811оап!пепт(Су(); 8(со)от)т(1.0, 1.0, 1.0>; Оган Сг(ап81е(): сплошная линия */ 81Епаьсе(ОС С1НЕ 5Т!РРСЕ); 81С(пе51(рр1е(1. ОхгвЕО); 81Соае1еепС(Су(); 81тгапэ1атет(-28.8, 0.0, 0 Оган Сг(ап81е(); /* штриховая линия '/ 0) 8!С(пе511рр1е(1, ОхгвОР); 81Соап1пепт(ту(); 815са1е1(1. 5, О. 5, 1. 8),' Оган Сг(ап81е(); /' длинные штрихи */ 811(пе51(рр1е(1, Ох8888): /* пунктирная линия "/ ПРИМЕЧАНИЕ Коэффициент масштабирования, равный нулю, влечет вырождение всех координат объекта в нуль. Это не очень хорошая идея, поскольку отменить действие операции невозможно. Говоря математически, матрицы не могут быть инвертированы, а инвертирование матриц требуется для операций освещения (см, главу 5).

Иногда свертывание координат имеет смысл. Одним из таких случаев является вычисление тени на плоской поверхности (см. раздел «Тени» главы 14). Вообще говоря, если система координат коллапсирует в нуль, матрица проекций должна использоваться раньше, чем модельно-видовая натрица. Модельно-видовые преобразования 113 Х)(азб)бент~ ту(); к)еотатет(эо,е, О.О, О,О, ).В); бган тг(апв1е[); З)Р(зза)е(6( Ь1НЕ 5Т1РРСЕ); Рмс. 3.8. Пример модельного преобразования ПРИМЕЧАНИЕ Иногда, когда программисты хотят заставить объект вращаться непрерывно, они пытаются зто сделать путем повторных использований матрицы поворота с небольшим шагом. Проблема этого способа в том, что из-за округления результат тысяч небольших вращений постепенно удаляется от теоретического (вплоть до остановки вращения).

Правильнее на каждом шаге увеличивать угол наклона и применять преобразование с этим значением. Помните, что использование функции 81Еоаб!()епС) )бу() предотвращает накопительный аффект от последуюп(их трансформаций. Многократное ее примене- 114 глава 3 ° визуализация ние может сказаться как положительно, так и отрицательно, например, если нужно накапливать результаты преобразований вида или модели. (См. раздел «Управление стеком матрип» для получения более подробной информации.) Пособие по преобразованиям от Нэйта Робинса Если вы уже вооружились набором учебных программ от Нэйта Робинса, пришло время запустить пособие по преобразованиям.

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

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

Кроме того, можно использовать значения по умолчанию лля положения и ориентации точки обзора, которые помещают ее в начало координат и направляют вдоль отрицательной оси к ° Посредством одной или нескольких команд модельного преобразования (таких как а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(С(х)онЫе еуех, СЕг)оцЫе вуеу, С(х)оиЫс еуег, СИоиЫе сел(вх, СИоиЫе септегу, СМооЫе сел(егх, СЫооЫе ирх, СМоиЫе и)пя СМоиЫе ирх); Определяет видовую матрицу и умножает ее на текушую матрицу.

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

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

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