Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 1 Визуализация в 3D URL:
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 2 Представление объектов V1V1 V0V0 V2V2 V3V3 E0E0 E1E1 E2E2 E3E3 E4E4 P0P0 P1P1 V={V 0, V 1, V 2, V 3 }={(x 0,y 0,z 0 ), (x 1,y 1,z 1 ),…} E*={#V*1, #V*2, #P*1, #P*2} E 0 ={0,1,0,-1} E 1 ={1,3,1,-1} E 2 ={3,2,1,-1} E 3 ={1,2,0,1} E 4 ={2,0,0,-1} P*={#V*1, #V*2, #V*3, #E*1, #E*2, #E*3} P 0 ={0,1,2,0,3,4} P 1 ={1,3,2,1,2,3}
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 3 Представление объектов V1V1 V2V2 V3V3 V4V4 V5V5 V0V0 triangle strip (0,1,2),(2,1,3),(2,3,4),(4,3,5) V0V0 V1V1 V2V2 V3V3 quad V0V0 V1V1 V2V2 V3V3 V4V4 V5V5 quad strip V0V0 V1V1 V2V2 V3V3 V4V4 V5V5 triangle fan (0,1,2),(0,2,3),(0,3,4),(0,4,5)
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 4 Иерархическое моделирование Работа в «контексте»: openStructure(Id1); setLocalTranformation(rotateX(...)); addPolygon(...); setLocalTranformation(rotateX(...)); openStructure(Id2); setLocalTranformation(rotateX(...)); addPolygon(...);... closeStructure(); openStructure(Id2); setLocalTranformation(rotateX(...)); addPolygon(...);... closeStructure();... closeStructure();
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 5 Иерархическое моделирование функции: 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();
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 6 Визуализация линиями Визуальный реализм –перспектива:
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 7 Визуализация линиями Визуальный реализм –depth cueing (изображение глубины): –удаление невидимых линий
Viz3D Галинский В.А. Физико-математический лицей 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) каркасная визуализация (wireframe) плоская закраска (flat shading) интерполяция цвета – закраска Гуро (Gouraud shading) интерполяция нормали – закраска Фонга (Phong shading)
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 15 Pixar Shutterbug 3 Orthographic viewsParallel projection Perspective View (no hidden lines)Depth cuing (hidden lines)
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 16 Pixar Shutterbug ColoredVisible line determination (with facets) Visible surface determination (constant shading)Shaded by facets
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 17 Pixar Shutterbug Gouraud shaded (diffuse)Gouraud shaded (specular) Phong shaded (polygon based)Phong shaded (curved surfaces based)
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 18 Pixar Shutterbug Multiple lightsTexture mapping Bump mapping and shadowReflection mapping
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 19 Алгоритм плавающего горизонта глобальные массивы: 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; }
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 20 Backface culling отсечение «задних» поверхностей определение передних и задних многоугольников по обходу (по и против часовой стрелке – CW, CCW) без отсечения с отсечением
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 21 Алгоритм Робертса 1.Все тела выпуклы (или приводим к такому виду) 2.Удаление самоперекрывающихся ребер и граней 3.Каждое из видимых ребер каждого тела сравнивается с каждым из оставшихся тел для определения перекрытия
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 22 Z-Буфер для каждого мн-ка для каждой точки мн-ка pz = значение z в (x,y) если pz
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 23 Алгоритм художника (list priority) Сортировка многоугольников по оси Z (по глубине) – ближней или дальней точке Разрешение всех неоднозначностей при перекрытиях по глубине, «разрезание» при необходимости многоугольников Построение всех многоугольников от дальнего по глубине к ближнему. текущий (дальний) мн-к P: по каждому мн-ку Q, с которым P пересекается по z: Оболочки P и Q не пересекаются по x? Оболочки P и Q не пересекаются по y? P целиком лежит по другую сторону от Q по отношению к наблюдателю? Q целиком лежит по одну сторону от P по отношению к наблюдателю? Проекции P и Q на плоскость (x,y) не пересекаются?
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 24 Алгоритмы с разбиением на подпространства A B C DP1P1 P2P2
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 25 Алгоритм построчного сканирования zz zz xx xx
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 26 Трассировка лучей
Viz3D Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 27 Практические задания ( до ) –Реализовать две программы построения простой 3D сцены в реальном времени (с использованием собственных функций построения в буфер кадра): «проволочная» анимация - на выбор: –или график функции y=f(x,z) с использованием алгоритма плавающего горизонта –или 2-3 выпуклых тела визуализируются с использованием алгоритма Робертса визуализация сплошных тел – 2-3 выпуклых тела визуализируются с использованием алгоритма z-буфера с закраской Гуро, освещение вычисляется как косинус угла между нормалью к поверхности (к точке) и направлением на источник света.