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

Задание №5. OpenGL: трехмерные часы

Начало: 18 апреля 2003
Конец: 2 мая 2003 (23:59)

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

Введение

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

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

  • Программа должна демонстрировать на экране трехмерную модель часов. Часы могут быть любые, от наручных до кремлевских. Проявите в полной мере Вашу фантазию и чувство меры! Постарайтесь сделать как можно более реалистичную сцену. Поощряется подробная детализация элементов часов. 
  • Часы на экране обязательно должны иметь минутную и часовую стрелки. Секундная - по желанию, но очень приветствуется (иначе трудно будет определить, ходят часы или нет).
  • Время на часах должно совпадать с системным временем компьютера. Часы обязательно должны ходить, т.е. стрелки должны двигаться и скорость их движения не должна зависеть от производительности компьютера, а определяться только текущим временем.
  • Сцена должна быть интерактивной, т.е. давать приемлемую частоту кадров при рендеринге. Ориентируйтесь на Pentium IV 1500Mhz . Графический акселератор -  NVidia GeForce4 Ti200. Т.е. если на такой машине проверяемая программа будет откровенно "притормаживать" - баллы будут существенно снижены.
  • Необходимо реализовать возможность вращения часов ( или, возможно, камеры) с помощью мыши (предпочтительно) или клавиатуры. Возможно также предусмотреть режимы с автоматическим вращением. Для вращени с помощью мыши можно воспользоваться модулем trackball (исходники trackball.c trackball.h), самостоятельно изучив его. Он позволяет интуитивно-понятно управлять вращением объекта.

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

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

  • Дополнительные баллы даются за интерактивность сцены. В данном случае под интерактивностью имеется в виду анимация по щелчкам мышкой на различные объекты сцены. Например, открытие/закрытие крышки часов или вылет кукушки и т.п.

    Для выбора точки нужно воспользоваться возможностями GL и GLU по "захвату" части сцены. Описание нужных функций:


    Анимация объектов может быть как "резкой" (т.е. при нажатии объект сразу меняет свою позицию), так и плавной (строятся промежуточные состояния объекта). В последнем случае даются дополнительные баллы.

  • Поощряется введение дополнительной детальной геометрии. Например, ремешков, маятников и т.д. Можно сделать часы с кукушкой, будильник и т.п. 
  • Приветствуется выполнение задания в виде демонстрации, т.е.  c автоматическим вращением, возможностью работы в полноэкранном режиме и немедленным выходом по клавише Escape. Можно написать программу как Screen Saver.
  • Постарайтесь использовать максимум возможностей OpenGL. Блики, отражения, спецэффекты, тени, зеркала - за все это обязательно даются дополнительные баллы.
  • Проявите вкус - сделайте так, чтобы нравилось прежде всего Вам. Но не увлекайтесь - оставайтесь реалистами.

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

cм. предыдущее задание.

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

Обязательное требование - выполнить обязательную часть задания.

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

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

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

Оценка

Обязательная часть задания 4 балла
Детализация 2 балла
Реалистичность 4 балла
Навигация (вращение) 2 балла
Интерактивность 4 балла
Оригинальность 2 балла

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

Пример

Здесь можно посмотреть демонстрационную программу со множеством полезных опций ( запустите сначала программу makeshort.exe - она создаст ярлыки для запуска программы с различными параметрами).

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

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

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

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

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

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

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

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

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

Примечания

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

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

Главная | О курсе | Лекции | Библиотека | Задания | Оценки | FAQs
  (с) Лаборатория компьютерной графики, 1997-2003
Дизайн: Алексей Игнатенко