Задание №3. OpenGL: Визуализация односторонних поверхностей.
Введение.
Цель задания - получение навыков работы с геометрическими моделями,
визуализация данных с помощью OpenGL, использование приемов работы с OpenGL
для увеличения реалистичности интерактивной визуализации сцены.
Требуется визуализировать одностороннюю поверхность - лист Мёбиуса или бутылку
Клейна средствами графической библиотеки OpenGL.
Обязательная часть.
Обязательной частью задания является визуализация листа Мёбиуса (5 баллов).
В сцене должно присутствовать освещение,
т.е. визуализация должна происходить с включенным режимом освещения OpenGL,
а объекту должен быть назначен материал (или материалы).
Лист Мёбиуса (или лента Мёбиуса) - простейшая односторонняя поверхность с
краем. Попасть из одной точки этой поверхности в любую другую можно, не
пересекая края.
Одним из способов задания листа Мёбиуса в трёхмерном пространстве является
параметрическое:
где
,
Эти формулы задают ленту Мёбиуса ширины 1, чей центральный круг имеет радиус 1, лежит в плоскости x-y с центром в (0,0,0).
Параметр u пробегает вдоль ленты, в то время как v задает расстояние от края.
Дополнительная часть.
Одним из возможных способов набрать дополнительные баллы за задание является визуализация дополнительно к листу Мёбиуса
бутылки Клейна. Требования к визуализации такие же, как и для листа Мёбиуса
Лист Мёбиуса и бутылку Клейна можно делать как два отдельных приложения,
либо как одно приложение с возможным переключением.
В математике бутылка Клейна — это определённая неориентируемая поверхность рода 1, т. е. поверхность (двумерное топологическое пространство),
у которой нет различия между внутренней и внешней сторонами. Она тесно связана с лентой Мёбиуса.
В отличие от обыкновенного стакана у этого объекта нет «края», где бы поверхность резко заканчивалась.
В отличие от воздушного шара можно пройти путь изнутри наружу не пересекая поверхность (т. е. на самом деле у этого объекта нет «внутри»
и нет «снаружи»).
Бутылка Клейна представляет собой два "склеенных" листа Мёбиуса.
Классическая параметризация бутылки Клейна (+2 балла):
При:
:
При:
:
Другая параметризация для бутылки Клейна: в виде восьмёрки (+1 балл):
В этом виде самопересечение имеет форму геометрического круга в плоскости XY.
Константа r равна радиусу круга. Параметр u задаёт угол на плоскости XY и v обозначает положение около 8-образного сечения.
Также дополнительные баллы можно получить за реализацию следующего:
- Наложение текстуры на поверхность(+1-2 балла). Текстура не должна замещать освещение.
-
Присутствие в сцене теней.
Для этого необходимо дополнительно поставить в сцену плоскость
под объектом или куб вокруг объекта, чтобы на них падала тень:
+1 балл - падение теней только на плоскость (куб); +3 балла - самозатенение поверхности
- Реализация устранения ступенчатости (antialiasing) методом, предложенным в
пособии или каким-либо другим также оценивается. 2 балла дается за
качественное устранение ступенчатости. Обратите внимание: есть разница
между размытием сцены и устранением ступенчатости!.
- Зеркальная поверхность (+2 балла).
При этом окружение должно присутствовать (например, в виде фона). Пример реализации
для бутылки Клейна (на рисунке дополнительно присутствует прозрачность):
- Показ структуры поверхности с помощью каркасной модели, наложенной поверх
модели с освещением (как на рисунке) (+2 балла).
Внимание: засчитывается только реализация каркасной модели
в виде четырехугольных ячеек и без мерцания.
- Возможность вращения объекта. +1
балл за реализацию управления с клавиатуры, +2 балла за удобное вращение
мышью (можно использовать модуль trackball)
- Корректная полупрозрачная поверхность (+3 балла).
Внимание: правильная реализация потребует сортировки граней от дальних к ближним для каждого положения камеры.
Засчитывается только при реализации возможности вращения модели.
Материалы для выполнения задания
Для изучения возможностей OpenGL предлагаются следующие материалы:
Для использования основных возможностей OpenGL
необходимо иметь реализацию базисной библиотеки, а
также библиотек GLU и GLUT, описание которых можно
найти в учебном пособии. Там же описывается, как
настроить OpenGL в среде программирования.
Стандартная библиотека GL и библиотека GLU, как
правило, входит в поставку среды программирования.
Библиотеку GLUT (версия для Microsoft Visual C++)
можно скачать здесь. Дополнительную информацию о
библиотеке GLUT можно найти в разделе GLUT на
сайте www.opengl.org
Требования к программе
Обязательное требование - выполнить обязательную
часть задания. При этом программа должна работать
в интерактивном режиме, т.е. допускается время
ожидания перерисовки не более 1-2 секунд на
современной машине с ускорителем графики.
Еще одно обязательное требование - разбираться в
материале. В спорных ситуациях оценка выставляется
после личной беседы, выявляющей понимание принципа
действия основных алгоритмов.
К программе должны прилагаться все необходимые для
ее запуска библиотеки. (опускать можно только
слишком большие библиотеки, если они явлются
стандартными). Отсутствие библиотек создает
неудобства при проверке, однако не фатально. У нас
есть набор из наиболее часто недостающих библиотек
для Borland C++ Builder и MS Visual C++.
У всех проверящих
установлен .NET Framework 1.1.
Проверка программ будет вестись на машинах с ускорителями ATI Radeon 9600.
Примечание: glut32.dll в архив можно не включать.
Обязательная часть задания |
5 баллов |
Классическая параметризация бутылки Клейна |
2 балла |
Параметризация бутылки Клейна в виде восьмерки |
1 балл |
Текстура |
1-2 балла |
Тени |
1-3 балла |
Устранение ступенчатости |
2 балла |
Зеркальная поверхность |
2 балла |
Показ каркасной модели |
2 балла |
Вращение |
1-2 балла |
Полупрозрачность |
3 балла |
Примечания
- Освещение не обязательно должно выглядеть так же, как на рисунках. Мы можете поставить несколько цветных источнков света,
экспериментировать с разными типами источников.
- Баллы за базу снижаются (до 3-х) если освещение неправильное (неверно выставлены нормали, нет источника света и т.п.)
Оформление работы
Оформление не отличается от обычного. Работу
нужно прислать на адрес
assign3@graphics.cs.msu.su.
Cмотрите здесь, какие файлы нам присылать и как
их оформить. Советуем очень внимательно прочитать
весь FAQ
Результаты работы
Результаты смотрите в интернете.
Оценки появятся в течение двух недель после срока сдачи задания.
Все вопросы задавать в нашем форуме.
|