Similar presentations:
Визуализация в 3D
1.
1Viz3D
Визуализация в 3D
URL:
http://www.school30.spb.ru/cgsg/cgc/
E-mail: [email protected]
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
2. Представление объектов
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. Представление объектов
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. Иерархическое моделирование
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. Иерархическое моделирование
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. Визуализация линиями
6Визуализация линиями
Viz3D
• Визуальный реализм
– перспектива:
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
7. Визуализация линиями
7Визуализация линиями
Viz3D
• Визуальный реализм
– depth cueing (изображение глубины):
– удаление невидимых линий
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
8. Визуализация закрашенных фигур
8Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– удаление невидимых поверхностей
– цвет
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
9. Визуализация закрашенных фигур
9Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– освещение
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
10. Визуализация закрашенных фигур
10Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– закраска и интерполяция
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
11. Визуализация закрашенных фигур
11Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– текстурирование
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
12. Текстурирование
12Текстурирование
Viz3D
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
13. Визуализация закрашенных фигур
13Визуализация закрашенных фигур
Viz3D
• Визуальный реализм
– тени
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
14. Закраска (shading)
14Закраска (shading)
Viz3D
каркасная визуализация (wireframe)
плоская закраска (flat shading)
интерполяция цвета – закраска Гуро (Gouraud shading)
интерполяция нормали – закраска Фонга (Phong shading)
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
15. Pixar Shutterbug
15Pixar 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
16Pixar 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
17Pixar 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
18Pixar 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. Алгоритм плавающего горизонта
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
20Backface culling
Viz3D
• отсечение «задних» поверхностей
• определение передних и задних
многоугольников по обходу (по и против
часовой стрелке – CW, CCW)
без отсечения
с отсечением
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
21. Алгоритм Робертса
21Алгоритм Робертса
1.
2.
3.
Viz3D
Все тела выпуклы (или приводим к такому виду)
Удаление самоперекрывающихся ребер и граней
Каждое из видимых ребер каждого тела
сравнивается с каждым из оставшихся тел для
определения перекрытия
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
22. Z-Буфер
22Z-Буфер
Viz3D
для каждого мн-ка
для каждой точки мн-ка
pz = значение z в (x,y)
если pz <= ZBuf[y][x] тогда
SetPixel(x,y)
ZBuf[y][x] = pz
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
23. Алгоритм художника (list priority)
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
24. Алгоритмы с разбиением на подпространства
P2A
1
D
P1
3
B
2
C
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
24
Viz3D
25. Алгоритм построчного сканирования
25Алгоритм построчного сканирования
z
Viz3D
z
x
z
x
z
x
x
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
26. Трассировка лучей
26Трассировка лучей
Viz3D
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
27.
27Viz3D
• Практические задания (до 20.11.2011)
– Реализовать две программы построения простой 3D сцены в
реальном времени (с использованием собственных функций
построения в буфер кадра):
• «проволочная» анимация - на выбор:
– или график функции y=f(x,z) с использованием алгоритма
плавающего горизонта
– или 2-3 выпуклых тела визуализируются с использованием
алгоритма Робертса
• визуализация сплошных тел – 2-3 выпуклых тела
визуализируются с использованием алгоритма z-буфера с
закраской Гуро, освещение вычисляется как косинус угла между
нормалью к поверхности (к точке) и направлением на источник
света.
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group