Работа с камерой может быть сделана намного более наглядной, если заполнить горизонтальную плоскость совокупностью линий сетки (grid lines), как показано на рис. 7.21. Это легко сделать, например, в таком цикле:

fordnt х - -100; х < 100: х++) {

glBegin(GL_LINES);

glVertex3d(х.0.100): glVertex3d(x.0.-100) : glEndO:

}

в результате работы которого будет нарисовано множество из 200 ^-контуров. Аналогичный цикл рисует 2-контуры. Добавьте сюда управление с помощью клавиш, чтобы пользователь мог убирать линии сетки или ставить их обратно.

В OpenGL существуют примитивы, которые можно использовать для моделирования интересных сцен. Используйте для создания сцены некоторые из объектов, описанных в главе 5: сферы, конусы, додекаэдры, а также чайник. Выберите каркасные или сплошные версии этих объектов. Если вы выберете сплошные версии, то установите источник света и задайте объектам свойства материала. В качестве руководства используйте примеры из главы 5.

Тематическое задание 7.2. Стереоизображения Уровень сложности П.

Усовершенствуйте свою программу просмотра сеток так, чтобы она могла создавать стереоизображения объектов, как показано на рис. 7.29. Создаются три объекта класса Camera. Вначале в качестве постоянной камеры создается «циклопова камера», а затем с использованием хранящейся в ней информации (значений eye, направления и и т. д.) конструируются камеры левого и правого глаза.

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

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

Тематическое задание 7.3. Создание параллельных проекций Уровень сложности П.

Добавьте к классу Camera функцию setObl i que О, рассмотренную в разделе «Параллельные проекции», для получения ортографических и косоугольных проекций объектов. Поэкспериментируйте с этой камерой, используя сцену, составленную из линий сетки, описанную в тематическом задании 7.1, а также из нескольких кубов, расположенных на горизонтальной плоскости и над ней. Имейте в виду, что эти линии сетки проецируются как параллельные линии и у них нет (конечных) точек схода. Предоставьте пользователю возможность перемещать камеру по сцене и посмотрите, как выглядят при различных положениях камеры параллельные ребра куба.


⇐ Предыдущая| |Следующая ⇒