x,y - Физико-математический лицей № 30

advertisement
1
Viz3D
Визуализация в 3D
URL:
http://www.school30.spb.ru/cgsg/cgc/
E-mail: CGSG@yandex.ru
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
2
Представление объектов
Viz3D
V={V0, V1, V2, V3}={(x0,y0,z0), (x1,y1,z1),…}
V1
V0
P0
E3
V3
P1
E2
E4
V2
E*={#V*1, #V*2, #P*1, #P*2}
E1
E0
E0={0,1,0,-1}
E1={1,3,1,-1}
E2={3,2,1,-1}
E3={1,2,0,1}
E4={2,0,0,-1}
P*={#V*1, #V*2, #V*3 , #E*1 , #E*2 , #E*3}
P0={0,1,2,0,3,4}
P1={1,3,2,1,2,3}
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
3
Представление объектов
V2
V0
V1
V0
V4
V3
Viz3D
V3
V1
V5
V2
quad
triangle strip
(0,1,2),(2,1,3),(2,3,4),(4,3,5)
V0
V0
V2
V4
V5
V4
V3
V1
V2 triangle fan
(0,1,2),(0,2,3),(0,3,4),(0,4,5)
V1
V3
V5
quad strip
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
4
Иерархическое моделирование
Viz3D
Работа в «контексте»:
openStructure(Id1);
setLocalTranformation(rotateX(...));
addPolygon(...);
setLocalTranformation(rotateX(...));
openStructure(Id2);
setLocalTranformation(rotateX(...));
addPolygon(...);
...
closeStructure();
openStructure(Id2);
setLocalTranformation(rotateX(...));
addPolygon(...);
...
closeStructure();
...
closeStructure();
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
5
Иерархическое моделирование
Viz3D
функции:
openStructure(Id);
closeStructure();
setPolygonAttribute(...);
addPolygon(...);
setLocalTranformation(matrix_4x4);
matrix_4x4 rotateX(angle);
matrix_4x4 rotateY(angle);
matrix_4x4 rotateZ(angle);
matrix_4x4 scale(sx, sy, sz);
matrix_4x4 translate(dx, dy, dz);
postRoot();
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
6
Визуализация линиями
Viz3D
• Визуальный реализм
– перспектива:
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
7
Визуализация линиями
Viz3D
• Визуальный реализм
– depth cueing (изображение глубины):
– удаление невидимых линий
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
8
Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– удаление невидимых поверхностей
– цвет
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
9
Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– освещение
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
10
Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– закраска и интерполяция
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
11
Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– текстурирование
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
12
Текстурирование
Viz3D
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
13
Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– тени
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
14
Закраска (shading)
•
•
•
•
Viz3D
каркасная визуализация (wireframe)
плоская закраска (flat shading)
интерполяция цвета – закраска Гуро (Gouraud shading)
интерполяция нормали – закраска Фонга (Phong shading)
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
15
Pixar Shutterbug
Viz3D
3 Orthographic views
Parallel projection
Perspective View (no hidden lines)
Depth cuing (hidden lines)
http://www.siggraph.org/education/materials/HyperGraph/shutbug.htm
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
16
Pixar Shutterbug
Viz3D
Colored
Visible line determination (with facets)
Visible surface determination (constant shading)
Shaded by facets
http://www.siggraph.org/education/materials/HyperGraph/shutbug.htm
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
17
Pixar Shutterbug
Viz3D
Gouraud shaded (diffuse)
Gouraud shaded (specular)
Phong shaded (polygon based)
Phong shaded (curved surfaces based)
http://www.siggraph.org/education/materials/HyperGraph/shutbug.htm
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
18
Pixar Shutterbug
Viz3D
Multiple lights
Texture mapping
Bump mapping and shadow
Reflection mapping
http://www.siggraph.org/education/materials/HyperGraph/shutbug.htm
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
19
Алгоритм плавающего горизонта
Viz3D
глобальные массивы:
Up[W] и Down[W]
Функция точки(x,y):
if (y > Up[x])
{
SetPixel(x,y);
Up[x] = y;
}
if (y < Down[x])
{
SetPixel(x,y);
Down[x] = y;
}
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
20
Backface culling
Viz3D
• отсечение «задних» поверхностей
• определение передних и задних
многоугольников по обходу (по и против
часовой стрелке – CW, CCW)
без отсечения
с отсечением
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
21
Алгоритм Робертса
1.
2.
3.
Viz3D
Все тела выпуклы (или приводим к такому виду)
Удаление самоперекрывающихся ребер и граней
Каждое из видимых ребер каждого тела
сравнивается с каждым из оставшихся тел для
определения перекрытия
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
22
Z-Буфер
Viz3D
для каждого мн-ка
для каждой точки мн-ка
pz = значение z в (x,y)
если pz <= ZBuf[y][x] тогда
SetPixel(x,y)
ZBuf[y][x] = pz
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
23
Алгоритм художника (list priority)
Viz3D
Сортировка многоугольников по оси Z (по
глубине) – ближней или дальней точке
Разрешение всех неоднозначностей при
перекрытиях по глубине, «разрезание»
при необходимости многоугольников
Построение всех многоугольников от
дальнего по глубине к ближнему.
текущий (дальний) мн-к P:
по каждому мн-ку Q,
с которым P пересекается по z:
Оболочки P и Q не пересекаются по x?
Оболочки P и Q не пересекаются по y?
P целиком лежит по другую сторону от
Q по отношению к наблюдателю?
Q целиком лежит по одну сторону от
P по отношению к наблюдателю?
Проекции P и Q на плоскость (x,y) не
пересекаются?
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
Алгоритмы с разбиением на подпространства
P2
A
1
D
P1
3
B
2
C
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
24
Viz3D
25
Алгоритм построчного сканирования
z
Viz3D
z
x
z
x
z
x
x
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
26
Трассировка лучей
Viz3D
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
27
Viz3D
• Практические задания (до 20.11.2011)
– Реализовать две программы построения простой 3D сцены в
реальном времени (с использованием собственных функций
построения в буфер кадра):
• «проволочная» анимация - на выбор:
– или график функции y=f(x,z) с использованием алгоритма
плавающего горизонта
– или 2-3 выпуклых тела визуализируются с использованием
алгоритма Робертса
• визуализация сплошных тел – 2-3 выпуклых тела
визуализируются с использованием алгоритма z-буфера с
закраской Гуро, освещение вычисляется как косинус угла между
нормалью к поверхности (к точке) и направлением на источник
света.
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
Download