● Неудобно работать: чтобы получить координаты x, y, z, надо выражать их из уравнения
● При выполнении аффинных преобразований меняется уравнение
● Отсутствие универсального метода визуализации (для каждого вида поверхности свой)
● Нельзя делать разрез объекта, можно задавать только поверхность
Поверхность объекта представляется в виде набора граней со сторонами (рёбрами). Для каждой грани задаются координаты вершин + дополнительные параметры: цвет, текстура, материал (поведение при освещении), нормаль (какая из сторон лицевая), и т.д.
Триангуляция— разбиение произвольной гладкой поверхности на составляющие грани (на практике удобно работать с треугольниками).
Подходы к хранению объектов:
1 В явном виде хранятся координатыкаждой вершины (x,y,z). Тогда одна точка будет храниться несколько раз ⇒ большой расход памяти, и надо следить, чтобы координаты точек у разных граней совпадали.
○ Достоинства: даёт полную свободу редактирования
○ Недостатки: требует много памяти
2 Хранятся рёбракак пары точек, а для каждой грани (треугольника) хранятся три ссылки на рёбра.
○ Достоинства: может быть экономнее, чем первый вариант
○ Недостатки: даёт свободу только с точностью до ребра
3 Хранится массив с координатами вершин, а для граней хранятся только индексы вершин в этом массиве. В этом случае придется часто лазить в разные нехорошие области памяти.
○ Достоинства: максимальная экономия памяти (вершины не повторяются)
○ Недостатки: все грани связаны
Замечание. Второй метод оказывается эффективным только в том случае, если одно ребро используется во многих гранях, в противном случае расходы памяти могут оказаться даже выше, чем в первом варианте. Сравним этим методы на конкретных примерах:
Пример 1. Рассмотрим кубик.
1 Для каждой грани храним четыре точки, итого получаем 4*6 = 24 точки.
2 Для каждой грани храним четыре ссылки на рёбра. В списке рёбер все рёбра уникальны. Итого храним 12 рёбер по две точки, 12*2 = 24 точки.
3 Точки храним в списке уникальных точек, соответственно, их всего 8.
Пример 2. Рассмотрим два треугольника, имеющих одну общую сторону.
1 Две грани по три точки, итого 6 точек.
2 Пять рёбер по две точки, итого 10точек.
3 Четыре точки.
(— А еще неплохо было бы учесть, что сами объекты ребра и граней занимают память)
(— Занимают, но их в несколько раз меньше, чем вершин, поэтому они, скорее всего, и будут определять “асимптотику” расхода памяти.)
Детализация— количество полигонов, описывающих поверхность. Чем выше детализация, тем больше реалистичность и сложность. Виды:
● Статическая: для каждого объекта строится одна модель, которая всегда используется при построении изображения.
● Динамическая: для объекта строится несколько моделей, с разным уровнем детализации. Если объект далеко, используется модель с низкой детализацией, иначе — с высокой.
Достоинства векторной модели:
● Универсальность и простота
● Возможность выполнения аффинных преобразований
● Сравнительно небольшой объем данных
● Наличие универсальных алгоритмов визуализации, а также возможность их аппаратной реализации
Недостатки векторной модели:
● Сложность выполнения разрезов
● Для хорошего качества изображения необходим высокий уровень детализации.
Морфинг— технология, создающая впечатление плавной трансформации одного объекта в другое. Объектами морфинга обычно являются изображения, но могут быть и трёхмерные модели. На конечных изображениях (объектах) обычно задаётся набор соответствующих контрольных точек, после чего строятся промежуточные изображения путём интерполяции положения и цвета пикселей:
например когда строится модель лица, есть N выражений лица, и для нужной эмоции берется M<N моделей и вычисляется среднее для каждой точки в зависимости от приоритета.
Ещё пример: для каждого ребра скелета строится связанная с ним поверхность. Когда поворачиваются рёбра, поворачивается вся поверхность.