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

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

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

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

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

Описание геометрии можно найти здесь в формате файла 3D Studio. Если вы не умеете работать с этим форматом - задайте похожую геометрию сами. Реализации этой сцены достаточно для выполнения задания, хотя возможно введение новых предметов дополнительно к существующим или вместо них. Приветствуется использование примитивов библиотек 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 или YourProject\Release).

Базисная библиотека
Описывается в файлах 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). Внимание: использование библиотеки GLAUX не рекомендуется, однако баллов за ее использование сниматься не будет.

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

Оценка

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

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

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

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

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

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

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

 

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

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

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

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