Введение в компьютерную графику
Полугодовой курс ВМиК МГУ, 2003
     

Задание №4. OpenGL: трехмерное моделирование

Начало: 1 апреля 2003
Конец: 15 апреля 2003 (23:59)

Автор задания:
Алексей Игнатенко

Введение

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

Требуется создать средствами OpenGL статическое изображение трехмерной модели вашего рабочего места (стола, компьютера и т.п.).

Пример сцены:

Обязательная часть

Обязательная часть предполагает рисование сцены, включающей в себя следующие элементы:
  • Стол
  • Стул
  • Компьютер: монитор, системный блок, клавиатура.
  • Источник света (лампа на столе или в комнате)

В сцене должно присутствовать освещение, т.е. визуализация должна происходить с включенным режимом освещения OpenGL, а объектам должны быть назначены материалы. Не требуется фантазировать - баллами поощряется реализация реальных объектов.

Объекты должны легко идентифицироваться, т.е. недостаточно сделать параллепипеды для монитора, системного блока и стола. Старайтесь выделить характерные черты того или иного объекта и смоделировать их.

В качестве "строительных блоков" дается набор из нескольких объектов в формате 3DS (3D Studio), и код для загрузки этих объектов (см. раздел "Материалы для выполнения задания"). Рекомендуется использовать эти объекты, а также пользоваться примитивами библиотек GLU и GLUT.

Дополнительная часть

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

  • Наложение текстур на объекты сцены поощряется дополнительными баллами. Текстуры можно накладывать на плоскость стола, пол, вешать фотографии на стены, изображение на монитор и т.п. 1 балл ставится за формальное присутствие текстур в сцене (нереалистичные текстуры), 2 балла за интенсивное использование текстур, придание дополнительного реализма с помощью текстур.

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

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

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

  • Можно использовать дополнительные объекты - книги, лампы на столе, различные аксессуары и т.п. Единственное условие - объекты должны легко идентифицироваться. Обратите внимание: НЕ требуется делать комнату, нужно сделать только модель рабочего места. Максимум, что можно добавить - часть пола и стены за столом.

  • Дополнительные баллы можно получить за возможность переключения между несколькими камерами, стоящих под разными углами или на разных расстояниях. Для переключения рекомендуется использовать клавиши '1'-'9' или пробел для циклического перебора камер.

Общее правило такое: чем более реаличная сцена, тем больше баллов можно за нее получить.

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

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


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

Стандартная библиотека GL и библиотека GLU, как правило, входит в поставку среды программирования. Библиотеку GLUT (версия для Microsoft Visual C++) можно скачать здесь. Дополнительную информацию о библиотеке GLUT можно найти в разделе GLUT на сайте www.opengl.org

Готовые объекты для моделирования в формате 3DS (ZIP 95k) :

  • Стол 1
  • Стол 2
  • Стул 1
  • Стул 2
  • Книга
  • 2 книги
  • Системный блок
  • Клавиатура
  • Монитор 1
  • Монитор 2

Для загрузки файлов формата 3DS можно пользоваться любой доступной библиотекой. Мы предлагаем для скачивания простую библиотеку.

Требования к программе

Обязательное требование - выполнить обязательную часть задания. При этом программа должна работать в интерактивном режиме, т.е. допускается время ожидания перерисовки не более 2-3 секунд на современной машине с ускорителем графики.

Еще одно обязательное требование - разбираться в материале. В спорных ситуациях оценка выставляется после личной беседы, выявляющей понимание принципа действия основных алгоритмов.

К программе должны прилагаться все необходимые для ее запуска библиотеки. (опускать можно только слишком большие библиотеки, если они явлются стандартными). Отсутствие библиотек создает неудобства при проверке, однако не фатально. У нас есть набор из наиболее часто недостающих библиотек для Borland C++ Builder и MS Visual C++.

Примечание: glut32.dll в архив можно не включать.

Оценка

Обязательная часть задания (только освещение) 7 баллов
Дополнительные объекты до +4 баллов
Использование текстур 1-2 балла
Наложение теней 2-4 балла
Устранение ступенчатости 3 балла
Зеркальные объекты 3-5 баллов
Переключение между камерами 1 балл

Примечания:
  • Баллы за базу могут быть снижены (до 4-х), если объекты в сцене не выглядят реалистично.

  • Также баллы за базу снижаются (до 4-х) если освещение неправильное (неверно выставлены нормали, нет источника света и т.п.)

  • За каждый день опоздания снимается один балл. Работы с опозданием более чем на 12 дней не рассматриваются. Если у вас есть уважительная причина опоздания, объясняйтесь с проверяющими лично.

Оформление работы

Оформление не отличается от обычного.

ZIP-архив с исходными текстами и исполняемыми файлами, названный по схеме GZV_nnnnnnnn.zip (где G - последняя цифра номера группы, Z - номер задания, V - номер версии задания, nnnnnnnn - номер студенческого билета) присылайте на assign4@graphics.cs.msu.su

Например, студент 206 группы с номером студенческого билета 06529042, сдающий обновленную (вторую) версию программы по второму заданию, должен прислать архив с именем 622_06529042.zip.

Также смотрите здесь, какие файлы нам присылать и как их оформить Советуем очень внимательно прочитать весь FAQ

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

!Внимание: обратите внимание на правильное именование и структуру архива с работой, а также на содержание файла readme.txt. Если ваша работа не будет соответствовать требованиям, баллы могут быть снижены.

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

Результаты смотрите в интернете. Оценки появятся в течение двух недель после срока сдачи задания.
Все вопросы присылать автору.

Примечания

  1. Задание выполняется строго индивидуально. За совместную работу или обмен кусками кода ставится ноль баллов всем участникам, если факт командной работы не был указан в readme.txt заданий.
  2. Не забывайте правильно оформлять исходный код ваших работ

ЧаВо по заданию

Я скачал файлы 3ds, а они не открываются ни вашей же программой, ни 3DS MAX. Что делать?

Действительно, такая проблема существует, и ее причины выясняются. Наиболее вероятно, что причина "битых" 3ds-файлов в работе веб-сервера. В качестве паллиативного решения предлагается скачать zip-архив со всеми моделями сразу. Мы проверяли этот вариант - все модели загружаются.

...Я загружаю картинку, скажем, монитора из 3DS-файла. Теперь я хочу наложить на его экран текстуру (чтоб там что-нибудь показывалось). Как мне из всего множества граней (я использую ту библиотеку, которую Вы дали в задании) выделить те, которые составляют экран, чтобы только на них накладывать текстуру?

Есть два варианта:

  1. На самом деле, в 3ds-файле с монитором несколько объектов с различными именами. Экран называется "Ekran". Его можно рисовать отдельно, заранее инициализировав наложение текстурных координат (через glTexGen) или рисуя его просто по вершинам (их 4) с соответсвующим текстурными координатами.
  2. Можно самостоятельно сделать четырехугольник, наложить на него текстуру и "подогнать" его к монитору так, чтобы он закрывал настоящий экран (т.е. был чуть-чуть ближе к наблюдателю)
Главная | О курсе | Лекции | Библиотека | Задания | Оценки | FAQs
  (с) Лаборатория компьютерной графики, 1997-2003
Дизайн: Алексей Игнатенко