Похожие презентации:
Трехмерное моделирование
1. 6. Трехмерное моделирование
2. Трехмерные модели
Трехмерные моделиКаркасные модели
Поверхностные
модели
Твердотельные
модели
3. Каркасные модели
Геометрический объект в каркасной моделипредставляется набором ребер. В качестве
ребер выступают отрезки, кривые различных
порядков, сплайны и др.
4. Поверхностные модели
В поверхностных моделях геометрическийобъект задается набором ограничивающих
поверхностей.
5. Твердотельные модели
В твердотельных моделях объект характеризуется границей изаполнением. Твердотельная модель описывается в
терминах того трёхмерного объема, который занимает
определяемое ею тело, т.е. твердотельное моделирование
обеспечивает полное однозначное описание трёхмерной
геометрической формы.
6. Аналитические модели
(x – x0)2 + (y – y0)2 = R2R
x0, y0
y = ax2 + bx + c
F(x, y) = 0
Для описания кривой на плоскости можно подобрать
соответствующее аналитическое выражение.
7. Аналитические модели
Аналитически можно задать трехмерную поверхность.8. Аналитические модели
При аналитическом моделировании объектов частоиспользуют поверхности второго порядка:
Ax2 + By2 + Cz2 + Dxy + Exz + Fyz + Gx + Hy + Jz + K = 0
9. Аналитические модели
10. Аналитические модели
Кубические кривыеx = X(t); y = Y(t); z = Z(t)
X (t ) a x t 3 bx t 2 cx t d x
T t3 t2 t 1
Y ( t ) a y t 3 by t 2 c y t d y
ax
bx
C
cx
d x
Z (t ) a z t 3 bz t 2 cz t d z
0 t 1
Q(t ) X (t ) Y (t ) Z (t ) TC
ay
by
cy
dy
az
bz
cz
d z
11. Аналитические модели
Построение кривых12. Аналитические модели
Кубический полиномДля нахождения кубического полинома требуется
установить значения его четырех коэффициентов. Для
этого следует наложить на кривую четыре
дополнительных условия. Такими условиями служат
значения кубического сегмента на концевых точках,
значения касательного вектора и условия связности
между соседними сегментами.
Касательный вектор:
d
d
Q (t ) X (t )
dt
dt
3a x t 2 2bx t cx
d
Y (t )
dt
3a y t 2 2by t c y
d
Z (t )
dt
3a z t 2 2bz t cz
13. Аналитические модели
Базовая матрица, геометрический вектор, стыковочная матрицаQ(t) = TC = TMG = BG
M – базовая матрица четвертого порядка
G – геометрический вектор (G = [G1 G2 G3 G4]T)
B – стыковочная матрица (B = TM)
Q (t ) t 3 t 2
m11
m21
t 1
m31
m41
m12
m13
m22 m23
m32 m33
m42 m43
m14 g1 x
m24 g 2 x
m34 g3 x
m44 g 4 x
g1 y
g2 y
g3 y
g4 y
g1z
g2 z
g3 z
g 4 z
14. Аналитические модели
Кривые ЭрмитаКривые Эрмита – частный случай кубических полиномиальных
кривых, которые задаются концевыми точками P1, P4 и
касательными векторами R1, R4 в них.
Gx P1 x
X (t ) t
P4 x
3
t
2
R4 x
T
R1 x
d
t 1 , X (t ) 3t 2
dt
2t 1 0
P1 x X (0) 0 0 0 1 MG x , P4 x X (1) 1 1 1 1 MG x
d
d
R1 x X (0) 0 0 1 0 MG x , R4 x X (1) 3 2 1 0
dt
dt
15. Аналитические модели
Базовая матрица ЭрмитаP1 x 0
P4 x 1
Gx
R1 x 0
R4 x 3
0
1
M
0
3
0 0 1
1 1 1
MG x
0 1 0
2 1 0
1
0 0 1
1
2 2 1
1 1 1
3 3 2 1
0
0 1 0
0
1
0
1
2 1 0
0
0
0
16. Аналитические модели
Матричное уравнение кривых ЭрмитаX(t) = TMGx, Y(t) = TMGy, Z(t) = TMGz
Q(t) = TMG
G = [P1 P4 R1 R4]T
P1 P1x
P4 P4 x
G
R1 R1x
R4 R4 x
P1 y
P4 y
R1 y
R4 y
P1z
P4 z
R1z
R4 z
x
17. Аналитические модели
Кривые БезьеКривые Безье – специальный вид кубических полиномиальных
кривых, у которых для определения положения касательных
векторов используются специальные контрольные точки, не
принадлежащие самому объекту. Отрезки, соединяющие
контрольные точки, образуют выпуклую оболочку контрольных
точек. В общем случае выпуклая оболочка может и не касаться всех
контрольных точек.
18. Аналитические модели
Параметры кривых БезьеНачальный R1 и конечный R4 касательные векторы
кривой Безье зависят от радиус-векторов P1, P2, P3 и P4,
соединяющих контрольные точки с началом координат:
dQ (0)
R1
3( P2 P1 )
dt
dQ (1)
R4
3( P4 P3 )
dt
G P1
P2
P3
P4
T
19. Аналитические модели
Расчет параметров кривых БезьеP1 1
P4 0
Gh
R1 3
R4 0
0 P1
0 0 1 P2
M hbGb
3 0 0 P3
0 3 3 P4
0
0
Q (t ) TM hGh TM h M hbGb TM bGb
Mh, Gh – базовая матрица и геометрический вектор Эрмита
Mb, Gb – базовая матрица и геометрический вектор Безье
Mb – матрица преобразования геометрических векторов
20. Аналитические модели
Базовая матрица кривых Безье1 3 3
3 6 3
M Mb
3 3
0
1
0
0
1
0
0
0
21. Аналитические модели
Кубические B-сплайныB-сплайны – совокупность полиномиальных сегментов, положение
которых задается контрольными точками. Кубический B-сплайн
задается последовательностью полиномиальных сегментов Q3, Q4,
…, Qm, положение которых зависит от контрольных точек P0, P1, …,
Pm (m 3). Сегменты определяются на интервалах ti t < ti+1,
3 i < m, t3 = 0, ti+1 – ti = 1.
Геометрический вектор i-го сегмента:
Pi 3
Pi 2
Gsi ,3 i m
Pi 1
Pi
22. Аналитические модели
Пример кубического B-сплайна23. Аналитические модели
Базовая матрица кубического B-сплайна1 3 3
1 3 6 3
M Ms
6 3 0
3
1
4
1
1
0
0
0
24. Аналитические модели
Бикубические поверхностиx = X(s, t); y = Y(s, t); z = Z(s, t)
A(s, t) = a11s3t3 + a12s3t2 + a13s3t + a14s3 + a21s2t3 + a22s2t2 + a23s2t +
a14s2 + a31st3 + a32st2 + a33st + a44s + a41t3 + a42t2 + a43t + a44
S s3
X ( s, t ) SC xT T
a11
a21
С
a31
a41
s2
s 1
a12 a13 a14
a22 a23 a24
a32 a33 a34
a42 a43 a44
T t3
Y ( s, t ) SCyT
t2
T
t 1
Z ( s, t ) SC zT T
25. Аналитические модели
23
1
4
7
5
8
6
9
Поверхность произвольной
формы разделяется на куски
(patch), каждый из которых
аппроксимируется бикубической
поверхностью таким образом, что
бы в месте стыка совпадали не
только координаты точек, но и
первые производные.
26. Аналитические модели
1411
12
13
23
21
24
22
32
33
34
31
42
41
43
44
Каждый участок бикубической
поверхности задается
шестнадцатью точками. Тогда
бикубическая поверхность в форме
Безье задается в следующем виде:
X(s, t) = SMbGbxMbTTT
Y(s, t) = SMbGbyMbTTT
Z(s, t) = SMbGbzMbTTT
или в форме B-сплайна
X(s, t) = SMsGsxMsTTT
Y(s, t) = SMsGsyMsTTT
Z(s, t) = SMsGszMsTTT
27. Аналитические модели
Точки бикубической поверхности в форме Безье:(X, Y, Z)11, (X, Y, Z)14, (X, Y, Z)41, (X, Y, Z)44 –
координаты четырех угловых точек;
(X, Y, Z)21, (X, Y, Z)22, (X, Y, Z)12;
(X, Y, Z)13, (X, Y, Z)23, (X, Y, Z)24;
(X, Y, Z)43, (X, Y, Z)33, (X, Y, Z)34;
(X, Y, Z)42, (X, Y, Z)32, (X, Y, Z)31 – концы
касательных векторов.
28. Аналитические модели
29. Аналитические модели
1411
12
13
23
21
24
22
32
33
• совпадение смежных
точек
34
31
42
41
43
Для сшивки двух кусков
необходимо:
44
• отсутствие излома в
поперечном направлении
30. Полигональные модели
p2p6
p3
p7
p5
p1
p4
p10
p8
p9
Кривая на плоскости аппроксимируется набором отрезков, каждый
из которых определяется двумя точками – начала и конца
31. Полигональные модели
В этом случае поверхность аппроксимируетсяплоскими полигонами.
32. Полигональные модели
Для моделирования трехмерных объектом чащевсего применяются выпуклые плоские
многоугольники (полигоны) с количеством вершин
не более четырех.
33. Полигональные модели
Полигоны описывается набором вершин – точек,заданных в трехмерном пространстве.
v2
2
v1
v3
1 v4
3 12
v10
5
v5 4 11
6
10
v9
7 v8
v6
8 9
v7
1: V1, V2, V4
2: V2, V3, V4
...
12: V3, V9, V10
34. Полигональные модели
Аппроксимировать трехмерную плоскость можно с разнойточностью. Количество вершин в модели зависит от
требуемого качества картинки и от ожидаемой скорости
рендеринга - чем больше вершин, тем выше качество и тем
медленнее рендеринг.
35. Полигональные модели
Полигональная сетка – набор полигонов(граней), которые в совокупности
образуют форму объекта.
Полигональная сетка является
практически во всех графических
системах стандартным способом
представления широкого класса
объемных форм.
36. Полигональные модели
Полигональная сетка задается спискомполигонов и информацией о
направлении, куда обращен каждый
полигон.
Информация о направлении задается
в виде нормали к плоскости грани.
Нормаль указывает внешнее
направление от объекта.
37. Полигональные модели
Свойства полигональной сетки:1. Монолитность – сетка представляет монолитный объект,
если совокупность его граней заключает в себе некоторое
конечное пространство;
2. Связность – сетка называется связной, если между
любыми двумя вершинами существует непрерывный путь
вдоль ребер полигона (если сетка не является связной, то
обычно она представляет более одного объекта);
3. Простота – сетка называется простой, если отображаемый
ею объект является монолитным и не содержит отверстий
(это означает, что объект может быть деформирован в
сферу, не подвергаясь разрезанию);
4. Плоскостность – сетка называется плоской, если каждая
грань представляемого ею объекта является плоским
полигоном, т.е. вершины каждой грани лежат в одной
плоскости;
5. Выпуклость – сетка представляет выпуклый объект, если
прямая, соединяющая любые две точки внутри этого
объекта, целиком лежит внутри него.
38. Полигональные модели
Нормаль к плоской граниv3 N
( v 3 v 2)
v2
v4
( v 2 v1)
v1
N = (v2 – v1) (v3 – v2)
39. Полигональные модели
Метод НьюэллаN 1
zi znext (i ) ;
xi xnext (i ) ;
yi ynext (i ) ,
nx yi ynext (i )
i 0
N 1
n y zi znext (i )
i 0
N 1
nz xi xnext (i )
i 0
40. Полигональные модели
nv2
v3
v1
v0
Если выполнять обход
против часовой стрелки
с наружной стороны
грани, то полученный
вектор показывает
направление наружу от
грани.
41. Полигональные модели
V0 = (6, 1, 4), V1 = (7, 0, 9), V2 = (1, 1, 2).i
(V1 V0 ) (V2 V0 ) 1
5
j
1
0
k
5 (2, 23, 5)
2
nx (1 0)( 4 9) (0 1)(9 2) (1 1)( 2 4) 2
n y (4 9)(6 7) (9 2)(7 1) (2 4)(1 6) 23
nz (6 7)(1 0) (7 1)(0 1) (1 6)(1 1) 5
42. Полигональные модели
Описание тетраэдра в OpenGL//грань 0
glBegin(GL_POLYGON);
glNormal3f(0.577, 0.577, 0.577);
glVertex3f(1, 0, 0);
glVertex3f(0, 1, 0);
glVertex3f(0, 0, 1);
glEnd();
//грань 1
glBegin(GL_POLYGON);
glNormal3f(0, 0, -1);
glVertex3f(0, 0, 0);
glVertex3f(0, 1, 0);
glVertex3f(1, 0, 0);
glEnd();
//грань 2
glBegin(GL_POLYGON);
glNormal3f(-1, 0, 0);
glVertex3f(0, 0, 0);
glVertex3f(0, 0, 1);
glVertex3f(0, 1, 0);
glEnd();
//грань 3
glBegin(GL_POLYGON);
glNormal3f(0, -1, 0);
glVertex3f(1, 0, 0);
glVertex3f(0, 0, 1);
glVertex3f(0, 0, 0);
glEnd();
43. Полигональные модели
Структура хранения данных полигональнойсетки:
• в массиве вершин хранятся без повторений
координаты всех вершин;
• в массиве нормалей хранятся без
повторений компоненты нормалей к каждой
грани;
• в массиве граней для каждой грани хранятся
индексы вершин из массива вершин и
индексы нормалей, ассоциированных с
каждой вершиной грани.
44. Полигональные модели
Y2
n1
n0
n2
1
0
3
X
n3
Z
Массив
вершин
нормалей
v
x
y
z
n
x
y
0
0
0
0
0
1
1
0
0
1
0
0
2
0
1
0
2
–1
3
0
0
1
3
0
граней
z
f
v, n
v, n
v, n
0
1, 0
2, 0
3, 0
–1
1
0, 1
2, 1
1, 1
0
0
2
0, 2
3, 2
2, 2
–1
0
3
1, 3
3, 3
0, 3
0.577 0.577 0.577
45. Полигональная модель
Полиэдр – связная сетка из простых плоскихполигонов, которая ограничивает конечный объем
пространства.
1. Каждое ребро полиэдра принадлежит ровно двум
граням;
2. В каждой вершине полиэдра встречается не
менее трех ребер;
3. Грани полиэдра не являются
взаимопроникающими: две грани не имеют общих
точек или пересекаются только вдоль их общего
ребра.
46. Полигональные модели
Фундаментальное соотношение между количествомграней F, ребер E и вершин V простого
многогранника устанавливает формула Эйлера:
V + F – E = 2.
Обощение этой формулы на непростой полиэдр
имеет вид:
V + F – E = 2 + H – 2G,
где H – общее число отверстий, имеющихся в гранях,
G – число отверстий в самом полиэдре.
47. Полигональные модели
Если все грани полиэдра одинаковы и каждая из них являетсяправильным многоугольником, то объект называется
правильным многогранником. Существует всего пять таких
объектов, которые называют платоновыми телами:
Тетраэдр: V = 4, F = 4, E = 6, грани – треугольники;
Гексаэдр: V = 8, F = 6, E = 12, грани – квадраты;
Октаэдр: V = 6, F = 8, E = 12, грани – треугольники;
Икосаэдр: V = 12, F = 20, E = 30, грани – треугольники;
Додекаэдр: V = 20, F = 12, E = 30, грани – пятиугольники.
Нормальный вектор к каждой грани платонового тела – это
вектор из начала координат к центру грани,
представляющему собой среднее значение вершин.