Программа моделирования огня

Содержание

Слайд 2

Задание Программа должна реалистично визуализировать процесс горения на трехмерной сцене, при

Задание

Программа должна реалистично визуализировать процесс горения на трехмерной сцене, при наличии

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

Существующие решения. Autodesk Maya Blender 3D

Существующие решения.

Autodesk Maya
Blender 3D

Слайд 4

Обоснование разработки.

Обоснование разработки.

Слайд 5

Инструменты. Qt 5. Qt Creator. Qt Designer. QMainWindow, QPainter, … QVector,

Инструменты.

Qt 5.
Qt Creator.
Qt Designer.
QMainWindow, QPainter, …
QVector, QString, …
C++11
Библиотека
Лямбда-выражения.
clock_gettime()

Слайд 6

Диаграмма компонент.

Диаграмма компонент.

Слайд 7

Паттерн фасад.

Паттерн фасад.

Слайд 8

Паттерн мост. Дружественные классы.

Паттерн мост. Дружественные классы.

Слайд 9

Подмешивание функциональности. Mixins.

Подмешивание функциональности. Mixins.

Слайд 10

Трехмерная сцена. Пространство объектов. Камера. Экранная плоскость.

Трехмерная сцена.

Пространство объектов.
Камера.
Экранная плоскость.

Слайд 11

Математическая модель. Уравнения Навье-Стокса. Численный метод.

Математическая модель.

Уравнения Навье-Стокса.
Численный метод.

Слайд 12

Представление полей. Сетки. Скорость. Плотность. Сторонние силы. Источники вещества.

Представление полей.

Сетки.
Скорость. Плотность.
Сторонние силы. Источники вещества.

Слайд 13

Алгоритм моделирования. Учет полей. field[I][J] += dt * source[I][J]; Диффузия. float

Алгоритм моделирования.

Учет полей. field[I][J] += dt * source[I][J];
Диффузия. float a = dt

* diff * N * N; x[i,j] = (x0[i,j] + a*(x[i-1,j] + x[i+1,j] + x[i,j-1] + x[i,j+1])) / (1 + 4*a);
Слайд 14

Адвекция.

Адвекция.

Слайд 15

Анимация.

Анимация.

Слайд 16

Внешний вид.

Внешний вид.

Слайд 17

Оптимизация алгоритма. Целочисленное решение. typedef long FVal; #define FPP 9 //

Оптимизация алгоритма.

Целочисленное решение.
typedef long FVal;
#define FPP 9
// замены для операций умножения

и деления
#define XM(x, y) ((FVal)(((x)*(y))>>FPP))
#define XD(x, y) ((FVal)(((x)<На сетках размером в 40 ячеек ускорение расчета кадра на 30 %.
Слайд 18

Недоработки. OpenCL, Cuda. Взаимодействие между огнем, дымом и горючим. Спрайты вместо полноценного 3D.

Недоработки.

OpenCL, Cuda.
Взаимодействие между огнем, дымом и горючим.
Спрайты вместо полноценного 3D.

Слайд 19

Список источников. Роджерс Д . Алгоритмические основы машинной графики. Jos Stam,

Список источников.

Роджерс Д . Алгоритмические основы машинной графики.
Jos Stam, "Real-Time Fluid

Dynamics for Games".
Гради Буч и др., Объектно-ориентированный анализ и проектирование.
Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес, Приемы объектно-ориентированного проектирования. Паттерны проектирования
Макс Шлее Qt 4.8 Профессиональное программирование на C++.