Представление объектов
Представление объектов
Иерархическое моделирование
Иерархическое моделирование
Визуализация линиями
Визуализация линиями
Визуализация закрашенных фигур
Визуализация закрашенных фигур
Визуализация закрашенных фигур
Визуализация закрашенных фигур
Текстурирование
Визуализация закрашенных фигур
Закраска (shading)
Pixar Shutterbug
Pixar Shutterbug
Pixar Shutterbug
Pixar Shutterbug
Алгоритм плавающего горизонта
Backface culling
Алгоритм Робертса
Z-Буфер
Алгоритм художника (list priority)
Алгоритмы с разбиением на подпространства
Алгоритм построчного сканирования
Трассировка лучей
4.14M
Categories: programmingprogramming informaticsinformatics

Визуализация в 3D

1.

1
Viz3D
Визуализация в 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

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

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

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

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. Алгоритм плавающего горизонта

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

20
Backface culling
Viz3D
• отсечение «задних» поверхностей
• определение передних и задних
многоугольников по обходу (по и против
часовой стрелке – CW, CCW)
без отсечения
с отсечением
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group

21. Алгоритм Робертса

21
Алгоритм Робертса
1.
2.
3.
Viz3D
Все тела выпуклы (или приводим к такому виду)
Удаление самоперекрывающихся ребер и граней
Каждое из видимых ребер каждого тела
сравнивается с каждым из оставшихся тел для
определения перекрытия
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group

22. Z-Буфер

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)

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. Алгоритмы с разбиением на подпространства

P2
A
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.

27
Viz3D
• Практические задания (до 20.11.2011)
– Реализовать две программы построения простой 3D сцены в
реальном времени (с использованием собственных функций
построения в буфер кадра):
• «проволочная» анимация - на выбор:
– или график функции y=f(x,z) с использованием алгоритма
плавающего горизонта
– или 2-3 выпуклых тела визуализируются с использованием
алгоритма Робертса
• визуализация сплошных тел – 2-3 выпуклых тела
визуализируются с использованием алгоритма z-буфера с
закраской Гуро, освещение вычисляется как косинус угла между
нормалью к поверхности (к точке) и направлением на источник
света.
Галинский В.А.
Физико-математический лицей № 30
Computer Graphics Support Group
English     Русский Rules