507.91K
Категория: ПрограммированиеПрограммирование

Разработка графического приложения на C# с использованием OpenGL

1.

Министерство образования и науки Российской
Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых»
(ВлГУ)
Кафедра информационных систем
и программной инженерии
Курсовой проект
Разработка графического приложения на C# с использованием OpenGL
«Аптека»
Вариант 23
Презентация
Выполнила: ст.гр.ПРИ-120
Никитина И.С.
Принял:
Жигалов И. Е.
Владимир 2024

2.

Введение
Курсовой проект выполнен по дисциплине «Программирование компьютерной графики».
Темой курсового проекта является «Разработка графического приложения на C# с использованием
OpenGL». Предметной областью является аптека.
Компьютерная графика — это область информационных технологий, в которой создают и
обрабатывают графические изображения на компьютерах. С помощью компьютерной графики можно
делать двухмерные и трехмерные картинки, анимацию, виртуальную реальность, обрабатывать
изображения, разрабатывать компьютерные игры и многое другое.
2

3.

Цель разработки
Цель разработки состоит в освоении средств разработки приложений в
среде Visual Studio с использованием графической библиотеки OpenGL.
Назначение разработки - управление анимированными объектами.
3

4.

Функциональные требования
При нажатии на кнопку «Разбить фонарь» в фонарь должен лететь камень (анимация)
При соприкосновении камня и фонаря отобразить разбитие фонаря с помощью системы частиц
При нажатии на кнопку «Починить фонарь» вернуть всё в изначальное состояние
При разбитии фонаря изменить освещение на тёмное
Передвигать объекты «Лекарства» нажатием на клавиши клавиатуры
При передвижении правильных лекарств в зону покупки переносить их в аптечку
При передвижении неправильных лекарств в зону покупки перекрасить её в красный цвет и заблокировать
передвижение остальных объектов
При нажатии на кнопку «Ещё разок» вернуть элементы в изначальное состояние
Циклическая анимация в телевизоре
Управление положением объектов
Переключение управления между объектами
Взаимодействие объектов
4

5.

Нефункциональные требования
Требования к реализации
Использование C# и OpenGL
Требования к производительности
Приложение должно сохранять высокую отзывчивость в течение всего времени
пользования приложением.
Требования к интерфейсу
Шрифт ввода-вывода данных - кириллица;
Интерфейс должен быть удобен и прост в понимании для пользователя.
5

6.

Моделируемая сцена
Моделируемая сцена будет следующая: пользователю доступны несколько вариантов
позиции камеры: улица, аптека, аптечка, лекарства. Локация «Улица» вдохновлена известным
стихотворением А. Блока «Ночь, улица, фонарь, аптека…». Пользователь видит перед собой
аптеку и фонарь (а ещё ночь и улицу). Также на земле лежит камень. При нажатии на кнопку
«Разбить фонарь» камень летит в фонарь и разбивает его. После летят осколки и гаснет свет.
Чтобы его починить, нужно нажать на кнопку «Починить фонарь».
В сцене «Аптека» пользователь видит перед собой стол с аптечкой и несколькими
объектами. На столе расположен фрактал «Кривая Леви» (23 вариант). Также на стене аптеки
расположен телевизор, где из стороны в сторону передвигаются мячики (циклическая
анимация).
6

7.

Моделируемая сцена
При переходе к позиции «Аптечка» пользователю предстоит собрать аптечку из
предложенных элементов, среди которых: чипсы, пластырь, сигареты (курить – плохо),
активированный уголь. Их можно передвигать к «зеленой» зоне покупок, чтобы добавить к
аптечке. Если собрать правильную аптечку из угля и пластыря, то появится диалоговое окно
«Ура», означающее победу. Если переместить неправильный объект в зону покупок – зона
загорится красным цветом, а дальнейшее передвижение объектов будет заблокировано. При
нажатии на кнопку «Ещё разок?» элементы сцены вернуться в изначальное состояние и будут
снова доступны для передвижений. Также на фоне проигрывается дорожка со звуками кассы.
При переходе к позиции «Лекарства» пользователю даётся возможность поближе изучить
предлагаемые элементы аптечки, рассмотрение которых затруднительно в других позициях
камеры.
7

8.

Моделирование графических объектов
Аптека
цилиндра
6
формируется
из
гранями.
же
Там
расположена
дверь,
являющаяся
плоскостью.
Также
присутствует
вывеска «Аптека» - текстура.
8

9.

Моделирование графических объектов
Фонарь – это очень сильно вытянутый по
оси Z куб – столб. Лампа – это цилиндр с
6 гранями. Связующая балка – куб,
растянутый по оси Y. В функцию
отрисовки фонаря передаётся Booleanзначение, отражающее состояние фонаря
– разбит ли он. Если нет – цвет лампы
жёлтый, если да – чёрный. Плюс фонарь
освещает территорию рядом с нимотрисовывается
окружность
под
фонарём.
9

10.

Моделирование графических объектов
Камень – это чёрная сфера. В функцию
отрисовки передаются значения отклонения по
осям X и Z – для анимирования полёта камня в
фонарь.
10

11.

Моделирование графических объектов
Стол – это куб, растянутый по оси X. Для
отрисовки фрактала «Кривая Леви» создана
отдельная рекурсивная функция.
11

12.

Моделирование графических объектов. Циклическая анимация
Для моделирования телевизора используется куб, сильно уменьшенный по оси Y. Для
реализации циклической анимации в неё, так же, как и в функцию отрисовки камня, передаются
дельта перемещений. При достижении определённого значения – края экрана, значение
перемещения начинает меняться в другую сторону.
12

13.

Моделирование графических объектов
Аптечка

два
куба,
один
уменьшенный по оси Z, другой по
оси Y. Также для отрисовки креста
используются
две
плоскости
красного цвета.
13

14.

Моделирование графических объектов
Для
всех
предлагаемых
элементов
аптечки сначала рисуется куб, а затем
накладывается соответствующая текстура.
Также
функции
принимают
значения
перемещения, а два элемента «Уголь» и
«Пластырь» - еще и булеан-переменную,
отражающую их позицию – находятся ли
они в аптечке.
14

15.

Интерфейс программы
После запуска приложения перед пользователем открывается следующая картина: ночь,
улица, фонарь, аптека...
15

16.

Событие. Разбитие и починка фонаря
При нажатии на кнопку «Разбить фонарь» активируется переменная isStoneUsing, отражающая то, что камень
используется. Пока переменная равна истине, значения delta перемещения камня увеличиваются до тех пор, пока
камень не достигнет фонаря. Как только это произойдёт, переменная isStoneUsing будет деактивирована, но будет
активирована isStoneUsed. В этот момент запускается система частиц, переменная isLight становится ложью (горит
ли фонарь). Сцена темнеет.
При нажатии на кнопку «Починить фонарь» переменная isLight снова равна true.
16

17.

Событие. Перемещение элементов аптечки в аптечку
При нажатии на кнопки D1, D2, D3 и D4
происходит
обработка
функцией
AnT_KeyDown. Объектам добавляется delta
значение.
В
функции
checkObjectsOnTheTable
происходит
проверка, не зашли ли неправильные товары
в
зону
покупки
(тогда
активируется
переменная isError), а также зашли ли
правильные товары в зону покупки.
17

18.

Событие. Перемещение элементов аптечки в аптечку
Если переместили неправильные товары
в аптечку:
Если
переместили
правильные
товары
в
аптечку:
18

19.

Меню приложения
Информация о программе
19

20.

Заключение
В результате выполнения курсового проекта по дисциплине «Программирование компьютерной
графики» была достигнута цель - освоены средства разработки приложений в среде Microsoft C# с
использованием графической библиотеки OpenGL.
В соответствии с выбранной предметной областью было спроектировано и разработано
графическое приложение на С# с использованием технологии OpenGL.
20

21.

Использованная литература
1.
Жигалов И.Е. Компьютерная графика: Курс лекций/ Владим. гос. ун-т. Владимир, 2004. 124 с. ISBN 589368-459-1.
2.
Жигалов И.Е., Новиков И.А. Программирование компьютерной графики. Учебное пособие./ Владим.
гос. ун-т. Владимир, 2014. 96 с.
3.
Жигалов И.Е., Новиков И.А. Программирование двухмерной компьютер-ной графики. Учебное
пособие./ Владим. гос. ун-т. Владимир, 2015. 120 с.
4.
Жигалов И. Е., Новиков И.А. Программирование трехмерной компьютер-ной графики : учеб. пособие /
Владим. гос. ун-т им. А. Г. и Н. Г. Столетовых. ‒Владимир: Изд-во ВлГУ, 2016. ‒92 с.
21
English     Русский Правила