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

Mais conteúdo relacionado

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Mais de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20111030 computer graphics_galinsky_lecture07_3_dvisualization