3d аффинные преобразования

Содержание

Слайд 2

Аффинные преобразования в пространстве

Аффинные преобразования в пространстве

Слайд 3

Аффинные преобразования в пространстве

I. Вращение в пространстве
Матрица вращения вокруг оси абсцисс на

Аффинные преобразования в пространстве I. Вращение в пространстве Матрица вращения вокруг оси
угол ϕ :

Слайд 4

Аффинные преобразования в пространстве

Матрица вращения вокруг оси ординат на угол ψ:

Аффинные преобразования в пространстве Матрица вращения вокруг оси ординат на угол ψ:

Слайд 5

,

Матрица вращения вокруг оси аппликат на угол θ:

Аффинные преобразования в

, Матрица вращения вокруг оси аппликат на угол θ: Аффинные преобразования в пространстве
пространстве

Слайд 6

Аффинные преобразования в пространстве

II. Масштабирование:

Коэффициенты:
α>0 –вдоль оси абсцисс,
β>0 –вдоль оси ординат,

Аффинные преобразования в пространстве II. Масштабирование: Коэффициенты: α>0 –вдоль оси абсцисс, β>0

γ>0 – вдоль оси аппликат.

Слайд 7

Аффинные преобразования в пространстве

III. Отражение
Матрица отражения относительно плоскости XOY:

Аффинные преобразования в пространстве III. Отражение Матрица отражения относительно плоскости XOY:

Слайд 8

Матрица отражения относительно плоскости YOZ:

Аффинные преобразования в пространстве

Матрица отражения относительно плоскости YOZ: Аффинные преобразования в пространстве

Слайд 9

Аффинные преобразования в пространстве

Матрица отражения относительно плоскости XOZ:

Аффинные преобразования в пространстве Матрица отражения относительно плоскости XOZ:

Слайд 10

IV. Перенос
Матрица переноса:

где (λ, μ, ν) – вектор переноса.

Аффинные преобразования в пространстве

IV. Перенос Матрица переноса: где (λ, μ, ν) – вектор переноса. Аффинные преобразования в пространстве

Слайд 11

ПРОЕКТИВНЫЕ ПРЕОБРАЗОВАНИЯ

ПРОЕКТИВНЫЕ ПРЕОБРАЗОВАНИЯ

Слайд 12

МЕТОДЫ И АЛГОРИТМЫ ТРЕХМЕРНОЙ ГРАФИКИ

МЕТОДЫ И АЛГОРИТМЫ ТРЕХМЕРНОЙ ГРАФИКИ

Слайд 13

Аффинные преобразования в пространстве
Системы координат

Аффинные преобразования в пространстве Системы координат

Слайд 14

ВИДЫ ПРОЕКТИРОВАНИЯ

ВИДЫ ПРОЕКТИРОВАНИЯ

Слайд 15

Преобразования координат

Преобразования координат

Слайд 16

Системы координат

Системы координат

Слайд 17

Мировая (глобальная) система координат

Мировая (глобальная) система координат

Слайд 18

Экранная система координат

Экранная система координат

Слайд 19

Система координат сцены

Система координат сцены

Слайд 20

Объектная система координат

Объектная система координат

Слайд 24

Область визуализации и функция кадрирования

Область визуализации и функция кадрирования

Слайд 25

Функция кадрирования

Функция кадрирования

Слайд 27

Параллельное проектирование

Ортографическая проекция

Матрица проектирования вдоль оси Х на плоскость YOZ

Параллельное проектирование Ортографическая проекция Матрица проектирования вдоль оси Х на плоскость YOZ

Слайд 28

Если плоскость проектирования параллельна координатной
плоскости, необходимо умножить матрицу на матрицу переноса:

Если плоскость проектирования параллельна координатной плоскости, необходимо умножить матрицу на матрицу переноса:

Слайд 29

Триметрия – нормаль к картинной плоскости образует с ортами координатных осей попарно

Триметрия – нормаль к картинной плоскости образует с ортами координатных осей попарно различные углы. Аксонометрическая проекция
различные углы.

Аксонометрическая проекция

Слайд 30

Диметрия – два угла между нормалью к картинной плоскости и координатными осями

Диметрия – два угла между нормалью к картинной плоскости и координатными осями равны. Аксонометрическая проекция
равны.

Аксонометрическая проекция

Слайд 31

Аксонометрическая проекция

Изометрия – все три угла между нормалью к картинной плоскости и

Аксонометрическая проекция Изометрия – все три угла между нормалью к картинной плоскости и координатными осями равны.
координатными осями равны.

Слайд 32

Параллельное проектирование

Косоугольная проекция

При косоугольном проектировании на плоскость XOY имеем:

Матрица преобразования имеет вид:

Параллельное проектирование Косоугольная проекция При косоугольном проектировании на плоскость XOY имеем: Матрица преобразования имеет вид:

Слайд 33

Свободная проекция:

Кабинетная проекция:

Косоугольная проекция

Свободная проекция: Кабинетная проекция: Косоугольная проекция

Слайд 34

Перспективное проектирование

Одноточечное перспективное преобразование

Перспективное проектирование Одноточечное перспективное преобразование

Слайд 35


Одноточечное перспективное преобразование

Одноточечное перспективное преобразование

Слайд 36

Перспективное проектирование

Двухточечное перспективное преобразование

Перспективное проектирование Двухточечное перспективное преобразование

Слайд 37

Двухточечное перспективное преобразование

Двухточечное перспективное преобразование

Слайд 38

Перспективное проектирование

Трехточечное перспективное преобразование

Перспективное проектирование Трехточечное перспективное преобразование

Слайд 39

на оси x:
на оси y:
на оси z:

.

на оси x: на оси y: на оси z: .

Слайд 40

OpenGL (Open Graphic Library) – библиотека графических функций, интерфейс для графических прикладных

OpenGL (Open Graphic Library) – библиотека графических функций, интерфейс для графических прикладных программ.
программ.

Слайд 41

Open Graphics Library — открытая графическая библиотека, графическое API — спецификация, определяющая

Open Graphics Library — открытая графическая библиотека, графическое API — спецификация, определяющая
независимый от языка программирования кроссплатформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Преимущества OpenGL

Слайд 42

Включает более 250 функций для рисования сложных трёхмерных сцен из простых (2D)

Включает более 250 функций для рисования сложных трёхмерных сцен из простых (2D)
примитивов.
Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях.

OpenGL

Слайд 43

OpenGL 1.0 Silicon Graphics Incorporated (SGI) 1992 г.
OpenGL 2.0 3DLabs 2001 г.
OpenGL 3.0 Khronos Group

OpenGL 1.0 Silicon Graphics Incorporated (SGI) 1992 г. OpenGL 2.0 3DLabs 2001
2008 г.
OpenGL 3.1, OpenGL 3.2 Khronos Group 2009 г.
OpenGL 3.3 Khronos Group 2010 г.
OpenGL 4.0 Khronos Group 2010 г.
OpenGL 4.1Khronos Group 2010 г.
OpenGL 4.2 Khronos Group 2011 г.

История развития OpenGL

Слайд 44

История развития OpenGL

2015 Mantle - спецификация низкоуровневого API, разработанная компанией AMD в качестве альтернативы DirectX и OpenGL.

Март

История развития OpenGL 2015 Mantle - спецификация низкоуровневого API, разработанная компанией AMD
2018 – Vulkan 1.1, открытый графический API доступен на Windows, Linux, Android, Nintendo Switch и различных облачных системах, но его не поддерживает ни одна платформа Apple.

Февраль 2016 - Первый публичный релиз Vulkan.

Слайд 45

MoltenVK

Единственная возможность работать с Vulkan на MacOS
Стоисть ≈250$
Работает с потерей производительности

MoltenVK Единственная возможность работать с Vulkan на MacOS Стоисть ≈250$ Работает с потерей производительности

Слайд 46

Ручное управление памятью
Отсутствие проверок в драйвере
Спроектирован для многопоточности

Ручное управление памятью Отсутствие проверок в драйвере Спроектирован для многопоточности

Слайд 47

- Vulkan это:
а) Лишь стандарт, а значит реализация лежит на разработчиках

- Vulkan это: а) Лишь стандарт, а значит реализация лежит на разработчиках
драйверов.
б) Очень молодой стандарт (~2 года)
На данный момент нет поддержки для MacOS.

Слайд 48

Интерфейс OpenGL

Graphics Library (GL)
Graphics Library Utility (GLU)
Graphics Library Utility Toolkit

Интерфейс OpenGL Graphics Library (GL) Graphics Library Utility (GLU) Graphics Library Utility Toolkit (GLUT)
(GLUT)

Слайд 49

glBegin(<тип>); // указываем тип примитива
glVertex[2 3][ i f v](...); // первая вершина
……………………………//

glBegin( ); // указываем тип примитива glVertex[2 3][ i f v](...); //
остальные вершины
glVertex[2 3][ i f v](...); // последняя вершина
glEnd;
В OpenGL левый нижний угол области вывода имеет координаты [-1; -1], правый верхний [1; 1].

Соглашение о наименовании функций

Слайд 50

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 51

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 52

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 53

Область вывода

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

Область вывода После применения матрицы проекций на вход следующего преобразования подаются усеченные
для которых значения всех компонент
(xc, yc, zc, wc)T находятся в отрезке [-1,1].
После этого находятся нормализованные координаты вершин по формуле:
(xn, yn, zn)T=(xc/wc, yc/wc, zc/wc)T.
Область вывода:
glViewPort(x, y, width, height: GLint).

Слайд 54

МАТРИЦЫ OPENGL

glMatrixMode(mode);
Mode:
Видовая: GL_MODELVIEW,
Проекций: GL_PROJECTION,
Tекстуры: GL_TEXTURE
glLoadIdentity = glPushMatrix
glPopMatrix

МАТРИЦЫ OPENGL glMatrixMode(mode); Mode: Видовая: GL_MODELVIEW, Проекций: GL_PROJECTION, Tекстуры: GL_TEXTURE glLoadIdentity = glPushMatrix glPopMatrix

Слайд 55

ПРЕОБРАЗОВАНИЯ OPENGL

Масштабирование:
glScale[2 3] [I f d] (α, β ,γ);
α –

ПРЕОБРАЗОВАНИЯ OPENGL Масштабирование: glScale[2 3] [I f d] (α, β ,γ); α
относительно оси абсцисс,
β – ординат; γ –аппликат.
Поворот:
glRotate[2 3] [I f d] (α , x, y, z);
Значения x, y, z
Сдвиг:
glTranslate[2 3] [I f d] (dx, dy, dz);

Слайд 56

TAO

Tao Framework: OpenGL + C#

TAO Tao Framework: OpenGL + C#

Слайд 57

Установка

Скачать Tao Framework можно с официальной страницы фреймворка на sourceforge.net:
www.sourceforge.net/projects/taoframework
Установка крайне проста,

Установка Скачать Tao Framework можно с официальной страницы фреймворка на sourceforge.net: www.sourceforge.net/projects/taoframework
состоит из нажатий кнопки "далее", ошибки могут возникнуть в случае, если у вас нет .NET 2.0 или выше, но, по умолчанию, он устанавливается вместе с Visual Studio.

Слайд 58

В открывшемся окне «Добавить ссылку» перейдите к закладке «Обзор». После этого перейдите

В открывшемся окне «Добавить ссылку» перейдите к закладке «Обзор». После этого перейдите
к директории, в которую была установлена библиотека Tao Framework. (По умолчанию – "C:\Program Files\Tao Framework").

Слайд 60

OpenGL + Delphi (Object Pascal)

OpenGL + Delphi (Object Pascal)

Слайд 61

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 62

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 63

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 64

Визуализация двумерных объектов

Визуализация двумерных объектов

Слайд 66

glPointSize (20);
glColor3f (1.0, 1.0, 1.0);
glBegin (GL_POINTS);
glVertex2f (-1, -1);
glVertex2f (-1, 1);
glVertex2f (0,

glPointSize (20); glColor3f (1.0, 1.0, 1.0); glBegin (GL_POINTS); glVertex2f (-1, -1); glVertex2f
0);
glVertex2f (1, -1);
glVertex2f (1, 1);
glEnd;

GL_POINTS

Слайд 67

glLineWidth (2.5);
glBegin (GL_LINES);
glVertex2f (-1, -1);
glVertex2f (1, 1);
glVertex2f (-1, 1);
glVertex2f (1,

glLineWidth (2.5); glBegin (GL_LINES); glVertex2f (-1, -1); glVertex2f (1, 1); glVertex2f (-1,
-1);
glEnd;

GL_LINES

Слайд 68

СОБЫТИЕ, СООБЩЕНИЕ, КОНТЕКСТ

procedure TfmTest.Button1Click(Sender: TObject);
var H : HWND;
begin
H := FindWindow('TForm1', 'Form1');

СОБЫТИЕ, СООБЩЕНИЕ, КОНТЕКСТ procedure TfmTest.Button1Click(Sender: TObject); var H : HWND; begin H

If H <> 0 then ShowMessage('Есть Form1!')
else ShowMessage('Нет Form1!')
end;
Все окна при своем создании регистрируются в операционной системе и получают уникальный идентификатор, называемый "ссылка на окно".
Тип этой величины в Delphi – HWND
(HWND - WiNDow Handle - ссылка на окно)

Слайд 69

ССЫЛКИ НА КОНТЕКСТ УСТРОЙСТВА И ВОСПРОИЗВЕДЕНИЯ

var
dc : HDC; { ссылка на контекст

ССЫЛКИ НА КОНТЕКСТ УСТРОЙСТВА И ВОСПРОИЗВЕДЕНИЯ var dc : HDC; { ссылка
устройства }
hrc: HGLRC { ссылка на контекст воспроизведения }

Контекст устройства - величина типа HDC (функция GetDC). Ссылке на контекст устройства в Delphi соответствует свойство Canvas.Handle формы, принтера и некоторых компонентов (вместо DC можно использовать Canvas.Handle) .
Графическая система OpenGL, как и любое другое приложение Windows, также нуждается в ссылке на окно, на котором будет осуществляться воспроизведение − специальной ссылке на контекст воспроизведения − величина типа HGLRC (Handle openGL Rendering Context, ссылка на контекст воспроизведения OpenGL).

Слайд 70

КОНТЕКСТ

Приложению для того, чтобы воспользоваться функциями воспроизведения Windows, необходимо только указать

КОНТЕКСТ Приложению для того, чтобы воспользоваться функциями воспроизведения Windows, необходимо только указать
ссылку на контекст устройства, содержащую средства и характеристики устройства вывода.
Win32 Programmer's Reference фирмы MicroSoft о контексте устройства сообщает следующее: "Контекст устройства является структурой, которая определяет комплект графических объектов и связанных с ними атрибутов, и графические режимы, влияющие на вывод. Графический объект включает карандаш для изображения линии, кисть для краски и заполнения, растр для копирования или прокрутки частей экрана, палитру для определения комплекта доступных цветов, области для отсечения и других операций, и маршрута для операций рисования".

Слайд 71

ФОРМАТ ПИКСЕЛЯ

Прежде чем получить контекст воспроизведения, сервер OpenGL должен получить детальные

ФОРМАТ ПИКСЕЛЯ Прежде чем получить контекст воспроизведения, сервер OpenGL должен получить детальные
характеристики используемого оборудования. Эти характеристики хранятся в специальной структуре, тип которой - TPixelFormatDescriptor (описание формата пикселя). Формат пикселя определяет конфигурацию буфера цвета и вспомогательных буферов.

PFD_DRAW_TO_WINDOW
PFD_SUPPORT_OPENGL
PFD_DOUBLEBUFFER

Слайд 72

Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL;
…….
Private hrc: HGLRC;

Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL; ……. Private hrc: HGLRC; МИНИМАЛЬНАЯ ПРОГРАММА

МИНИМАЛЬНАЯ ПРОГРАММА

Слайд 73

procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
FillChar

procedure SetDCPixelFormat (hdc : HDC); var pfd : TPixelFormatDescriptor; nPixelFormat : Integer;
(pfd, SizeOf (pfd), 0);
pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat (hdc, @pfd);
SetPixelFormat (hdc, nPixelFormat, @pfd);
end;

ФОРМАТ ПИКСЕЛЯ

Слайд 74

procedure TForm1.FormPaint(Sender: TObject);
begin
wglMakeCurrent(Canvas.Handle, hrc); // устанавливает текущий контекст воспроизведения
glViewPort

procedure TForm1.FormPaint(Sender: TObject); begin wglMakeCurrent(Canvas.Handle, hrc); // устанавливает текущий контекст воспроизведения glViewPort
(0, 0, ClientWidth, ClientHeight); // область вывода
glClearColor (0.5, 0.5, 0.75, 1.0); // цвет фона
glClear (GL_COLOR_BUFFER_BIT); // очистка буфера цвета
glPointSize (20); // размер точек
glColor3f (1.0, 0.0, 0.5); // текущий цвет примитивов
glBegin (GL_POINTS); // открываем командную скобку
glVertex2f (-1, -1);
……glEnd; // закрываем командную скобку
SwapBuffers(Canvas.Handle); // содержимое буфера - на экран
wglMakeCurrent(0, 0);
end;

ПРОРИСОВКА ОКНА

Слайд 75

procedure TfrmGL.FormCreate(Sender: TObject);
begin
SetDCPixelFormat(Canvas.Handle);
hrc := wglCreateContext(Canvas.Handle);
end;

СОЗДАНИЕ ФОРМЫ

procedure TfrmGL.FormCreate(Sender: TObject); begin SetDCPixelFormat(Canvas.Handle); hrc := wglCreateContext(Canvas.Handle); end; СОЗДАНИЕ ФОРМЫ
Имя файла: 3d-аффинные-преобразования.pptx
Количество просмотров: 61
Количество скачиваний: 2