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

advertisement
(Глава из диссертации Андрея Шерстюка,
перевод с английского Сережкина Дениса)
Моделирование с помощью поверхностей свертки
1. Введение
Поверхности свертки были введены в компьютерную графику
Блюменталем
(Bloomenthal) и Шумейком (Shoemake) [6] как логическое обобщение классических моделей
неявных поверхностей: капельные объекты [4], метаболлы [17], мягкие объекты [21].
Являясь расширенным набором таких моделей, поверхности свертки наследуют их полезные
свойства, такие как способность формировать гладкие переходы и произвольные образы. В
тоже время поверхности свертки демонстрируют намного более богатую гибкость
моделирования, позволяя дизайнеру создавать объекты, используя технологию на базе
скелетов – с помощью элементов скелета различных видов и размеров.
Такие качества делают поверхности свертки чрезвычайно заманчивыми для дизайна
сочлененных объектов, особенно органического происхождения. Однако практическое
моделирование, разработанное более чем за два десятилетия для классических неявных
поверхностей, не может быть перенесено на поверхности свертки «как есть», без ущерба для
модели свертки. Как более гибкий и более мощный инструмент, поверхности свертки
нуждаются в лучшем «руководстве действиями» для полного выявления их потенциала.
Практические примеры неявного моделирования проявляют поразительные способности
неявных поверхностей и поверхностей свертки к смешиванию. Большинство объектов,
смоделированных с помощью неявных поверхностей, демонстрируют различные ветвящиеся
структуры, такие как деревья [5, 13], руки [7], лапы [19], хромосомы [9]; или показывают
определенную мягкость или плавность либо в анимации, либо как различные восприятия
неподвижных изображений. Примерами являются: человеческие губы [10] и лица [15],
молекулярные образы [4], кипящие жидкости [22, 23] и резиноподобные объекты [24]. Были
сделаны слабые попытки применения неявных поверхностей для моделирования шершавых
объектов. Одна из них представлена в [12].
Своими работами [14, 20] автор показывает, что возможности моделирования с помощью
поверхностей свертки выходят за пределы традиционных смешиваний. Он представляет
множество примитивов и набор технологий, которые позволяют создавать объекты,
манипулируя их видом на всех уровнях детализации, включая наложение текстур. Автор
демонстрирует, что поверхности свертки могут быть успешно использованы для
представления не только мягких и гибких материй, но также и жестких и хрупких объектов.
Большинство примеров связаны с морскими формами жизни – там существует изобилие
живых существ всех типов. Автор также описывает архитектуру системы интерактивного
моделирования с помощью поверхностей свертки. Система позволяет изменять объекты в
интерактивном режиме, что позволяет дизайнеру быстро приближаться к конечному образу.
2. Определения
Ниже приводятся базовые понятия и уравнения, используемые в моделировании с
помощью неявных поверхностей.
2.1. Неявные поверхности
Неявная поверхность S определяется как изоповерхность уровня T некоторого скалярного
поля f(p):
S = { p  R3 | f(p) – T = 0 }
(1)
1
2.2. Поверхности свертки
Поверхность свертки называется неявная поверхность, основанная на полевой функции
f(p), полученной путем свертки некоторой функции ядра h и функции геометрии g:
f ( p )  g ( p ) * h( p )   g ( r )h( p  r )dr
R
(2)
3
Функция геометрии g(p) определяет очертание объекта и его положение в трехмерном
пространстве. Функция ядра h(p) определяет распределение некоторого потенциала,
образованного всеми точками на объекте. Свернутые вместе, эти две функции дают
скалярную функцию f(p) трех случайных величин, определяющую поверхность свертки.
Рисунок 1 демонстрирует свертку с Гауссово-подобным ядром. В данном примере
геометрическая функция g(p) описывает линейный сегмент, направленный вдоль оси x.
Рисунок 1. Составляющие компоненты поверхности свертки: функция геометрии g (вверху
слева), функция ядра h (вверху справа), полевая функция свертки f (центр) и поверхность
свертки (снизу).
2.3. Неявные примитивы
В модели метаболлов неявных поверхностей [17] источники точечных потенциалов
представлялись как «мета-примитивы, определяемые их функцией распределения, которые
вместе формируют мета-поверхность». Что касается поверхностей сверстки, можно сказать,
что функция распределения (2) описывает неявный примитив с геометрией g.
Метаболлы, описанные Нишимура (Nishimura) и другими [17], являются по существу
мета-сферами. Неявные примитивы, созданные интегралом свертки (2), дают целое
разнообразие форм для моделирования. Например, линейный сегмент, свернутый с
функцией ядра, создает вытянутый образ, как показано на рисунке 1.
Так как большинство моделирующих примитивов формируют замкнутые компактные
множества (точки, отрезки, треугольники и т.д.), интеграл (2) по трехмерному пространству
может быть удобно заменен интегралом по объему V примитива:
f ( p )   h( p  r )dr
(3)
V
2
2.4. Скелеты
Для целей диссертации автор использовал следующее определение скелета. Скелет – это
набор геометрических примитивов, описывающих внутреннюю структуру моделируемого
объекта. Применительно к модели поверхностей свертки, скелетом является сумма функций
геометрии
N
 g ( p) .
i 1
i
Визуально
такой
скелет
представляет
собой
объединение
соответствующих примитивов. Свернутый с функцией ядра, скелет дает полевую функцию
f(p) и поверхность свертки S.
В других исследованиях используются определения скелетов с незначительными
отличиями [7, 9, 25]. Вообще, эти определения похожи и подразумевают, что моделируемый
объект может быть рассмотрен как комбинация отдельных компонент в противоположность
цельным и бесструктурным объектам. Однако степень превосходства скелета и образа
объекта может быть различным. В большинстве проблем сглаживания [9, 15], скелеты
выводятся из данных, связанных с объектом, подлежащим визуализации. В
противоположность, для среды моделирования, базирующейся на скелетах, образ объекта
формируется из скелета.
Идея моделирования на основе скелетов с помощью поверхностей свертки была
выдвинута в компьютерной графике Блюменталем (Bloomenthal) и Шумейком (Shoemake)
[6]. Они заметили, что дополнительные свойства сверток позволяют строить сложные
скелеты из простых примитивов и, что наиболее важно, позволяют вычислять их
индивидуально. Это делает поверхности свертки пригодными к практическим расчетам.
Блюменталь (Bloomenthal) [7] применил поверхности свертки для формирования плавных
образов, похожих на различные органические тела. Следуя из этого, автор решил применять
неявные примитивы, полученные с помощью технологии свертывания, для моделирования
широкого множества поверхностей, включая шершавые, игловатые и сморщенные
поверхности.
3. Система моделирования
В этой главе автор представляет набор инструментов и технологий моделирования с
помощью поверхностей свертки.
3.1. Новые примитивы моделирования как элементы скелета
В принципе, любой геометрический примитив может быть использован как элемент
скелета для модели на основе поверхностей свертки, имея ввиду общий интеграл (2). На
практике выбор таких примитивов часто ограничен техническими трудностями в
вычислении интеграла свертки.
Хотя большинство реализаций модели поверхностей свертки продемонстрированы в [6, 7,
19], подобные вычисления требуют точечной дискретизации поля в пространстве модели и
хранения промежуточных результатов для отрисовки1. При использовании технологий,
которые применяют точечную дискретизацию, должно быть уделено большое внимание
обеспечению того, чтобы мелкие особенности моделируемого объекта не были утеряны. Эта
задача может быть особенно трудна для моделей, содержащих примитивы с широко
изменяющимися характеристиками размеров.
Блюменталь (Bloomenthal) и Шумейк (Shoemake) [6] описали, как вычислить интеграл свертки (2) для
полигонов. Они использовали предвычисленное растровое представление двумерной свертки полигона и
хранили результаты в виде двумерных изображений. Сили (Sealy) и Вайвил (Wyvill) [19] разработали метод
вычисления интеграла свертки (2) для трехмерных объектов. Их метод включает в себя замену истинного
интеграла дискретными суммами над пространством модели. Для снижения потребностей в памяти, Сили
(Sealy) и Вайвил (Wyvill) использовали восмиричные деревья для хранения их трехмерных данных.
3
1
Решение интеграла свертки (2) в аналитической форме обеспечивает освобожденную от
таких проблем среду моделирования. Базируясь на предшествующих результатах [14], автор
предлагает следующие неявные примитивы для элементов скелета в виде поверхностей
свертки: точки, линейные сегменты, дуги, треугольники, плоскости. Все эти примитивы
моделирования представлены функциями аналитического вида, которые возвращают
интенсивность поля, генерируемого примитивом, в произвольной точке, вычисленную с
машинной вещественной точностью. Это делает их пригодными для визуализации
поверхностей свертки, используя алгоритмы прямой отрисовки, такие как трассировка луча.
Таким образом, ни предвычисления, ни временное хранение не являются необходимыми для
отрисовки поверхности, что особенно удобно для интерактивного моделирования. На
рисунке 2 показаны неявные примитивы, отрисованные в виде полупрозрачных
поверхностей с лежащими «голыми» геометрическими примитивами внутри.
Рисунок 2. Набор неявных примитивов: точка, линейный сегмент, дуга,
треугольник и плоскость. Примитив плоскости усечен и смешан с отрезком.
Хотя большинство этих примитивов уже были использованы в неявном моделировании
ранее (точки в [4, 15, 17, 21], отрезки в [2, 5, 19], треугольники в [7, 19]), представление их
полевых функций [14] в законченной форме все еще не исследовано. Эти функции
составляют сердце системы моделирования, представленной автором.
С доступным множеством примитивов моделирования идея скелетов становится особенно
жизненно – подобной, потому что теперь дизайнер может работать над скелетами так, как
будто они состоят из твердых «костей», каждая их которых имеет уникальный вид и размер:
точек, отрезков, кривых, треугольных частей. В добавление, из дуг можно составлять
окружности и спирали, из треугольников – полигоны, из отрезков – полилинии и т.д. Это
позволяет дизайнеру работать с объектом, создавая и используя те элементы, которые
наилучшим образом подходят для каждой отдельной части объекта. Пример подобного
мульти-примитивного скелета показан на рисунке 3, изображающем модель краба. Заметим,
что даже этот простой набросок дает хорошее представление о том, на что будет похож
результирующий образ краба. Законченная модель краба появится позже в главе 5.
Рисунок 3. Скелет кораллового краба составлен из
7-ми треугольников, 24-х дуг и 24-х отрезков.
4
3.2. Локальные свойства неявных примитивов
Как определено формулой (3), поверхность свертки является результатом свертки
N
функции геометрии g и функции ядра h. Функция геометрии g   g i формирует скелет,
i 1
который обеспечивает глобальное описание объекта: его основой макет, расположение и
базовые очертания отдельных частей. Для законченности описания объекта должны быть
указаны локальные свойства каждого элемента gi скелета.
Такие свойства могут быть подробно описаны в терминах радиуса изоляции R и
капельности B, как было предложено Блинном (Blinn) [4]. Радиус изоляции – это
характеристическое расстояние между геометрическим примитивом и неявной
поверхностью, им генерируемой. Для неточечных примитивов реальное расстояние может
варьироваться вдоль поверхности. Параметр капельности контролирует смешивание частей
объекта. Очень капельные объекты, сведенные вместе, стремятся сформировать
сфероподобные образы с очень незначительным или вообще неразличимым сохранением
деталей. Объекты с низкой капельностью выглядят более похожими на свои скелеты. На
рисунке 4 показана серия поверхностей свертки с различными значениями капельности и
радиуса изоляции. Блинн (Blinn) использовал эти два параметра для определения внешнего
вида его точечных моделирующих примитивов. Автор обобщает эти параметры на все
моделирующие примитивы, изображенные на рисунке 2.
Рисунок 4. T – образная поверхность свертки, сформированная двумя отрезками. Увеличение
капельности (слева направо) и радиуса изоляции (снизу вверх) позволяет достигать разнообразия видов.
Скелет, радиус изоляции и капельность всех элементов скелета полностью определяют
неявную поверхность. Граница T, используемая в выражении (1) неявной поверхности,
может быть удобно установлена к некоторому каноническому значению, как описано в [4].
В качестве альтернативы радиусу изоляции неявный примитив может быть
характеризован его областью воздействия. Область воздействия - это область в трехмерном
пространстве, где полевая функция f примитива имеет ненулевое значение. Область
воздействия зависит от геометрии примитива и функции ядра. Например, для сферическисимметричного ядра областью воздействия у точки является сфера; у линейного сегмента –
цилиндр, закрытый с концов полусферами, и т.д. Области воздействия обычно используются
во время отрисовки для отсечения незначащих вкладов со стороны отдаленных примитивов.
Важных свойством областей воздействия является то, что неявные поверхности всегда
находятся внутри границ этих областей. Независимо от значений капельности и радиуса
изоляции поверхность свертки «натекание» на рисунке 5 (в середине и справа) всегда
покрывает свой «голый» скелет (сплошные линии) и всегда покрывается границей области
воздействия своих компонентов (пунктирные линии). Это свойство очень полноценное для
оценивания размеров поверхности свертки.
5
Таким образом, глубина области воздействия (или просто глубина воздействия) может
служить моделирующим параметром, являющимся альтернативой радиусу изоляции.
Рисунок 5 демонстрирует основные элементы и параметры моделирования с помощью
неявных поверхностей.
Рисунок 5. Элементы неявного «натекания», слева направо: скелет, сделанный из «голых» геометрических
примитивов (три отрезка и одна точка); их неявные поверхности, отрисованные как автономные объекты;
результирующая поверхность свертки. На среднем изображении смешивание между неявными
поврхностями блокировано для того, чтобы лучше показать радиус изоляции R и глубину воздействия D.
3.3. Материалы и элементы
Определив свойства элементов скелета (такие как радиус изоляции R и капельность B),
необходимо обеспечить способ сопоставления их элементам скелета. Это может быть
сделано
 распределением этих параметров между большим числом элементов;
 задавая их для каждого элемента скелета индивидуально.
Практика показывает, что оба метода находят свое использование, поэтому автор включил
их оба в свою систему моделирования.
3.3.1. Материалы
Первый метод наиболее удобен для моделирования объектов, которые имеют большие
области с одинаковыми свойствами, потому что он позволяет применять понятие материала.
Обычно описание материала включает в себя общепринятые фотометрические
характеристики, зависящие от модели света: цвет расплытия, зеркальная отражаемость,
прозрачность и т.д. Такие описания могут быть легко усовершенствованы добавлением
значений капельности и радиуса изоляции, которые имеют сходство с мягкостью и толщиной
соответственно. Это хорошо подходит для идеи моделирования с помощью скелетов: теперь
каждая «кость» скелета покрывается некоторой «мягкой тканью», которая совместно
используется элементами скелета. Для примера рассмотрим материал неявного «натекания»,
изображенного на рисунке 5.
material Ice
{
body
SummerSky,
ambient
1%,
diffuse
1%,
specular
SummerSky, shine 30,
transparent
40%, index 1.33,
reflective 50%,
radius
0.25,
blobbyness -0.30
}
6
В этом примере материал Ice определен как почти бесцветная, зеркальная и прозрачная
материя. Значения радиуса и капельности (blobbyness) обусловлены геометрическими
свойствами поверхности свертки, базирующейся на скелете, заданным как
object ICICLE
line Ice,
line Ice,
line Ice,
dot Ice,
close
<0
<0
<0
<0
0 0>, <0 0 4.5>
0.5 3.0>, <0 0.5 4.5>
–0.5 1.5>, <0 –0.5 4.5>
0 –0.85>
Описание поверхности свертки, основанное на материале, имеет два преимущества.
Во-первых, это очень удобно для целей моделирования, так как позволяет продумывать
скелеты и «мягкие ткани» как различные сущности, которые можно модифицировать
независимо друг от друга. Абстрагирование описания материала от скелета часто позволяет
интерактивно изменять материалы объектов. Это помогает регулировать многие параметры
поверхности, как фотометрические, так и геометрические, без перезагрузки модели в память
для отрисовки.
Во-вторых, локальные параметры скелета не дублируются для каждого элемента скелета,
а распространяются путем описания материала (обратите внимание на простоту синтаксиса
для моделирующих примитивов точки (dot) и линии в вышеприведенном примере). Такое
средство дружественно к памяти, что может быть важно, когда количество элементов в
скелете модели велико.
3.3.2. Индивидуальные элементы
Индивидуальные значения параметров R и B необходимы, когда требования модели
таковы, что каждый примитив должен строго отличаться от своих соседей. Такие модели
часто приходят из процедурных методов, особенно в имитации наростов [11, 18]. Например,
рассмотрите последовательность сфер, изображенную на рисунке 6, которая характеризует
модели сплошных морских сред [18]. В терминах неявного моделирования каждая сфера
описывает область воздействия точечного примитива, таким образом, весь объект должен
быть определен как
object SHELL
sphere Plaster, r1, x1 y1 z1
sphere Plaster, r2, x2 y2 z2
...
close
Здесь r1,r2,…,ri обозначают глубину воздействия каждой точки, а тройки (x,y,z) задают
расположения их центров. Значение капельности хранится в определении материала Plaster,
описанным в другом месте, подобно тому, как это было сделано для материала Ice. Все
модели морских сред, которые будут обсуждаться в дальнейшем, построены путем
установки индивидуальной глубины воздействия для каждого элемента такой модели.
Рисунок 6. Строгое уменьшение области воздействия этих неявных
точечных примитивов требует индивидуального задания значений.
7
3.4. Профилирование как метод достижения разнообразия
Рисунок 2 изображает базовые примитивы в их каноническом, недеформированном, виде,
который может не являться наилучшим для конкретной задачи моделирования. Точнее, эти
образы являются платформой для вариаций и экспериментов.
Рисунок 7. Линейные сегменты с модифицированными полевыми функциями:
костанта (A), линейная (B), произвольная (C), синусоидальная sin2(x) (D)
Как показано на рисунке 7 недеформированный линейный сегмент (A) легко принимает
различные виды (B, C, D) в соответствии с функцией профиля. Функции профиля
масштабируют значения поля, что является причиной изменения результирующей неявной
поверхности. Так как линейный сегмент симметричен относительно оси, то каждая функция
профиля, изображенная на рисунке 7, описывает поверхность вращения вокруг оси. Техника
профилирования масштабирует значение полевой функции, а не итоговой изоповерхности. В
N
терминах моделирующей формулы
F ( p )   f i ( p ) функции профиля модифицируют
i 1
значения каждой составляющей fi. Например, полевой функцией линейного сегмента,
изображенного на рисунке 7 (D), является
Fmodified(x, y, z) = Fline(x, y, z) sin2(x),
где Fline(x, y, z) может быть любой из известных полевых функций отрезка.
В продолжение параллели со скелетами, функции профиля обеспечивают механизм
имитации изменений толщины и (или) мягкости вдоль кости, то есть линейного сегмента.
Существует бесконечно много способов модифицирования полевой функции неявного
примитива. Функции профиля используются практически во всех примерах моделирования с
помощью поверхностей свертки.
3.5. Оффсет поверхности как визуальная помощь и структуры данных
Как показано на рисунке 2, автономные неявные примитивы на базе точек, отрезков, дуг,
треугольников и плоскостей могут быть достаточно хорошо аппроксимированы оффсет
поверхностями [6, 8] на базе таких же примитивов. Ими являются, соответственно: сферы,
цилиндры, дугообразные трубы, призмы и бесконечные плиты. Вытесняющее расстояние
может быть установлено равным радиусу изоляции R или глубине воздействия D (смотри
рисунок 5 в центре) в соответствии с текущей ситуацией моделирования.
Таким подобием предлагается удобная стратегия моделирования: сначала объект
аппроксимируется оффсет поверхностью, а затем детализируется поверхностью свертки.
Важной особенностью такого подхода является то, что наиболее тяжелая часть работы
моделирования, связанная с созданием скелета, может быть выполнена с использованием
оффсет поверхностей, которые легко отрисовываются. Для поддержки такой аналогии автор
использовал одинаковый синтаксис и внутренние структуры данных, как для неявных
8
примитивов, так и для соответствующих им оффсет эквивалентов. Например, командная
строка
sphere Plaster, r0, 0 0 0
создает объект в памяти, который может появиться как обычная сфера радиуса r0, сделанная
из материала Plaster и расположенная в начале координат. Также этот объект может
появиться как неявная точка с радиусом изоляции r0. Как описано выше, ее капельность
заложена в характеристике Plaster.
Цилиндры, дуги, треугольники и плоскости также имеют синтаксис и структуры данных,
пригодные для многократного использования. После загрузки набора примитивов в память,
он доступен для отрисовки в любом из режимов: как оффсет поверхность и как поверхность
свертки. В первом случае неявный характер всех моделирующих примитивов игнорируется и
они отрисовываются в виде объединения оффсет поверхностей. Во втором случае
примитивы обрабатываются как полевые функции fi(p), которые формируют смешанное
скалярное поле поверхности свертки. Для переключения между двумя режимами рисования
используется простой флаг on/off. При этом модель не нуждается в перезагрузке в память.
Такая двойственность структур данных доказывает свою большую полезность. Простые в
вычислениях оффсет изображения позволяют прекрасно настраивать модели в
интерактивном режиме. Поскольку в качестве метода отрисовки используется трассировка
луча, то все установки камеры, освещения и фотометрические свойства объектов также
удобно регулировать в режиме оффсет поверхностей.
3.6. Переменные
Для лучшей интерактивности среды моделирования следующие типы данных разрешено
определять как переменные:
 числа
 векторы
 цвета
 текстуры
 материалы
Переменные могут быть созданы и изменены «на лету» во время сеанса моделирования.
Они также могут быть заданы друг через друга, соблюдая преобразование типов. С
использованием переменных становится возможным изменять практически все элементы
модели, пока они находятся в памяти компьютера. Это включает в себя: расположение и вид
всех элементов скелета, капельность и толщина, все фотометрические характеристики. В
добавление, переменные могут быть объявлены как автовозрастающие и (или)
авторазмножающиеся, что помогает определять движение объектов в анимации.
4. Главный цикл моделирования
4.1. Наборы данных
В предыдущих главах были упомянуты элементы, названные набором данных, который
является полным множеством параметров, подробно определяющих геометрию модели.
Каждый набор данных содержит описания всех материалов и элементов скелета, которые
вместе формируют поверхность свертки. Кроме того, набор данных описывает все изменения
локальных параметров элементов скелета, которые необходимо надлежащим образом учесть
в требуемой результирующей поверхности. Поэтому набор данных должен рассматриваться
как программа на некотором высоко специализированном языке для описания поверхностей
свертки. В приложении к диссертации автор приводит полный справочник по такому языку и
несколько законченных наборов данных.
9
Что касается моделирования и отрисовки, то набор данных может рассматриваться как
выходной для процесса моделирования и как входной для программы отрисовки.
4.2. Главная стратегия моделирования
Автор использует метод последовательного уточнения набора данных в качестве
стратегии моделирования. Сначала получается исходный набор данных, используя
некоторую внешнюю геометрическую модель, генерирующую программу или вдохновение
пользователя карандашом на бумаге. Затем набор данных подвергается серии итераций, в
течение которых дизайнер редактирует существующие элементы набора данных, добавляет
новые или удаляет те, которые ухудшают модель.
Схема глобального потока данных типичного сеанса моделирования изображена на
рисунке 8. Для этого конкретного примера модель скелета была сделана программой
выращивания деревьев на основе реализации Эриком Хайнесом (Eric Haines) [11] метода
Аона (Aono) и Кани (Kunii) генерации деревьев [1]. Остальная часть набора данных, полная
пометок с вопросами, должна быть смоделирована интерактивно.
Рисунок 8. Главный цикл моделирования.
10
Применяя различные значения толщины к элементам скелета, было сделано несколько
набросков, изображенных в виде стека картинок в правой части рисунка. Так как оффсет
поверхности, используемые для создания набросков, легко отрисовываются, то процесс
может повторяться итерационно нужное количество раз, пока не будут найдены лучшие
значения толщины для всех веток.
В этот момент дизайнер может переключиться на использование поверхностей свертки и
попробовать различные значения капельности. После нескольких попыток, когда требуемый
образ найден, набор данных считается полностью законченным, и процесс завершается2.
Заметим, что такая стратегия моделирования выигрывает в конструировании: процесс
завершается, когда дизайнер удовлетворен результатом. Визуальное управление качеством
текущего состояния модели гарантирует, что процесс моделирования идет в правильном
направлении. Резервное копирование набора данных помогает фиксировать непоправимые
изменения.
Процесс моделирования несет определенное сходство с прототипом программирования
подъема на возвышенность: процесс входит в цикл и движется навстречу решению,
повторяя текущее состояние задачи.
5. Практические примеры неявного моделирования
В этой главе обсуждаются практические примеры моделирования. Они сгруппированы по
методам, которые использовались для дизайна. Что касается главного цикла моделирования,
изображенного на рисунке 8, то методы приблизительно разделены на те, которые работают
со скелетами (правая сторона рисунка), и методы, которые уточняют локальные свойства
поверхностей свертки (левая сторона).
5.1. Глобальное управление скелетом
Система моделирования позволяет, в принципе, интерактивно создавать новые скелеты с
нуля. Однако, более удобным является подготовка начального скелета, используя один из
методов, описанных ниже.
5.1.1. Процедурные методы
Два скелета были сделаны, используя чисто процедурные методы: раковина гладкой
улитки на рисунке 9 и морская водоросль на рисунке 13. Оба были сгенерированы с
помощью модифицированных программ shell и tree соответственно из стандартной
процедурной базы данных Эрика Хайнеса (Standard Procedural Database by Eric Haines) [11].
Эти скелеты довольно просты. Tree-скелет был также использован в модели кораллового
дерева, показанной на рисунке 14. Дополнительно, используя случайное местоположение, в
модель процедурно было добавлено 512 шипов.
Рисунок 9. Улитка I. Основанные на
точках оффсет поверхность (слева)
и поверхность свертки (справа)
очень похожи. Набор данных
послужил базовой моделью для
улитки II и III. 361 элемент.
Дизайнер может также попытаться улучшить результирующий образ, применяя различные функции профиля.
Результат таких экспериментов показан на рисунке 13.
2
11
5.1.2. Умение рисовать от руки
Скелет морского конька, изображенного на рисунке 15, полностью нарисован от руки.
Сначала было создан эскиз на бумаге. Затем он был скопирован с помощью инструмента
рисования xfig (рисунок 15 слева), который вычислил координаты элементов скелета, в
нашей ситуации дуг. В большинстве случаев соединения между нарисованными дугами C 1 и
C2 непрерывно. Разрывы на оффсет поверхности (рисунок 15 в середине) сделаны
специально, чтобы лучше показать элементы скелета. Итоговая поверхность свертки
(рисунок 15 справа) удаляет эти разрывы. Заметим, что толщина каждого элемента скелета
установлена индивидуально. Центральная дуга морского конька сделана особенно толстой.
Результирующее раздутие заполняет пустое пространство внутри тела и, возможно,
показывает наличие внутренних органов.
Рисунок 10. Улитка
II. Оффсет
поверхность этого моллюска изображена
как объединение простых цилиндров
(вместо цилиндров, ограниченных
с
концов полусферами), чтобы лучше
подчеркнуть спиралевидную структуру.
42 элемента.
5.1.3. Методы смешивания
Процедурно генерируемые модели могут быть
значительно усовершенствованы
использованием ручного управления. Например, овальная морская улитка, изображенная на
рисунке 10, выведена из предыдущей гладкой сферической модели (рисунок 9) путем
простого добавления одной точки, которая затем была соединена со всеми точками
начального набора данных. Таким образом, все сферы превратились в цилиндры с общим
основанием. Образ новой улитки может легко контролироваться перемещением этого
общего основания. Это напоминает технику резиновой ленты с каркасным представлением
сплошного объекта. Используя переменную векторного типа для хранения координат точки
общего основания, проделывать такие манипуляции особенно удобно.
Рисунок 11. Улитка 3. Совмещение
двух скелетов: оранжевая основа (55
элементов), смешаная со спиральным
рядом красных рожек (15 элементов),
дает гладкий образ свертки новой
морской
улитки.
Оба
скелета
сделаны процедурно.
Скелет следующей улитки был также создан процедурно, а затем изменен вручную. К
этому времени уже были два скелета, описанные выше. Наложением друг на друга был
получен комбинированный скелет рогатой улитки, изображенной на рисунке 11.
В то время как ручное вмешательство часто улучшает процедурные скелеты, обратный
процесс также правильный: нарисованные от руки скелеты можно сделать намного более
интересными и визуально привлекательными с помощью программных генераторов
специального назначения. Примерами таких скелетов являются: веретенообразная раковина
(рисунок 12) и коралловый краб (рисунок 16). Оба скелета были вручную скопированы с
12
реальных фотографий [16] с помощью инструмента рисования xfig. Затем процедурно были
добавлены мелкие детали.
Обычно скелеты смешанного происхождения дают более интересные изображения.
Рисунок 12. Эта очень простая модель
веретенообразной раковины основана
на рогаликоподобной комбинации
трех дуг. Сто дополнительных
цилиндров заставляют поверхность
выглядеть более интересной.
5.1.4. Импортированные модели
Две полностью импортированные полигональные модели Йоды (Yoda) и Нефертити
(Nefertiti) изображены на рисунках 19 и 18 соответственно. Указанные модели были
использованы в качестве полигональных скелетов для поверхности свертки без каких бы то
ни было модификаций их исходных сетей. Происхождение обоих моделей неясно.
Рисунок 13. Морская водоросль.
Оффсет поверхность создана из
конусов и сфер. Конические
образы веток дерева предложено
создавать функциями профиля
для поверхности свертки.
Рисунок 14. Коралловое дерево.
Заметим, что базовый скелет (31
цилиндрическая ветка) идентичен
модели
морской
водоросли.
Дополнительно 512 цилиндрических
шипов различной длины разбросаны
вдоль
поверхности
случайным
образом.
5.2. Техника локального моделирования
После того, как глобальный скелет закончен, дизайнер может переключиться на более
утонченные технологии моделирования и усовершенствовать модель по своему вкусу. Что
касается цикла моделирования (рисунок 8), то эти операции происходят на левой стороне
цикла, потому что большинство технологий, описываемых ниже, применяются к свернутым
версиям объекта.
13
5.2.1. Техника придания формы
Придание формы – это применение функций профиля по их прямому назначению, что
создает локальные разновидности радиуса изоляции (или толщины материала). Примеры
придания формы представлены на рисунках 8 и 13, на которых нормальное дерево
превращается в морскую водоросль применением линейно-образных функций к его ветвям.
Менее наглядные примеры придания формы могут быть найдены в модели кораллового
краба (рисунок 16). Конечные сегменты ног краба также линейно модифицированы для
придания им более коварного вида.
Рисунок 15. Морской конек. Ручной
рисунок (слева), оффсет поверхность
(середина) и поверхность свертки
(справа). Обатите внимание, как складки
на спине и хвосте показывают мягкость
кожи. Общее число элементов 45 (43
дуги и 2 сферы).
Рисунок 16. Коралловый краб.
Простейшая черновая поверхность
состоит из 7-ми полигонов (тело),
26-ти
дуг
(клешни,
глазные
впадины), 28-ми цилиндров (ноги,
клешни) и 2-х сфер (глаза).
Свернутая версия дополнительно
содержит 608 шипов, разбросанных
вдоль всей поверхности.
5.2.2. Техника высечения
Высечение является комбинацией использования глубины воздействия как параметра
моделирования и некоторых функций профиля. Глубина воздействия вокруг моделирующих
примитивов определяет количество высекаемого «вещества». Функция профиля определяет
вид «режущего инструмента».
Технически функция профиля действует на каждый моделирующий примитив
индивидуально, как показано на рисунке 7. Однако когда моделирующие примитивы
взаимно проникают друг в друга, как это происходит в спиральных морских улитках
(рисунки 9, 10, 11), то результат высечения такой, как будто режущий инструмент вращался
в пространстве модели, следуя спиральной кривой улитки. В этом случае функция профиля
похожа на генерируемые кривые, используемые для генерирования морских улиток в [27].
Техника высечения была использована во всех моделях спиральных улиток, изображенных
на рисунках 9, 10, 11 и детализирована в таблице 1.
Рисунок
9
10
11
Примитивы
361 точка
42 отрезка
70 отрезков
Профиль
константа
линейный
sin2(x)
Таблица 1. Моделирование спиральных улиток.
14
5.3. Объемная детализация
Определенные как изоповерхности в скалярном поле, поверхности свертки чувствительны
к изменениям этого поля. Крупномасштабные отклонения являются причиной изменений
внешнего вида объекта. Маломасштабные отклонения изменяют геометрию поверхности
локально, добавляя больше деталей в объект. Такие детали усиливают впечатление от
внешнего вида объекта и порождают различные эффекты строения. Поскольку эти детали
базируются на неявных функциях, объемных по своей природе, то автор назвал это
объемной детализацией.
Большинство моделей, представленных в данной работе, содержат объемную
детализацию, которая может быть классифицирована по трем основным направлениям:
структурная, функциональная и процедурная.
5.3.1. Структурная детализация
Этот метод подразумевает добавление большего числа моделирующих примитивов, что
может быть сделано вручную или с использованием некоторых вспомогательных программ.
Хотя это выглядит как грубое насильственное решение, структурная детализация может
быть очень эффективной при моделировании различных неравномерных и шероховатых
поверхностей, таких как тело, клешни и их зажимы кораллового краба, показанного на
рисунке 16, или совокупный образ кораллового дерева (рисунок 13). Аналогично образ
веретенообразной раковины улитки (рисунок 12) усиливается цилиндрическими выступами.
Другие примеры использования таких выступов для поверхностей свертки представлены в
[7, 8].
Одним из удобных свойств структурной детализации является то, что в отличие от других
методов добавления деталей большинство итераций с набором данных может быть
выполнено со оффсет представлением поверхностей. Это соответствует правой стороне
главного цикла моделирования (рисунок 8), где дизайнер может позволить себе создавать
большое число изображений.
5.3.2. Функциональная детализация
Функциональная детализация проводится добавлением функций профиля для малых
участков поверхности. Например, рассмотрите складки на спине и хвосте морского конька
(рисунок 15).
Рисунок 17. Как сделать объемные складки: (A) Выбрать место для складок. (B) Выхватить
соответствующую дугу. (C) Разделить дугу пополам и модифицировать одну из половинок
синусоидальной волной. Вместе они формируют объемный имплантат со складками, готовый для
замещения. (D) Имплантат со складками поместить обратно на место.
Рисунок 17 иллюстрирует, как имплантируются складки в изначально гладкую
поверхность свертки. Этот рисунок представляет собой точное увеличение рисунка 15 с
лучше прорисованными анатомическими частями (показаны только участвующие элементы
скелета и близкие соседи).
Заметим, что полевая функция объемного имплантата со складками, как показано на
рисунке 15, может быть представлена одиночной дугой, модифицированной увеличенной и
15
масштабируемой синусоидальной волной a1(1 + a2sin(x)), вместо двух на рисунке 17. В этом
случае стоит подумать над выбором: добавлять дополнительный примитив в набор данных
или еще одну функцию профиля в систему моделирования.
Похожее использование высокочастотных функций для добавления объемных деталей
описано в [3]. Разница подходов заключается в том, что автором данной работы используется
среда моделирования на основе скелетов, которая позволяет выбирать местоположение для
таких деталей.
Рисунок 18. Нефертити, до (слева) и
после (в середине и справа) свертки.
Ограниченное смешивание влизи
ребер создает мощины (справа).
Общее
количество
неявных
треугольников: 1242.
5.3.3. Процедурная детализация
Возможно, наиболее необычные примеры объемной детализации представлены на
рисунках 18 и 19. Эти изображения представляют собой результаты экспериментов с сетями
триангуляции, используемыми в качестве скелетов для поверхностей свертки.
Триангуляционная сеть обычно применяется для аппроксимации поверхностей, как показано
на рисунке 18 слева и рисунке 19 сверху. Свертывание треугольников с функцией ядра
потенциала вносит замечательные изменения во внешний вид моделируемого объекта, что
проиллюстрировано на рисунке 18 в
середине. Однако простая свертка делает
кожу Нефертити распухшей. Все тонкие
черты теряются, так как фильтр нижних
частот свертки уничтожает высокие
частоты.
Рисунок 19. Дряхлый Йода: полигональная
сеть (вверху), поверхность свертки (середина
и
низ).
Общее
количество
неявных
треугольников: 3422.
16
Для понижения эффекта распухшести использован механизм ограничения, который
искусственно уменьшает интенсивность поля, генерируемого треугольными примитивами
вблизи ребер. Поэтому поверхность демонстрирует выпуклости в районах центральных
частей каждого из треугольников и впадины вдоль их ребер. Максимальная разница в
районах подъема от таких впадин к выпуклостям зависит от толщины материала лица (то
есть кожи) и значения ограничивающего параметра. Прежде стремились вычислить
поверхность свертки над «голым» полигональным скелетом, особенно в центральной части
каждого полигона. Позднее натягивали поверхность ближе к ребрам треугольников, создавая
морщины вдоль ребер. Шероховатость результирующей неявной поверхности может
эффективно контролироваться варьированием обоих параметров: толщиной и параметром
ограничения масштаба.
Видимый результат таким образом контролируемой свертки воспринимается как возраст
образа. Морщинистое и высушенное лицо Нефертити, несомненно, более интересно и
определенно более реалистично – прототипу такой модели 5500 лет. Подобным образом
свернутая кожа сделала внешний вид Йоды более развитым.
Механизм ограничения может быть комбинирован с традиционным UVкартографированием для создания даже большей морщинистости внутри каждого
треугольника. В качестве альтернативы могут быть использованы процедурные или
шумовые функции для модификации значений полевых функций. В любом случае видимый
уровень сложности результирующей поверхности свертки может быть увеличен без
увеличения числа элементов скелета.
Заметим, что все типы объемной детализации, представленные выше, имеют
правдоподобную геометрическую природу и не являются теневыми хитростями. Они в
полной мере используются в графических манипуляциях, таких как вычисления при
визуализации, затенении, преобразованиях и т.д. Локально модифицируя геометрию
поверхности, объемная детализация создает дополнительные особенности, которые могут
быть очень информативными. Например, шипы и рога подразумевают твердые и жесткие
поверхности; наличие складок часто предполагает то, что объект гибкий, подвержен
изменениям и на данный момент деформирован от его обычного состояния; морщины
говорят о старом возрасте. Такие детализации усиливают визуальную реалистичность
модели и содержат сильный потенциал комплексного моделирования с помощью неявных
поверхностей.
6. Детали реализации и скоростные характеристики
Все модели, описанные выше, построены и отрисованы с использованием собственной
системы моделирования и отрисовки RATS версии 7.31, функционирующей под
управлением операционной системы Linux с процессором Pentium 90 MHz. Алгоритм
трассировки лучей, используемый в RATS системе, описывается в следующей части
диссертации. Оффсет поверхности также отрисовываются с помощью данного алгоритма;
такие алгоритмы могут быть найдены в [29] и [71]. В таблице 2 представлена детальная
информация каждом наборе данных и времени отрисовки. Разрешение изображения
составляет 512 x 512. Метод наложения: трассирование максимум шестнадцатью основными
лучами на пиксель (конечно, в процессе сеанса интерактивного моделирования были
использованы изображения намного меньшего разрешения, составляющего, как правило, 128
x 128; было разрешено использование одного трассирующего луча на пиксель для отрисовки
оффсет поверхностей за время, не превышающее десяти секунд на итерацию).
17
Модель
Улитка I
Улитка II
Улитка III
Веретено
Водоросль
Коралл
Конек
Краб
Состав
361 точка
42 отрезка
40 отрезков
103 элемента
31 отрезок
543 отрезка
43 дуги
641 элемент
Оффсет
2:52
20:45
12:54
7:34
3:34
11:18
5:25
14:03
Свертка
22:46
32:51
41:16
24:40
4:46
38:50
11:52
46:13
t2 / t1
7.81
1.58
3.20
3.26
1.34
3.43
2.19
3.29
Таблица 2. Время отрисовки (мин : сек) для оффсет поверхностей и поверхностей свертки.
Указанные временные данные дают слегка искаженную картину реальной ситуации.
Например, пусть некоторая оффсет поверхность содержит большое количество ребер,
которые должны быть наложены трассировкой большим числом лучей. Свернутый же образ
имеет тенденцию быть меньшим, поэтому должно быть отобрано меньшее количество
пикселей. Это объясняет необычно низкое временное возрастание (1.58) для отрисовки
второй улитки в виде поверхности свертки: она имеет очень точный аналог оффсет
поверхности.
Модель морского конька представляет собой другой «особый случай» низкого временного
коэффициента. Так как дугообразные цилиндры, используемые в оффсет поверхности, уже
очень трудоемки для вычислений (они требуют вычисления квадратичных полиномов при
каждой проверке пересечения), переход к поверхностям свертки не приводит к крутым
изменениям во времени отрисовки.
Наиболее быстрым неявным примитивом, в соответствии с таблицей 2, является
линейный сегмент (смотри модель водоросли на рисунке 8). Ему требуется всего на 34%
больше времени для отрисовки по сравнению с аналогом явного представления. Подобная
эффективность объясняется также и более лучшим ядром, которое было использовано для
такого специфического набора данных, а именно h(x) = b exp(-a2x2). Полевая функция для
линейных сегментов, свернутая с таким ядром, оказывается очень эффективной для данной
конкретной модели3. Экспоненциальная функция ядра была впервые предложена Блинном
(Blinn) [4].
Отношение времени построения поверхности свертки ко времени построения оффсет
поверхности в среднем составляет 3.2. Это является платой за более качественное
изображение. Модель краба, содержащая все типы новых неявных примитивов, показывает
понижение этого параметра примерно до 3.29.
7. Заключение
В этой работе автором представлено разнообразие примитивов и технологий неявного
моделирования. Точки, отрезки, дуги и треугольники, используемые в качестве элементов
поверхностей свертки, порождают богатое множество необычных вариаций этой концепции
моделирования. Обсуждены методы добавления деталей, которые усиливают реалистичность
изображений и расширяют возможности неявного моделирования.
Автор обращает внимание на то, что большинство представленных изображений в этой
части диссертации не могли быть получены общепринятыми технологиями, разработанными
для неявного моделирования на сегодняшний день. Эти изображения являются результатом
концепции поверхностей свертки и серии дополнительных методов моделирования,
описанных выше. Методы отрисовки обсуждаются в следующей части диссертации.
Заметим, что полевая функция линейного сегмента, полученная с помощью ядра Гаусса, проигрывает по
скорости линейному сегменту на основе ядра Коши. Однаков различных ситуациях моделирования при
различных значениях капельности и радиуса изоляции, Гауссов линейный сегмент может быть быстрее
(например, из-за оболочек с тугими границами), как это произошло в данном случае
18
3
8. Литература
[1] M. Aono and T. Kunii, «Botanical Tree Image Generation», IEEE Computer Graphics and Applications, Vol. 4,
No. 5, May 1984, pp. 10--29, 32--34.
[2] T. Beier, «Practical Uses for Implicit Surfaces in Animation», SIGGRAPH Course 23, August 1990, pp. 20.1-20.11.
[3] H. Bidasaria, «Defining and Rendering of Textured Objects through the Use of Exponential Functions», Graphical
models and image processing, Vol. 54, No. 2, March, 1992, pp.97--102.
[4] J. Blinn, «A Generalization of Algebraic Surface Drawing», ACM TOG, Vol. 1, No. 3, July 1982, pp. 235--256.
[5] J. Bloomenthal, «Modeling the Mighty Maple», Computer Graphics (SIGGRAPH '85 Proceedings), Vol. 19, No.
3, San Francisco, California, July 1985, pp.305--311.
[6] J. Bloomenthal and K. Shoemake, «Convolution Surfaces», Computer Graphics (SIGGRAPH '91 Proceedings),
Vol. 25, No. 4, Las Vegas, Nevada, July 1991, pp. 251--257.
[7] J. Bloomenthal, Skeletal Design of Natural Forms, doctoral dissertation, University of Calgary, Dept. Computer
Science, 1995.
[8] J. Bloomenthal, editor, Introduction to Implicit Surfaces, Morgan Kaufmann Inc, 1997.
[9] E. Ferley, M.-P. Cani-Gascuel, and D. Attali, «Skeletal Reconstruction of Branching Shapes», Implicit
Surfaces'96: 2nd International Workshop on Implicit Surfaces, Eindhoven, The Netherlands, October 1996.
[10] T. Guiard-Marigny, N. Tsingos, A. Adjoudani, C. Benoit, and M.-P. Gascuel, «3D models of the lips for realistic
speech animation», Computer Animation'96, D. Thalmann and N. Magnenat-Thalmann, Eds, Geneva
(Switzerland), pp. 80--89.
[11] E. Haines, «A Proposal for Standard Graphics Environments», IEEE Computer Graphics and Applications, Vol. 7,
No. 11, November 1987, pp. 3--5. The SPD package is available at ftp.princeton.edu: /pub/Graphics/SPD
[12] J. Hart, «Implicit formulations of rough surfaces», Proceedings of Implicit Surfaces '95, Eurographics Workshop,
April 1995, pp. 33--44.
[13] J. Hart and B. Baker, «Implicit Modeling of Tree Surfaces», Proceedings of Implicit Surfaces '96, October 1996,
pp. 143--152.
[14] J. McCormack and A. Sherstyuk, «Creating and Rendering Convolution Surfaces», Computer Graphics Forum,
Vol. 17, No. 2, 1998, pp.113--120.
[15] S. Muraki, «Volumetric shape description of range data using «Blobby Model»», Computer Graphics
(SIGGRAPH '91 Proceedings), Vol. 25, No. 4, Las Vegas, Nevada, July 1991, pp. 251--257.
[16] F. Nichols and M. Stachels, editors, Marine Life of the Indo-Pacific Region, Periplus Editions, 1996.
[17] H. Nishimura, M. Hirai, T. Kawai, T. Kawata, I. Shirakawa, and K. Omura, «Object Modelling by Distribution
Function and a Method of Image Generation», The Transactions of the Institute of Electronics and Communication
Engineers of Japan, 1985, Vol. J68-D, Part 4, pp. 718--725, in Japanese (English translation by Takao Fujuwara,
Advanced Studies in Computer Aided Art and Design, Middlesex Polytechnic, England, 1989)
[18] C. Pickover, «A Short Recipe for Seashell Synthesis», IEEE Computer Graphics and Applications, Vol. 9, No. 6,
November 1989, pp. 8--11.
[19] G. Sealy and G. Wyvill, «Smoothing of three dimensional models by convolution», Computer Graphics
International '96 Proceedings, June 1996, Pohang, Korea, pp. 184--190.
[20] A. Sherstyuk, «Fast Ray Tracing Of Implicit Surfaces», Implicit Surfaces'98, Proceedings of the third international
workshop on Implicit Surfaces, Seattle, USA, June 1998, pp. 145--153.
[21] G. Wyvill, C. McPheeters and B. Wyvill, «Data Structure for Soft Objects», The Visual Computer, Vol. 2, No. 4,
1986, pp. 227--234.
[22] B. Wyvill, «SOFT», SIGGRAPH '86 Electronic Theater and Video Review, issue 24, 1986.
[23] G. Wyvill, C. McPheeters and B. Wyvill, «Animating Soft Objects», The Visual Computer, Vol. 2, No 4, Aug.
1986, pp. 235--242.
[24] B. Wyvill, «The Great Train Rubbery», SIGGRAPH '88 Electronic Theater and Video Review, issue 26, 1988.
[25] B. Wyvill and K. van Overveld, «Tiling Techniques for Implicit Skeletal Models», in Implicit Surfaces for
Geometric Modeling and Computer Graphics, SIGGRAPH 1996, Course Notes, pp. C1.1--C1.26.
[26] Andrei Sherstyuk, «Convolution surfaces in computer graphics», In fulfillment of the requirements for the degree
of doctor of philosophy, School of computer science and software engineering, Monash University, Australia,
January, 1999
19
Download