20111030 computer graphics_galinsky_lecture07_3_dvisualization

27
1 Viz3D Viz3D Галинский В.А. Физико-математический лицей № 30 Computer Graphics Support Group Визуализация в 3D URL: http://www.school30.spb.ru/cgsg/cgc/ E-mail: [email protected]

Upload: computer-science-club

Post on 28-Nov-2014

563 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

1

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

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

URL: http://www.school30.spb.ru/cgsg/cgc/

E-mail: [email protected]

Page 2: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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}

Page 3: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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)

Page 4: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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();

Page 5: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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();

Page 6: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

6

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация линиями

• Визуальный реализм– перспектива:

Page 7: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

7

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация линиями

• Визуальный реализм– depth cueing (изображение глубины):

– удаление невидимых линий

Page 8: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

8

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация закрашенных фигур

• Визуальный реализм– удаление невидимых поверхностей

– цвет

Page 9: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

9

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация закрашенных фигур

• Визуальный реализм– освещение

Page 10: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

10

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация закрашенных фигур

• Визуальный реализм– закраска и интерполяция

Page 11: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

11

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация закрашенных фигур

• Визуальный реализм– текстурирование

Page 12: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

12

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Текстурирование

Page 13: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

13

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Визуализация закрашенных фигур

• Визуальный реализм– тени

Page 14: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

14

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Закраска (shading)

• каркасная визуализация (wireframe)

• плоская закраска (flat shading)

• интерполяция цвета – закраска Гуро (Gouraud shading)

• интерполяция нормали – закраска Фонга (Phong shading)

Page 15: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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

Page 16: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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

Page 17: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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

Page 18: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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

Page 19: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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; }

Page 20: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

20

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Backface culling

• отсечение «задних» поверхностей• определение передних и задних

многоугольников по обходу (по и против часовой стрелке – CW, CCW)

без отсечения с отсечением

Page 21: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

21

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

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

1. Все тела выпуклы (или приводим к такому виду)

2. Удаление самоперекрывающихся ребер и граней

3. Каждое из видимых ребер каждого тела сравнивается с каждым из оставшихся тел для определения перекрытия

Page 22: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

22

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Z-Буфер

для каждого мн-ка для каждой точки мн-ка pz = значение z в (x,y) если pz <= ZBuf[y][x] тогда SetPixel(x,y) ZBuf[y][x] = pz

Page 23: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

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) не пересекаются?

Page 24: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

24

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Алгоритмы с разбиением на подпространства

1

2

3

A

B

C

D P1

P2

Page 25: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

25

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Алгоритм построчного сканирования

z z

zz

x x

xx

Page 26: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

26

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

Трассировка лучей

Page 27: 20111030 computer graphics_galinsky_lecture07_3_dvisualization

27

Viz3DViz3D

Галинский В.А.Физико-математический лицей № 30

Computer Graphics Support Group

• Практические задания (до 20.11.2011)– Реализовать две программы построения простой 3D сцены в

реальном времени (с использованием собственных функций построения в буфер кадра):

• «проволочная» анимация - на выбор:– или график функции y=f(x,z) с использованием алгоритма

плавающего горизонта– или 2-3 выпуклых тела визуализируются с использованием

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

• визуализация сплошных тел – 2-3 выпуклых тела визуализируются с использованием алгоритма z-буфера с закраской Гуро, освещение вычисляется как косинус угла между нормалью к поверхности (к точке) и направлением на источник света.