Начало: 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 балла
|
Примечания:
Пример
Здесь можно посмотреть демонстрационную программу
со множеством полезных опций ( запустите сначала программу 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 заданий.
- Не забывайте правильно оформлять исходный код ваших работ
ЧаВо по заданию
|