Конспект лекций по компьютерной графике. Конспект лекций по дисциплине Компьютерная графика
Скачать 16.3 Mb.
|
Глава 7. Методы и алгоритмы построения сложных трехмерных объектовПонятие “трехмерная” графика в настоящее время можно считать наиболее распространенным для обозначения темы, которая будет рассмотрена ниже (в литературе это название часто сокращается до "ЗD-графики"). Однако необходимо заметить, что такое название неточное, так как речь пойдет о создании изображения на плоскости, а не в объеме. Действительно трехмерные средства отображения пока что недостаточно широко распространены. 7.1 Модели описания поверхностейДля описания формы поверхностей могут использоваться разнообразные методы. Сделаем обзор этих методов. 7.1.1. Аналитическая модельАналитической моделью будем называть описание поверхности математическими формулами. В КГ можно использовать много разновидностей такого описания. Например, в виде функции двух аргументов z = f(x, у). Можно использовать уравнение F(x, у, z) = 0. Наиболее часто используется параметрическая форма описания поверхности. Запишем формулы для трехмерной декартовой системы координат (x, у, z): где s и t — параметры, которые изменяются в определенном диапазоне, а функции Fx, Fy,иFzопределяют форму поверхности. Преимущества параметрического описания — легко описывать поверхности, которые соответствуют неоднозначным функциям, замкнутые поверхности. Описание можно сделать таким образом, что формула не будет существенно изменяться при поворотах поверхности, масштабировании. В качестве примера рассмотрим аналитическое описание поверхности шара. Сначала как функцию двух аргументов: z = ± В виде уравнения: x2 + y2 + z2 - R2=0. А также в параметрической форме: x=Rsins cost,y=Rsins sint, z = R coss. Для описания сложных поверхностей часто используют сплайны. Сплайн - это специальная функция, наиболее пригодная для аппроксимации отдельных фрагментов поверхности. Несколько сплайнов образуют модель сложной поверхности. Другими словами, сплайн — эта тоже поверхность, но такая, для которой можно достаточно просто вычислить координаты ее точек. Обычно используют кубические сплайны. Почему именно кубические? Так как третья степень является наименьшей, позволяющей описывать любую форму, и при стыковке сплайнов можно обеспечить непрерывную первую производную — такая поверхность будет без излома в местах стыка. Сплайны часто определяют параметрически. Запишем формулу для координаты x(s,t)кубического сплайна в виде многочлена третьей степени параметров sи t: Для других координат можно записать подобные формулы — в виде функций y(s, t), z(s,t). В математической литературе вы можете ознакомиться со способами определения коэффициентов aij для сплайнов, которые имеют заданные свойства. Рассмотрим одну из разновидностей сплайнов — сплайн Безье. Приведем его сначала в обобщенной форме — степени тхп: P(s,t) = где Рij— опорные точки-ориентиры, 0≤s≤1, 0≤t≤1, и –коэффициенты биномаНьютона, они рассчитываются по формуле: Кубический сплайн Безье соответствует т= 3, п = 3. Для его определения необходимы 16 точек-ориентиров Рij(рис. 7.1); коэффициенты и равняются 1,3, 3, 1 при i,j= 0,1,2,3. Характеризуя аналитическую модель в целом, можно сказать, что эта модель наиболее пригодна для многих операций анализа поверхностей. С позиций КГ можно указать такие положительные черты: простота (впрочем, не всегда) расчета координат каждой точки поверхности, нормали; небольшой объем информации для описания довольно сложных форм. К недостаткам можно отнести: сложность формул описания с использованием функций, которые медленно вычисляются в компьютере, снижают скорость выполнения операций отображения; невозможность в большинстве случаев использования данной формы описания непосредственно для построения изображения поверхности. В таких случаях поверхность обычно отображают как многогранник, используя формулы аналитического описания для расчета координат вершин граней в процессе отображения, что уменьшает скорость сравнительно с полигональной моделью описания. Рис. 7.1. Кубические сплайны Безье 7.1.2 Векторная полигональная модельДля описания пространственных объектов здесь используются такие элементы: вершины, отрезки прямых (векторы), полилинии, полигоны, полигональные поверхности (рис. 7.2). Элемент "вершина" (vertex) — главный элемент описания, все другие являются производными. При использовании трехмерной декартовой системы координат вершины определяются как (x,y,z). Каждый объект однозначно определяется координатами собственных вершин. Вершина может моделировать отдельный точечный объект, размер которого не имеет значения, а также может использоваться в качестве конечной точки для линейных объектов и полигонов. Двумя вершинами задается вектор. Рис. 7.2. Элементы векторно-полигональной модели Несколько векторов составляют полилинию. Полилиния может моделировать отдельный линейный объект, толщина которого не учитывается, а также может представлять собой контур полигона. Полигонмоделирует площадный объект. Один полигон может описывать плоскую грань объемного объекта. Несколько граней составляют объемный объект в виде полигональной поверхности — многогранник или незамкнутую поверхность (в литературе часто употребляется название "полигональная сетка"). Векторную полигональную модель можно считать наиболее распространенной в современных системах трехмерной КГ. Ее используют в системах автоматизированного проектирования, в компьютерных играх, в геоинформационных системах и т. п. Рассмотрим структуры данных, которые используются в векторной полигональной модели. В качестве примера объекта будет куб. Рассмотрим, как можно организовать описание такого объекта в структурах данных. Рис. 7.3. Первый способ описания П ервый способ. Сохраняем все грани в отдельности Рис. 7.4. Отдельные грани В компьютерной программе такой способ описания объекта можно реализовать разнообразно. Например, для каждой грани открывать в памяти отдельный массив. Можно все грани записывать в один массив-вектор (это уже лучше). А можно использовать классы (язык С++) как для описания отдельных граней, так и объектов в целом. Можно создавать структуры, которые объединяют тройки (x, у, z), или сохранять координаты в отдельности. Принципиально это мало что меняет — так или иначе в памяти необходимо сохранять координаты вершин граней плюс некоторую информацию в качестве накладных затрат. Рассчитаем объем памяти, необходимый для описания куба указанным способом: П1 = 6 х 4 х 3 x Pв где Pв— разрядность чисел, которые используются для представления координат вершин. Шесть граней здесь описываются 24 вершинами. Такое представление избыточно — каждая вершина записана трижды. Не учитывается то, что у граней есть общие вершины. Рис. 7.5. Индексы вершин Второй способ описания. Для этого варианта координаты восьми вершин сохраняются без повторов. Вершины пронумерованы (рис. 7.5), а каждая грань представлена в виде списка индексов вершин (рис. 7.6). Рис. 7.6. Второй способ описаня Оценим затраты памяти: П2 = 8 x 3 x Pв +6 x 4 x Pиндекс где Pв— разрядность координат, Pиндекс — разрядность индексов. Третий способ. Пронумеруем также и ребра (рис. 7.7). Будем сохранять грани в виде списка индексов ребер. Каждое ребро будет, в свою очередь, представлено списком индексов вершин. Этот способ в литературе иногда называют "линейно-узловой " моделью. Оценим затраты памяти: П3 = 8 x 3 x Pв +12 x 2 x Pиндекс верш. +6 x4 x Риндекс ребер где Pв - разрядность координат, Pиндекс верш. и Риндекс ребер - разрядность индексов вершин и ребер Рис. 7.7. Индексы вершин и ребер Рис. 7.8. Линейно-узловая модель 7.1.3 Воксельная модельВоксельная модель – это трехмерный растр. Воксел это элемент объема. По аналогии с 2D растрами, состоящими из пикселов. Вокселы заполняют объем в трехмерном растре (рис.7.9) Рис. 7.9. Пикселы и вокселы Как мы знаем, любой пиксел должен иметь свой цвет. Любой воксел также имеет свой цвет, и, кроме того, прозрачность. Полная прозрачность воксела означает пустоту соответствующей точки объема. Поскольку вокселы располагаются в узлах равномерной сетки, то, обычно, чем меньше шаг сетки, тем большее количество вокселов помещается в определенном объеме, и тем меньший размер каждого отдельного воксела. Основная характеристика вексельной модели — разрешающая способность — количество вокселов в определенном объеме. Она и определяет точность моделирования трехмерных объектов (рис. 7.10). Для современной КГ вексельный метод считается одним из перспективных. Его используют в компьютерных системах, предназначенных для медицинских целей. Например, при сканировании томографом (computedtomography) получаются изображения срезов объекта, которые потом объединяются в виде объемной модели для дальнейшего анализа. Вексельный метод используется в геологии, сейсмологии, в компьютерных играх. Вокселы также используются для графических устройств отображения, которые создают действительно объемные изображения. Положительные черты воксельной модели:
Рис. 7.10. Воксельная модель шара и ее разрезы. Недостатки воксельной модели:
7.1.4 Равномерная сеткаЭта модель описывает координаты отдельных точек поверхности следующим способом (рис. 7.11). Каждому узлу сетки с индексами (i,j) приписывается значение высоты zi,j. Индексам (i,j) соответствуют определенные значения координат (х,у). Расстояние между узлами одинаковое — dx по оси х и dy по оси у. Фактически, такая модель является двумерным массивом (растром, матрицей), каждый элемент которой хранит значение высоты. Рис. 7.11. Узлы равномерной сетки Рис. 7.12. Точка в сетке с координатами (x, y, z) Не каждая поверхность может быть представлена этой моделью. Если в каждом узле записывается только одно значение высоты, то это означает, что поверхность описывается однозначной функцией z=f(xy). Иначе говоря, это такая поверхность, которую любая вертикаль пересекает только один раз. Не могут моделироваться также вертикальные грани. Следует отметить, что для сетки не обязательно использовать только декартовы координаты. Например, для того, чтобы описать поверхность шара однозначной функцией, можно использовать полярные координаты. Равномерная сетка часто используется для описания рельефа земной поверхности. Рассмотрим, как можно рассчитать значение высоты для любой точки внутри границ сетки. Пусть ее координаты равняются (х, у). Надо найти соответствующее значение z. Решение этой задачи — интерполяция значений координат 2 ближайших узлов (рис 7.12). Сначала необходимо вычислить индексы i и j одного из узлов: где ]а[ — целая часть числа а, то есть наибольшее целое, которое не превышает а. Далее используем, например, билинейную интерполяцию. Для этого сначала найдем значения г в точках А и В. Изпропорции учитывая, что xj+1 - xj = dx, будем иметь: Аналогично найдем Теперь нужно вычислить такое значение z, поделив отрезок АВ пропорционально значению у: И будем иметь: z = zА + (y – yi) Положительные черты равномерной сетки: 1. Простота описания поверхностей 2. Возможность быстро узнать высоту любой точи поверхности простой интерполяцией. Недостатки равномерной сетки: 1. Поверхности, которые соответствуют неоднозначной функции высоты в узлах сетки, моделироваться не могут 2. Для описания сложных поверхностей нужно большое количество узлов, которое может быть ограничено объемом памяти компьютера 3. Описание отдельных типов поверхностей может быть более сложным, чем в других моделях. Например, многогранная поверхность требует избыточный объем данных для описания в сравнении с полигональной моделью. 7.1.5 Неравномерная сетка. ИзолинииНеравномерной сеткой назовем модель описания поверхности в виде множества отдельных точек {(х0, у0, z0), (х1, у1, z1), ..., (хn-1, уn-1, zn-1)} принадлежащих поверхности. Эти точки могут} быть получены, например, в результате измерений поверхности какого-либо объекта с помощью определенного оборудования. Такую модель можно считать обобщением для некоторых рассмотренных нами моделей. Например, векторная полигональная модель и равномерная сетка могут считаться разновидностями неравномерной сетки. Эти разновидности мы рассмотрели в отдельности, так как они играют важную роль при решении задач КГ. А вообще, может существовать не один вариант классификации способов описания поверхностей. Следует учитывать определенную условность нашего перечня моделей поверхностей, последовательность перечисления таких моделей может быть и другой. Рис. 7.13. Триангуляция неравномерной сетки Рассмотрим модель описания поверхности в виде множества точечных значении, логически никак не связанных между собою. Неравномерность задания опорных точек усложняет определение координат для других точек поверхности, которые не совпадают с опорными точками. Нужны специальные методы пространственной интерполяции. Так, например, можно поставить такую задачу - по известным координатам (х, у) вычислить значение координаты z. Для этого необходимо найти несколько ближайших точек, а потом рассчитать искомое значение, исходя из взаимного расположения этих точек в проекции (x,y). Как мы уже рассмотрели выше, для равномерной сетки это намного проще— поиска фактически нет, мы сразу вычисляем индексы ближайших опорных точек. Еще одна задача — отобразить поверхность. Эту задачу можно решать несколькими способами, в том числе триангуляцией. Процесс триангуляции можно представить себе так (рис. 7.13). Сначала находим первые три самые близкие друг другу точки — и получаем одну плоскую треугольную грань. Потом находим точку, ближайшую к этой грани, и образуем смежную грань. И так далее, пока не останется ни одной отдельной точки. Это общая схема, в литературе описано много разных способов триангуляции. Довольно часты ссылки на триангуляцию Делон. Пусть нужно связать треугольниками четыре точки. Возможны два варианта триангуляции (рис. 7.14). В cоответствии с критерием Делоне ни одна окружность, проходящая через три точки любого треугольника, не должна охватывать точки, которые принадлежат другим треугольникам. Здесь необходимо указать, что не всегда триангуляция Делоне дает нужный результат. Может так случиться, что необходимо соединять точки треугольниками вопреки указанному выше критерию. Например, кроме точек триангуляции нужно учитывать особенности формы некоторых структурных элементов — горных хребтов, ям с отвесными стенами и т.п. Тогда нужно соответственно управлять триангуляцией. Представление поверхности треугольными гранями в настоящее время очень часто используется в разнообразных областях — от компьютерных игр и фильмов до систем автоматизированного проектирования и ГИС. Треугольник сейчас — базовый элемент для современных видеоадаптеров. В англоязычной литературе для триангуляционной модели встречается и такое название: TIN (TriangulatedIrregularNetwork) Следует заметить, что, по всей видимости, преобразование неравномерной сетки в триангуляционную модель в ходе визуализации нецелесообразно. Для обеспечения высокой скорости графики, например в режиме анимации, следует заранее один раз преобразовать неравномерную сетку во множество треугольников (а это по нашей классификации уже векторная полигональная модель), а затем в ходе создания кадров многократно использовать готовый результат триангуляции. Рис. 7.14. Триангуляция в соответствии с критерием Делоне Рассмотрим еще один из вариантов описания поверхности — изолинии высоты. Любая изолиния состоит из точек, которые представляют одно числовое значение какого-либо показателя, в данном случае — значение высоты (рис. 7.15). Изолинии высоты также можно представить себе как контуры разреза поверхности горизонтальными плоскостями (поэтому для изолиний высоты часто используется название "горизонтали"). Описание поверхности изолиниями высоты часто используется, например, в картографии. По бумажной карте можно с определенной точностью рассчитать высоту в точках местности, углы наклона и прочие параметры рельефа. Необходимо заметить, что описание рельефа земной поверхности изолиниями высоты неправильно представлять как разрезы горизонтальными плоскостями, так как поверхность Земли не плоская. Если бы Земля была шаром, то изолинии высоты можно было бы трактовать как изолинии радиусов. Однако Земля — не шар, она имеет намного более сложную форму, названную геоидом. В геодезии и картографии геоид аппроксимируют с определенной точностью разнообразными эллипсоидами. Таким образом, здесь можно говорить об изолиниях некоторых условных высот в специальных системах координат. Конечно, для описания поверхности можно использовать не только изолинии высоты, а также другие изолинии, например х- или у-изолинии. В компьютерных системах изолинии часто описываются векторно — как полилинии. Используются также изолинии в виде сплайновых кривых. Точки, которые составляют изолинии, и отдельные опорные точки располагаются неравномерно. Рис. 7.15 Пример поверхности: а — изолинии высоты; б — вид поверхности; в — фрагмент триангуляционной сетки; г — поверхность из треугольников (здесь нарочно подчеркнуты отдельные треугольные грани) Это усложняет расчет координат точек поверхности. В графических компьютерных системах для выполнения многих операций, и в первую очередь — для показа поверхности, обычно необходимо преобразовать описание поверхности в другую форму. Преобразование изолиний в полигональную модель также выполняется методами триангуляции (здесь алгоритмы триангуляции сложнее, чем для триангуляции массива отдельных точек). Для преобразования неравномерной сетки в равномерную используют специальную интерполяцию. Положительные черты неравномерной сетки: наглядность показа рельефа поверхности изолиниями на картах, планах; использование отдельных опорных точек, наиболее важных для заданной формы поверхности, обуславливает меньший объем информации по сравнению с другими моделями, например, с равномерной сеткой. Недостатки неравномерной сетки: невозможность или сложность выполнения многих операций над поверхностями; сложные алгоритмы преобразования в другие формы описания поверхностей. |