Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Полигональное моделирование

Полигональное моделирование

Презентация использовалась на занятиях профессионального модуля в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

ПОЛИГОНАЛЬНОЕ МОДЕЛИРОВАНИЕ Моделирование трехмерных поверхностей полигональными сетками

ПОЛИГОНАЛЬНОЕ МОДЕЛИРОВАНИЕ

Моделирование трехмерных поверхностей полигональными сетками

Полигональные сетки (Polygonal meshes) Полигональные сетки – набор полигонов (граней), которые в совокупности формируют оболочку объекта Это стандартный способ визуального представления широкого класса объемных фигур Многие системы визуализации основаны на изображении объектов посредством рисования последовательности полигонов Это стандартный способ визуального представления широкого класса объемных фигур Многие системы визуализации основаны на изображении объектов посредством рисования последовательности полигонов

Полигональные сетки (Polygonal meshes)

  • Полигональные сетки – набор полигонов (граней), которые в совокупности формируют оболочку объекта
  • Это стандартный способ визуального представления широкого класса объемных фигур Многие системы визуализации основаны на изображении объектов посредством рисования последовательности полигонов
  • Это стандартный способ визуального представления широкого класса объемных фигур
  • Многие системы визуализации основаны на изображении объектов посредством рисования последовательности полигонов

Достоинства полигональных сеток Основаны на простоте использования полигонов: Легко представлять и преобразовывать Обладают простыми свойствами Легко представлять и преобразовывать Обладают простыми свойствами Единственный вектор нормали Четко определенные внутренняя и внешняя области Простота рисования подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань Полигональные сетки позволяют представлять трехмерные объекты практически любой степени сложности Единственный вектор нормали Четко определенные внутренняя и внешняя области Единственный вектор нормали Четко определенные внутренняя и внешняя области Простота рисования подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань Полигональные сетки позволяют представлять трехмерные объекты практически любой степени сложности

Достоинства полигональных сеток

  • Основаны на простоте использования полигонов:
  • Легко представлять и преобразовывать Обладают простыми свойствами
  • Легко представлять и преобразовывать
  • Обладают простыми свойствами
  • Единственный вектор нормали Четко определенные внутренняя и внешняя области Простота рисования подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань Полигональные сетки позволяют представлять трехмерные объекты практически любой степени сложности
  • Единственный вектор нормали Четко определенные внутренняя и внешняя области
  • Единственный вектор нормали
  • Четко определенные внутренняя и внешняя области
  • Простота рисования подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань
  • подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань
  • Полигональные сетки позволяют представлять трехмерные объекты практически любой степени сложности

Пример:

Пример:

Монолитные объекты и тонкие оболочки Полигональные сетки позволяют задавать объекты двух типов: Монолитные (solid) объекты полигональные грани плотно примыкают друг к другу и ограничивают некоторое пространство полигональные грани плотно примыкают друг к другу и ограничивают некоторое пространство Примеры: куб, сфера Примеры: куб, сфера Примеры: куб, сфера Тонкие оболочки Полигональные грани примыкают друг к другу без ограничения пространства, представляя собой поверхность бесконечно малой толщины Пример: график функции z=f(x,y) Полигональные грани примыкают друг к другу без ограничения пространства, представляя собой поверхность бесконечно малой толщины Пример: график функции z=f(x,y) Пример: график функции z=f(x,y)

Монолитные объекты и тонкие оболочки

  • Полигональные сетки позволяют задавать объекты двух типов:
  • Монолитные (solid) объекты
  • полигональные грани плотно примыкают друг к другу и ограничивают некоторое пространство
  • полигональные грани плотно примыкают друг к другу и ограничивают некоторое пространство
  • Примеры: куб, сфера
  • Примеры: куб, сфера
  • Примеры: куб, сфера
  • Тонкие оболочки Полигональные грани примыкают друг к другу без ограничения пространства, представляя собой поверхность бесконечно малой толщины Пример: график функции z=f(x,y)
  • Полигональные грани примыкают друг к другу без ограничения пространства, представляя собой поверхность бесконечно малой толщины Пример: график функции z=f(x,y)
  • Пример: график функции z=f(x,y)

Примеры:

Примеры:

Вершины полигона Каждый полигон определяется путем перечисления его вершин Вершина задается при помощи перечисления ее координат в пространстве

Вершины полигона

  • Каждый полигон определяется путем перечисления его вершин
  • Вершина задается при помощи перечисления ее координат в пространстве

Нормаль к полигону Вектор нормали задает направление перпендикуляра грани При рисовании объекта эта информация используется для определения того, сколько света рассеивается на данной грани

Нормаль к полигону

  • Вектор нормали задает направление перпендикуляра грани
  • При рисовании объекта эта информация используется для определения того, сколько света рассеивается на данной грани

Нормали в вершинах и нормали в поверхностях Использование нормалей к грани плохо подходит для визуализации гладких поверхностей, например, сферы Удобнее оказывается связывать вектор нормали с каждой вершиной грани Такой способ упрощает процесс отсечения и процесс закрашивания гладких криволинейных форм Такой способ упрощает процесс отсечения и процесс закрашивания гладких криволинейных форм

Нормали в вершинах и нормали в поверхностях

  • Использование нормалей к грани плохо подходит для визуализации гладких поверхностей, например, сферы
  • Удобнее оказывается связывать вектор нормали с каждой вершиной грани
  • Такой способ упрощает процесс отсечения и процесс закрашивания гладких криволинейных форм
  • Такой способ упрощает процесс отсечения и процесс закрашивания гладких криволинейных форм

Нормали в вершинах и нормали в поверхностях Нормаль является атрибутом вершины Для быстродействия выгоднее хранить отдельную копию вектора нормали для каждой вершины Одна и та же вершина может входить в состав нескольких смежных граней Вывод: лучше хранить все вершины сетки (с их атрибутами) в отдельном массиве При задании граней указывать индексы используемых вершин Вывод: лучше хранить все вершины сетки (с их атрибутами) в отдельном массиве При задании граней указывать индексы используемых вершин

Нормали в вершинах и нормали в поверхностях

  • Нормаль является атрибутом вершины

Для быстродействия выгоднее хранить отдельную копию вектора нормали для каждой вершины

  • Одна и та же вершина может входить в состав нескольких смежных граней
  • Вывод: лучше хранить все вершины сетки (с их атрибутами) в отдельном массиве При задании граней указывать индексы используемых вершин
  • Вывод: лучше хранить все вершины сетки (с их атрибутами) в отдельном массиве
  • При задании граней указывать индексы используемых вершин

Возможные вариации Если полигональная сетка задается при помощи однотипных примитивов, например, треугольников, то можно представить грани в виде массива индексов вершин Необходимо выбирать структуры данных, наиболее подходящих для решения конкретной задачи

Возможные вариации

  • Если полигональная сетка задается при помощи однотипных примитивов, например, треугольников, то можно представить грани в виде массива индексов вершин
  • Необходимо выбирать структуры данных, наиболее подходящих для решения конкретной задачи

Лицевые и нелицевые стороны граней Каждая плоская грань (полигон) имеет две стороны: лицевую (видна извне объекта) нелицевую (видна изнутри объекта) В один момент времени с заданной точки видна только одна сторона грани лицевую (видна извне объекта) нелицевую (видна изнутри объекта) В один момент времени с заданной точки видна только одна сторона грани Снаружи монолитного объекта видны только лицевые грани Позволяет эффективно отбрасывать лицевые или нелицевые грани, что ускоряет процесс рисования Снаружи монолитного объекта видны только лицевые грани Снаружи монолитного объекта видны только лицевые грани Позволяет эффективно отбрасывать лицевые или нелицевые грани, что ускоряет процесс рисования

Лицевые и нелицевые стороны граней

  • Каждая плоская грань (полигон) имеет две стороны:
  • лицевую (видна извне объекта) нелицевую (видна изнутри объекта) В один момент времени с заданной точки видна только одна сторона грани
  • лицевую (видна извне объекта)
  • нелицевую (видна изнутри объекта)
  • В один момент времени с заданной точки видна только одна сторона грани
  • Снаружи монолитного объекта видны только лицевые грани Позволяет эффективно отбрасывать лицевые или нелицевые грани, что ускоряет процесс рисования
  • Снаружи монолитного объекта видны только лицевые грани
  • Снаружи монолитного объекта видны только лицевые грани
  • Позволяет эффективно отбрасывать лицевые или нелицевые грани, что ускоряет процесс рисования

Определение видимой стороны грани Для определения стороны грани, повернутой к наблюдателю, OpenGL использует направление обхода вершин грани после проецирования Позволят выбрать направление обхода вершин лицевых граней Позволят выбрать направление обхода вершин лицевых граней Направление обхода нелицевых вершин будет противоположным Вершины всех граней сетки необходимо перечислять в одном и том направлении обхода, если смотреть на лицевую сторону граней Направление обхода нелицевых вершин будет противоположным Направление обхода нелицевых вершин будет противоположным Вершины всех граней сетки необходимо перечислять в одном и том направлении обхода, если смотреть на лицевую сторону граней

Определение видимой стороны грани

  • Для определения стороны грани, повернутой к наблюдателю, OpenGL использует направление обхода вершин грани после проецирования
  • Позволят выбрать направление обхода вершин лицевых граней
  • Позволят выбрать направление обхода вершин лицевых граней
  • Направление обхода нелицевых вершин будет противоположным Вершины всех граней сетки необходимо перечислять в одном и том направлении обхода, если смотреть на лицевую сторону граней
  • Направление обхода нелицевых вершин будет противоположным
  • Направление обхода нелицевых вершин будет противоположным
  • Вершины всех граней сетки необходимо перечислять в одном и том направлении обхода, если смотреть на лицевую сторону граней

Обход сторон куба против часовой стрелки

Обход сторон куба против часовой стрелки

Нахождение нормальных векторов (нормалей) Координаты нормалей для каждой вершины можно задавать: вручную (в процессе моделирования) вычислять аналитически (перпендикуляр к криволинейной поверхности, описываемой функционально) вычислять на основе полигональной сетки вручную (в процессе моделирования) вычислять аналитически (перпендикуляр к криволинейной поверхности, описываемой функционально) вычислять на основе полигональной сетки

Нахождение нормальных векторов (нормалей)

  • Координаты нормалей для каждой вершины можно задавать:
  • вручную (в процессе моделирования) вычислять аналитически (перпендикуляр к криволинейной поверхности, описываемой функционально) вычислять на основе полигональной сетки
  • вручную (в процессе моделирования)
  • вычислять аналитически (перпендикуляр к криволинейной поверхности, описываемой функционально)
  • вычислять на основе полигональной сетки

Задание нормалей вручную Позволяет задать нормали к поверхности способом, лучшим с точки зрения дизайнера Основной недостаток – он очень утомителен и во многих случаях может быть заменен на методы автоматического генерирования нормалей

Задание нормалей вручную

  • Позволяет задать нормали к поверхности способом, лучшим с точки зрения дизайнера
  • Основной недостаток – он очень утомителен и во многих случаях может быть заменен на методы автоматического генерирования нормалей

Редактирование нормалей в программе 3D Studio Max

Редактирование нормалей в программе 3D Studio Max

Аналитический метод нахождения нормалей Для функционально заданных поверхностей вектор нормали по направлению совпадает с вектором градиента в точке поверхности

Аналитический метод нахождения нормалей

  • Для функционально заданных поверхностей вектор нормали по направлению совпадает с вектором градиента в точке поверхности

Вычисление нормалей для плоских граней полигональной сетки Для плоских граней сетки достаточно вычислить перпендикуляр к каждой грани и связать его с каждой из вершин этой грани Использование векторного произведения векторов, соединяющих соседние вершины граней Использование векторного произведения векторов, соединяющих соседние вершины граней Проблемы: Большие погрешности вычисления в случае выбора почти параллельных векторов Проблемы с гранями, имеющими больше 3 вершин Большие погрешности вычисления в случае выбора почти параллельных векторов Проблемы с гранями, имеющими больше 3 вершин

Вычисление нормалей для плоских граней полигональной сетки

  • Для плоских граней сетки достаточно вычислить перпендикуляр к каждой грани и связать его с каждой из вершин этой грани
  • Использование векторного произведения векторов, соединяющих соседние вершины граней
  • Использование векторного произведения векторов, соединяющих соседние вершины граней
  • Проблемы: Большие погрешности вычисления в случае выбора почти параллельных векторов Проблемы с гранями, имеющими больше 3 вершин
  • Большие погрешности вычисления в случае выбора почти параллельных векторов
  • Проблемы с гранями, имеющими больше 3 вершин

Метод Ньюэла для нахождения нормали к плоской грани Разработан Мартином Ньюэллом Решает указанные проблемы простого способа

Метод Ньюэла для нахождения нормали к плоской грани

  • Разработан Мартином Ньюэллом
  • Решает указанные проблемы простого способа

Нахождение нормали к вершинам сетки, описывающим криволинейную поверхность Грани сетки, описывающей криволинейную поверхность, могут иметь общие вершины За вектор нормали в таких вершинах можно принять среднее арифметическое нормалей прилегающих граней

Нахождение нормали к вершинам сетки, описывающим криволинейную поверхность

  • Грани сетки, описывающей криволинейную поверхность, могут иметь общие вершины
  • За вектор нормали в таких вершинах можно принять среднее арифметическое нормалей прилегающих граней

Свойства сеток Монолитность Совокупность грани сетки заключает в себе некоторое пространство Совокупность грани сетки заключает в себе некоторое пространство Связность Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов Простота Сетка является монолитной и не содержит отверстий Сетка является монолитной и не содержит отверстий Плоскостность Каждая грань сетки является плоским полигоном Каждая грань сетки является плоским полигоном Выпуклость Отрезок прямой, соединяющий любые две внутренние точки объекта целиком лежит внутри него Отрезок прямой, соединяющий любые две внутренние точки объекта целиком лежит внутри него

Свойства сеток

  • Монолитность
  • Совокупность грани сетки заключает в себе некоторое пространство
  • Совокупность грани сетки заключает в себе некоторое пространство
  • Связность
  • Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов
  • Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов
  • Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов
  • Простота Сетка является монолитной и не содержит отверстий
  • Сетка является монолитной и не содержит отверстий
  • Плоскостность Каждая грань сетки является плоским полигоном
  • Каждая грань сетки является плоским полигоном
  • Выпуклость Отрезок прямой, соединяющий любые две внутренние точки объекта целиком лежит внутри него
  • Отрезок прямой, соединяющий любые две внутренние точки объекта целиком лежит внутри него

Моделирование поверхностей вращения Поверхность вращения образуется посредством вращательной развертки с заметанием профильной кривой C вокруг некоторой оси Тор Пешка Сфера Купол церкви Рюмки, тарелки Колба лампы накаливания Тор Пешка Сфера Купол церкви Рюмки, тарелки Колба лампы накаливания

Моделирование поверхностей вращения

  • Поверхность вращения образуется посредством вращательной развертки с заметанием профильной кривой C вокруг некоторой оси
  • Тор Пешка Сфера Купол церкви Рюмки, тарелки Колба лампы накаливания
  • Тор
  • Пешка
  • Сфера
  • Купол церкви
  • Рюмки, тарелки
  • Колба лампы накаливания

Создание поверхности вращения

Создание поверхности вращения

Поверхности на базе функций двух переменных Некоторые поверхности однозначны в одном измерении, поэтому могут быть явно выражены функции двух независимых переменных Такие функции еще называют полем высот и задают в виде формулы следующего типа: y=f(x, z) y=f(x, z) Для визуализации таких поверхностей обычно вычисляют значение y в узлах равномерной сетки вдоль осей x и z, а затем рисуют последовательность ячеек полученной сетки

Поверхности на базе функций двух переменных

  • Некоторые поверхности однозначны в одном измерении, поэтому могут быть явно выражены функции двух независимых переменных
  • Такие функции еще называют полем высот и задают в виде формулы следующего типа:
  • y=f(x, z)
  • y=f(x, z)
  • Для визуализации таких поверхностей обычно вычисляют значение y в узлах равномерной сетки вдоль осей x и z, а затем рисуют последовательность ячеек полученной сетки

Пример поверхности заданной, функцией sinc с круговой симметрией

Пример поверхности заданной, функцией sinc с круговой симметрией

-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Полигональное моделирование (1.98 MB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт