Пятница, 29.03.2024, 08:32

Кибер-Сайт

Приветствую Вас Гость | RSS
Меню сайта
Наши реквизиты
Считаете полезными материалы нашего сайта?
Хотите и можете помочь проекту?
Z222164825293
Категории
Delphi [8]
Delphi, Object Pascal, уроки, статьи, исходники
OpenGL API [9]
Графика на OpenGL API, уроки, статьи, исходники
Blender [9]
Трехмерная графика, моделирование, разработка игр с помощью Blender
3D. Общие вопросы [1]
Наш опрос
Оцените мой сайт
Всего ответов: 111
Статистика
Ваш IP: 44.211.239.181
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа
Главная » 2013 » Июль » 10 » Перспективная проекция
13:11

Перспективная проекция

Что такое перспективная проекция? Это проекция трехмерных объектов на двухмерную плоскость с учетом их расстояния до точки наблюдения. Перспективная проекция представляет собой усеченную пирамиду. Таким образом, финальные размеры, проецируемого примитива зависят от расстояния до дочки наблюдения и уменьшаются с его  увеличением. Задаётся перспективная проекция с помощью команд glFrustum и gluPerspective. Команда glFrustum имеет те же параметры, что и glOrtho.

procedure glFrustum(left, right, bottom, top, zNear, zFar: GLdouble);

Параметр zNear всегда должен быть не меньше единицы и не должен быть больше zFar. Так же параметры zNear и zFar не должны быть равными между собой и не должны принимать отрицательных значений. Чтобы как можно лучше представить себе перспективную проекцию обратимся к рисунку ниже.

glFrustum
Данная команда достаточно гибкая. Здесь мы можем менять значения параметров left, right, bottom, top, zNear, zFar, добиваясь тем самым различных эффектов финального изображения. Но если вам понадобится создать аналог камеры или человеческого зрения, то этот способ будет нуждаться в дополнительных расчетах. Такие параметры, как, left, right, bottom, top, нужно будет рассчитывать из соотношения ширины и высоты порта просмотра, угла обзора камеры, а также параметров zNear и zFar, что не всегда удобно.

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

procedure gluPerspective(fovy, aspect, zNear, zFar: GLdouble);

Параметр fovy задает угол обзора, параметр aspect – соотношение ширины и высоты порта просмотра, параметры zNear и zFar идентичны параметрам команды glFrustum. Чтобы представить, как команда gluPerspective влияет на финальную проекцию, рассмотрим следующий рисунок.

gluPerspective

На рисунке видно ближнюю zNear и дальнюю zFar плоскости  отсечения, которые задаются соответствующими параметрами. Углы a и b  вычисляются из параметров fovy и aspect. Параметр aspect так же можно представить, как соотношение углов a и b.

aspect = a/b

Таким образом, если задать параметр aspect, как соотношение ширины Width и высоты Height порта просмотра, соотношение Width и Height будет равно соотношению углов a и b.

Width/Height = a/b

Это дает возможность корректировать проекцию при изменении порта просмотра, тем самым сохраняя пропорции проецируемого изображения.
Категория: OpenGL API | Просмотров: 5496 | Добавил: Admin | Теги: OpenGL API, OpenGL справочная информация | Рейтинг: 0.0/0

Похожие материалы
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Календарь
«  Июль 2013  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
293031
Друзья сайта
  • Скачать Blender
  • Архив записей
    Реклама
    Copyright Кибер-Сайт © 2024 | Используются технологии uCoz