Gamedev Math
Gamedev Math
Никита Лисица
2024
1 / 65
Обо мне
2 / 65
Обо мне
2 / 65
Обо мне
2 / 65
Яндекс.Карты
3 / 65
Курс о real-time графике
4 / 65
Курс о трассировке лучей
5 / 65
Инди-игры
6 / 65
Инди-игры
7 / 65
Из чего состоят игры?
8 / 65
Из чего состоят игры?
• Программирование логики
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
• Аудио
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
• Аудио
• Создание контента (моделей, текстур, анимаций, эффектов)
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
• Аудио
• Создание контента (моделей, текстур, анимаций, эффектов)
• Гейм-дизайн
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
• Аудио
• Создание контента (моделей, текстур, анимаций, эффектов)
• Гейм-дизайн
• ...и многое другое
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
• Аудио
• Создание контента (моделей, текстур, анимаций, эффектов)
• Гейм-дизайн
• ...и многое другое
8 / 65
Из чего состоят игры?
• Программирование логики
• Графический движок
• Физика
• Аудио
• Создание контента (моделей, текстур, анимаций, эффектов)
• Гейм-дизайн
• ...и многое другое
8 / 65
Перемещение персонажа
9 / 65
Перемещение персонажа
10 / 65
Перемещение персонажа
10 / 65
Перемещение персонажа
10 / 65
Перемещение персонажа
10 / 65
Перемещение персонажа
10 / 65
Плавное перемещение персонажа
11 / 65
Плавное перемещение персонажа
11 / 65
Плавное перемещение персонажа
δ : [0, 1] → [0, 1]
δ(0) = 0
δ(1) = 1
11 / 65
Плавное перемещение персонажа
δ : [0, 1] → [0, 1]
δ(0) = 0
δ(1) = 1
11 / 65
Easing функции
12 / 65
Easing функции
12 / 65
Easing функции
12 / 65
Easing функции
12 / 65
Smoothstep
13 / 65
Smoothstep
14 / 65
Smoothstep
14 / 65
Smoothstep
14 / 65
Smoothstep
14 / 65
Генерация мира
15 / 65
Генерация мира
16 / 65
Генерация мира
16 / 65
Генерация мира
16 / 65
Генерация мира
16 / 65
Генерация мира
16 / 65
Генерация мира
17 / 65
Генерация мира
18 / 65
Генерация мира
18 / 65
Генерация мира
18 / 65
Шум
19 / 65
Шум
20 / 65
Шум
20 / 65
Шум
20 / 65
Шум
20 / 65
Карта высот на основе белого шума
21 / 65
Гладкий шум
22 / 65
Гладкий шум
22 / 65
Гладкий шум
23 / 65
Гладкий шум
23 / 65
Шум Перлина: векторы
24 / 65
Шум Перлина: скалярные произведения
25 / 65
Шум Перлина
26 / 65
Шум Перлина
x · y · d1 + (1 − x) · y · d2 + x · (1 − y) · d3 + (1 − x) · (1 − y) · d4
26 / 65
Шум Перлина: билинейная интерполяция
27 / 65
Шум Перлина
28 / 65
Шум Перлина
28 / 65
Шум Перлина
x ← 3x2 − 2x3
y ← 3y 2 − 2y 3
28 / 65
Шум Перлина
29 / 65
Фрактальный шум
30 / 65
Фрактальный шум
30 / 65
Фрактальный шум
30 / 65
Фрактальный шум
31 / 65
Фрактальный шум
32 / 65
Фрактальный шум
32 / 65
Карта на основе фрактального шума
33 / 65
Рассчёт освещения
34 / 65
Рассчёт освещения
34 / 65
Рассчёт освещения
34 / 65
Рассчёт освещения
34 / 65
Нормаль
35 / 65
Вычисление нормали
36 / 65
Вычисление нормали
36 / 65
Вычисление нормали
36 / 65
Частные производные
37 / 65
Карта нормалей
38 / 65
Нормаль к шуму Перлина
39 / 65
Нормаль к шуму Перлина
39 / 65
Нормаль к шуму Перлина
39 / 65
Разрыв в производной
40 / 65
Разрыв в производной
41 / 65
Нормаль к шуму Перлина
42 / 65
Нормаль к шуму Перлина
42 / 65
Нормаль к шуму Перлина
42 / 65
Нормаль к шуму Перлина
42 / 65
Плавные нормали
43 / 65
Карта с освещением
44 / 65
Ландшафт на основе фрактального шума
45 / 65
Физический движок
46 / 65
Физический движок
47 / 65
Физический движок
47 / 65
Физический движок
47 / 65
Физический движок
47 / 65
Физический движок
47 / 65
Физический движок
48 / 65
Физический движок
48 / 65
Физический движок
48 / 65
Физический движок
49 / 65
Физический движок
49 / 65
Физический движок
49 / 65
Методы решения уравнений движения
50 / 65
Вращения
51 / 65
Вращения
51 / 65
Вращения
51 / 65
Вращения
51 / 65
Трёхмерные вращения
52 / 65
Трёхмерные вращения
53 / 65
Трёхмерные вращения
53 / 65
Трёхмерные вращения
53 / 65
Трёхмерные вращения
53 / 65
Кватернионы
• Решение – кватернионы!
54 / 65
Кватернионы
• Решение – кватернионы!
• Кватернионы – это четвёрки вещественных чисел (x, y, z, w) с
покомпонентным сложением и хитрым, некоммутативным
законом умножения
54 / 65
Кватернионы
• Решение – кватернионы!
• Кватернионы – это четвёрки вещественных чисел (x, y, z, w) с
покомпонентным сложением и хитрым, некоммутативным
законом умножения
• Что-то вроде четырёхмерных комлексных чисел
54 / 65
Кватернионы
• Решение – кватернионы!
• Кватернионы – это четвёрки вещественных чисел (x, y, z, w) с
покомпонентным сложением и хитрым, некоммутативным
законом умножения
• Что-то вроде четырёхмерных комлексных чисел
• Очень интересный и важный математический объект
54 / 65
Кватернионы
55 / 65
Кватернионы
55 / 65
Распространение света
56 / 65
Распространение света
56 / 65
Распространение света
56 / 65
Распространение света
56 / 65
Распространение света
57 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
58 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
58 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
58 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
58 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
58 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
59 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
59 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
59 / 65
Уравнение рендеринга
Z
Iout (p, ω
~ out , λ) = Ie (p, ω
~ out , λ)+ Iin (p, ω
~ in , λ)·f (p, ω
~ in , ω ωin · ~n)d~
~ out , λ)·(~ ωin
S2
59 / 65
Уравнение рендеринга
60 / 65
Уравнение объёмного рендеринга
61 / 65
Уравнение объёмного рендеринга
61 / 65
Уравнение объёмного рендеринга
61 / 65
Уравнение объёмного рендеринга
ZL
62 / 65
Уравнение объёмного рендеринга
63 / 65
Уравнение объёмного рендеринга
63 / 65
Лучи света
64 / 65
Небо
65 / 65