6. Трехмерное моделирование
Трехмерные модели
Каркасные модели
Поверхностные модели
Твердотельные модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Аналитические модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональные модели
Полигональная модель
Полигональные модели
Полигональные модели
1.22M
Category: programmingprogramming

Трехмерное моделирование

1. 6. Трехмерное моделирование

2. Трехмерные модели

Трехмерные модели
Каркасные модели
Поверхностные
модели
Твердотельные
модели

3. Каркасные модели

Геометрический объект в каркасной модели
представляется набором ребер. В качестве
ребер выступают отрезки, кривые различных
порядков, сплайны и др.

4. Поверхностные модели

В поверхностных моделях геометрический
объект задается набором ограничивающих
поверхностей.

5. Твердотельные модели

В твердотельных моделях объект характеризуется границей и
заполнением. Твердотельная модель описывается в
терминах того трёхмерного объема, который занимает
определяемое ею тело, т.е. твердотельное моделирование
обеспечивает полное однозначное описание трёхмерной
геометрической формы.

6. Аналитические модели

(x – x0)2 + (y – y0)2 = R2
R
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. Аналитические модели

2
3
1
4
7
5
8
6
9
Поверхность произвольной
формы разделяется на куски
(patch), каждый из которых
аппроксимируется бикубической
поверхностью таким образом, что
бы в месте стыка совпадали не
только координаты точек, но и
первые производные.

26. Аналитические модели

14
11
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. Аналитические модели

14
11
12
13
23
21
24
22
32
33
• совпадение смежных
точек
34
31
42
41
43
Для сшивки двух кусков
необходимо:
44
• отсутствие излома в
поперечном направлении

30. Полигональные модели

p2
p6
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. Полигональные модели

n
v2
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. Полигональные модели

Y
2
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, грани – пятиугольники.
Нормальный вектор к каждой грани платонового тела – это
вектор из начала координат к центру грани,
представляющему собой среднее значение вершин.
English     Русский Rules