Graphics & Media Lab. >> Курсы >> Курс Ю.М.Баяковского 2000

Компьютерная графика
О курсе
О курсе
Лекции
Лекции
Практикум
Практикум
FAQs
FAQs
Оценки
Оценки
Глоссарий
Глоссарий
Литература
Литература
 
OpenGL-1 (Cornell Box)
Начало: 4 апреля 2000 года.
Конец: 18 апреля 2000 года.
 
Автор задания: Игнатенко Алексей
Цель задания

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

Описание задания

Требуется создать изображение сцены Cornell Box. Сцена представляет из себя комнату кубического вида, с отсутствующей передней стенкой. В комнате находятся геометрические предметы различных форм и свойств, и источник света. Присутствует также камера с заданными параметрами. На рисунке показан один из вариантов предлагаемой сцены. ( картинка получена методом излучательности)

Описание геометрии можно найти здесь  Реализации этой сцены достаточно для выполнения задания, хотя возможно введение новых предметов дополнительно к существующим или вместо них. Приветствуется использование примитивов библиотек GLUT и GLU.  Внимание! Сцена не должна превращаться в набор разнородных предметов. Эстетичность и оригинальность выполненного задания принимается во внимание.

Протяженный источник света на потолке комнаты можно эмулировать несколькими точечными источниками.

За  простейшую реализацию сцены ставится 7 баллов.

Ниже приведены возможности, за реализацию которых можно получить дополнительные баллы.

Реалистичность сцены можно значительно повысить за счет разбиение полигонов. Суть этого в том, что модели освещение OpenGL освещенность вычисляется в вершинах полигона с учетом направления нормалей в этих вершинах, а затем линейно интерполируется  по всех поверхности. Если используются большие полигоны, то, очевидно, невозможно получить действительно плавные переходы  и затенения. Для преодоления этого недостатка можно разбивать большие грани ( стены, например) на множество более малых по размерам. Соответственно разброс в направлении нормалей в вершинах одного полигона не будет столь велик и затенение станет более плавным. (1 балл)

Наложение текстур на объекты сцены поощряется 2-мя баллами.

Дополнительными баллами оценивается присутствие в сцене теней. Один из простейших алгоритмов наложения теней приведен в учебном пособии (см. ниже). За его реализацию можно получить от 2 баллов. Использование более продвинутых алгоритмов ( в т.ч. shadow volumes) будет оценено дополнительными баллами.

Реализация устранения ступенчатости ( antialiasing ) методом, предложенным в пособии или каким-либо другим оценивается в 2 балла.

За введение в сцену прозрачных объектов и корректный их вывод дается 1 балл. Механизм работы с прозрачным объектами описан в учебном пособии.

Материалы для выполнения задания

Для изучения возможностей OpenGL предлагаются следующие материалы


Для использования основных возможностей  OpenGL необходимо иметь реализацию базисной библиотеки, а также библиотек GLU и GLUT, описание которых можно найти  в учебном пособии. Там же описывается, как получить совместимый с BorlandC++ *.lib файл.
 Расположение файлов:
С  расширением '.h':  каталог ..\YourCompiler\Include\Gl или каталог с текстом 
                                    программы.
С расширением '.lib': каталог ..\YourCompiler\Lib или каталог с текстом  программы.
С расширением '.dll': каталог ..\Windows\System или каталог с исполняемым файлом 
                                    программы ( для VisualC++ это каталог YourProject\Debug).

Базисная библиотека
Описывается в файлах gl.h, opengl32.lib, opengl32.dll, которые обычно входят состав компилятора и ОС Windows и находятся в перечисленных каталогах.Если их там нет, можно взять эти файлы отсюда (299Kb). Отдельно файл opengl32.lib можно взять здесь (11Kb).

Библиотека GLU
Описывается в файлах glu.h, glu32.lib, glu32.dll, которые обычно входят состав компилятора и ОС Windows и находятся в перечисленных каталогах. Если их там нет, можно взять эти файлы отсюда (62Kb).Отдельно файл glu32.lib можно взять здесь      (2Kb).

Библиотека GLUT
Описывается в файлах glut.h, glut32.lib, glut32.dll. Если Вы используете компилятор VisualC++, то совместимые с ним версии этих файлов можно взять отсюда (71Kb). Пользователи BorlandC++ могут использовать файлы отсюда (69Kb). Отдельно файл glut32.lib можно взять здесь (5Kb).

Библиотека GLAUX
Описывается в файлах glaux.h, glaux.lib. Эти файлы можно получить отсюда(142Kb).

Все файлы.
Архив сразу со всеми вышеперечисленными файлами можно взять отсюда (571Kb).

Оценка

Задание оценивается, исходя из 15 баллов.

В нижеследующей таблице указано распределение баллов в зависимости от реализованных требований:
 
Простейший вариант сцены (только освещение) 7 баллов
Разбиение полигонов +1 балл
Использование текстур +2 балла
Наложение теней +2 балла
Устранение ступенчатости +2 балла
Использование прозрачных объектов +1 балл

Дополнительные баллы можно получить за хорошую оптимизацию рендеринга, необычные решения, эстетичность и т.д. 

Оформление задания

Оформление задания ничем не отличается от предыдущих ( см. FAQ)
Архив должен содержать readme.txt файл в специальном формате, шаблон которого можно найти здесь

Примечание: нет необходимости присылать файлы glut32.dll, glu32.dll и opengl32.dll

Пример

Здесь можно скачать примерный вариант работы (10Kb). Такая программа оценивается 10 баллами. ( Внимание! Нет необходимости делать интерактивную программу, но создание таких программ поощряется дополнительными баллами.)

Результаты работы

Работа высылается по адресу assign5@graphics.cs.msu.su 
 

Все ваши вопросы вопросы по заданию и/или по OpenGL можно задать Игнатенко Алексею по электронной почте или лично ( понедельник после 3-й пары или четверг, после 2-й пары  - 77 (703) аудитория).
 

На основную
На главную
Наверх
Наверх
 
Graphics & Media Lab. >> Библиотека | Курсы | Графикон
 
Hosted by Graphics & Media Lab
http://graphics.cs.msu.su
lab_logo
Поддержка и дизайн: Алексей Игнатенко