вторник, 14 июня 2011 г.

GPU-сгенерерированные процедуры анимации ветра для деревьев (Перевод) Часть 1

Renaldas Zioma
Электронные Искусства / Цифровые Иллюзии CE



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

6.1 Введение

Ветер - важный элемент в создании правдоподобной и визуально приятной растительности. Проблема моделирования движения дерева, находящегося под влиянием ветра, является одной из сложных научных тем. Большинство научных подходов используют физические методы моделирования, основанные на уравнениях движения, которые применяют силу ветра к отдельным ветвям. Такие методы моделирования обычно являются препятствующими для ограниченных временем прикладных задач, и кроме того, они могут привести к менее естественному взгляду из-за врожденной сложности основной проблемы.
Фактически движение деревьев под действием ветра зависит от различных факторов, таких как чопорность и длина ветвей, размер и форма вершины листа, условий действия ветра, и его силы у вершины дерева, как отметил Harker в 2002 .
Учитывая сложность сил, затрагивающих деревья на ветру и фактических наблюдений за деревьями при естественных условиях, мы можем заметить, что движения дерева случайны. Таким образом, множество методов не используют физически правильное моделирование, вместо этого моделируют движение дерева как вероятностный процесс.

6.2 Процедурные анимации на GPU

Учитывая большое количество необходимого оборудования, для того чтобы визуализировать окружающую среду, мы нуждаемся в эффективном методе и для моделирования и для интерпретации растительности. Смотря на курс развития графических аппаратных средств, можно прийти к предположению о том, что моделируемая растительность будет все более и более сложна. Цели нашего подхода (1): разгрузить моделирование движения деревьев от центрального процессора до GPU, (2); усилить аппаратные средства, приводящие в качестве примера, чтобы сократить количество, выполняемых требований; и (3) позволить бесшовную интеграцию с техниками  симуляции флюидов, основанными на GPU, для развивающейся области ветра (Harris 2004)., на основе GPU .

6.3 Феноменологический подход

Физически правильное моделирование движения дерева - очень сложное, с огромными вычислительными затратами, которые слишком высоки для приложений в реальном времени. Вместо этого мы хотим сконцентрироваться на визуальном аспекте моделирования. Как Stam (1997) заметил, движения деревьев в поле ветра в природе являются хаотическими. Таким образом, мы можем приблизить сложную основную динамику, используя искажение или прогрессию периодических функций. Это наблюдение и будет основой нашего метода. Чтобы увеличить реализм существующих подходов, мы выбрали различимые визуальные явления и построили их в ряд простых правил. Конечные движущие силы дерева синтезируются, комбинируя шумовые функции согласно ряду тех правил.
6.3.1 Поле Ветра
Чтобы упростить вычисления, мы определяем ветер как двухмерное силовое поле по ландшафту. Основанный на аэродинамике метод для моделирования объектов в направленных потоках, представленных в 1991 Wejchert, определяет представление силовых полей. Такие поля определяют направление и скорость ветра. Другое обычно используемое название для таких полей - векторные поля.
Векторное поле может быть сохранено как разреженная структура данных. Глобальное направление и скорость ветра могут быть сохранены наряду с редко помещенными примитивами ветра, как в Di Giacomo 2001, или маленькие векторные архитектуры, чтобы добавить подробности в фиксации явлений поля ветра, вызванных взрывами или роторами низколетящего вертолёта, например. Примитив ветра определен как аналитическая функция:
v = Г (x, t),где x - двумерный вектор, представляющий позицию в примитиве ветра, и v - вектор ветра в данной позиции. Время t представляет развитие ветра в течение долгого времени. Примитив ветра позволяет нам вычислять направление и скорость ветра для каждого отдельного пункта в поле, например, от вращения или вихрения.
6.3.2 Концептуальная Структура Дерева
Концептуально, дерево состоит из основного ствола, ветвей, и листьев. Такая структура может быть представлена как упрощенная иерархия связанных твердых сегментов со стволом, как корнем иерархии. Каждая ветвь представлена как единственный твердый сегмент и может вращаться вокруг точки, которая соединяет его с родительской ветвью. Хотя ветви реального дерева не тверды и могут изгибаться, мы не представляем ветви с несколькими сегментами, поскольку так делают много других методов  (такие как Kanda 2003). Вместо этого данное качество оставляем в интерпретации, где это просто как визуальный эффект.
В поверхностной иерархии, обычно два - три глубоких узла достаточно, чтобы представить визуально вероятное древесное движение. Пример иерархии, представляющей дерево с ветвями, показывают в иллюстрации 6-1. Позже мы представим структуру для того, чтобы сгенерировать анимацию, моделируя угловое движение в соединениях иерархии.
clip_image001
Древовидная структура, представленная на иллюстрации 6-1, является представительницей трёхузловой иерархии
По причинам производительности мы опускаем прямое влияние листьев и маленьких ветвей к полному движению дерева. Однако такие эффекты могут быть неявным образом включены в стохастическое моделирование.
Мы предполагаем, что дерево первоначально находится в состоянии равновесия. Внутренние силы ограничивающие дерево, такие как сила упругости листьев, компенсирует сила тяжести. Автономные инструментальные средства или моделирующие пакеты могут решить эти ограничения.
6.3.3 Две Категории Моделирования
Уровни детализации симуляции (SLODs) в анимации походят на геометрические уровни детализации (LODs). Сложное моделирование на расстоянии может быть заменено упрощенной версией с минимальной визуальной ошибкой. Движение ствола дерева - самая важная визуальная часть программы на расстоянии; в непосредственной близости естественное движение ветвей становится более важным. Мы хотим выделить ствол и ветви как две важные категории моделирования. Обе категории извлекают выгоду из того же самого стохастического подхода моделирования; однако, у каждого есть его собственные подробности реализации.
Переходы между различным SLODs показывают визуальное выталкивание; однако, такие побочные эффекты частично скрыты из-за хаотической природы маленького движения ветвей и аморфной формы кончика листа.
Анимация Ствола
Движение ствола - главным образом результат силы тяжести. В этой главе мы используем, силу тяжести с точки зрения аэродинамики: сумма внешних сил, действующих на твердое тело в направлении потока. Чтобы моделировать динамическое движение ствола, мы должны смоделировать силу тяжести на каждой ветви и повернуть расположенную иерархию ствола вниз.
Однако это потребовало бы окончания всех моделирований ветвей прежде, чем ствол мог бы быть обработан. Таким образом, этот подход не удовлетворил бы реализации на GPU. Таким образом, мы выбираем противоположный подход. Мы замечаем, что сумма всех сил, распространенных с ветвей на ствол, приведет к хаотическому движению ствола. Таким образом, мы опускаем прямые физические эффекты ветвей и вместо этого неявно включаем их в шумовую функцию, представляющую движение ствола как более высокое искажение частоты.
Наряду с главной силой, есть много других важных явлений, затрагивающих вид движения ствола. Во-первых, инерция, следующая из древесной массы и чопорности ствола, затронет амплитуду и поведение движения. Во-вторых, из-за неравного распределения ветвей, движение ствола покажет некоторый перпендикуляр движения, чтобы проверить направление наряду с небольшим количеством вращения вдоль оси ствола. . И наконец, турбулентность в поле ветра очень важна, чтобы избежать противоестественного синхронного движения в кластерах деревьев.
 По причинам производительности мы хотели бы объединить все эти силы и моделировать их как единственный вероятностный процесс. К счастью, есть отношение между внешними силами, физическими свойствами леса, и получающимся движением ветвей (Ota 2003):
m(t) + c v (t) + k x (t) = f (t),где м. является массой, и c и k коэффициенты заглушения и чопорности, соответственно. Сила f объясняет внешнюю загрузку. Векторы a, v, и x представляют получающееся линейное ускорение, линейную скорость, и позицию ветвей, соответственно.
Такое отношение позволяет нам приближать основную динамику и синтезировать движение . Вместо того чтобы явно решить динамическое уравнение, мы непосредственно комбинируем движение получающейся функции и  диапазона частот. Пример такой шумовой функции, составленной из прогрессии волн, представлен в иллюстрации 6-2.

clip_image002

Иллюстрация 6-2 Шумовая Функция, Используемая для Анимации Ствола дерева
В иллюстрации 6-2 сегмент A представляет дерево, наклоняющееся далеко от сильного ветра. Сегмент B представляет объединенный эффект бури: временное уменьшение силы тяжести приводит к сильному ответу стволом из-за внутренней упругой (весенней) силы. Другими словами, дерево отскочило и "промахнулось" точкой равновесия. Более высокое искажение частоты добавляет хаотические подробности, моделируя эффект меньших ветвей.
Мы можем моделировать дерево с большей массой и понизить адаптационную способность, понижая амплитуду функции и уменьшая частоту. Иллюстрация 6-3 показывает пример такой функции.
clip_image003
Иллюстрация 6-3 Шумовая Функция, Используемая для Анимации Большого Ствола, Жесткого Дерева
Конечная анимация ствола следует из комбинации двух шумовых функций, представляя параллель движения и перпендикуляр к направлению ветра. Дополнительная третья шумовая функция может использоваться, чтобы моделировать небольшое вращение вокруг оси ствола. Как  мы уже отметили, амплитуды перпендикулярного движения и вращения намного ниже по сравнению с параллельным движением. Таким образом, намного более простые шумовые функции могут использоваться, чтобы моделировать такие движения, сохраняя то же самое визуальное качество.
Анимация Ветвей
Многочисленные методы моделирования древесного движения предлагают моделировать действие ветра на ветвях, поскольку сила тяжести безупречна. Однако, такой подход полностью не удовлетворяет деревьям с относительно широкими, плоскими листьями на жестком черешке , или вечнозеленым растениям с толстой ножкой. Мы замечаем, что ветви таких деревьев показывают больше аэродинамических свойств, и мы предлагаем анализировать их как крылья в поле ветра. Так ветви будут подниматься, находясь в поле ветра. Подъём с точки зрения аэродинамики определен как сумма всех внешних сил на теле, действующем перпендикулярно к направлению потока.
Снова, мы явно не вычисляем, силы тяжести и подъёма для ветвей. Вместо этого мы хотим аппроксимировать поведение ветвей рядом простых правил, имея в виду, как силы тяжести и подъема затронули бы крылообразные объекты с одной точкой ограничения (такими как ветви, стыкующиеся со стволом или с другими ветвями). 
Мы можем отличить три различных случая пространственного отношения между ветвью и основным стволом:
  • Ветвь находится на стоящей перед ветром стороне дерева.
  • Ветвь находится на противоположной стороне дерева.
  • Ветвь перпендикулярна направлению ветра.
Если ветвь будет стоять перед ветром, как изображено в иллюстрации 6-4, комбинации сил подьёма и тяжести, прижмут её к стволу, и таким образом ветвь покажет менее свободное колебание. Для ветви на задней стороне дерева, турбулентность в дереве и сила подъёма будут господствовать над движением ветви, как показано в иллюстрации 6-5. Такая ветвь покажет движение высокой амплитуды, такое как случайное колебание или качание. Наконец, для ветви перпендикулярно направленной к ветру, огромная сила тяжести, и большой угол атаки заставит её изгибаться вокруг оси родительской ветви. Кроме того, сила подъема будет крутить ветвь немного вокруг ее собственной основной оси, как показано в иллюстрации 6-6.
clip_image004
Иллюстрация 6-4 Ветвь, Стоящая лицом к ветру
clip_image005
Иллюстрация 6-5 Ветвь на Обратной Стороне Ствола
clip_image006
Иллюстрация 6-6  Ветвь, расположенная перпендикулярно к направлению ветра
Даже простая периодическая функция приводит к визуально приятному поведению ветви, движущейся согласно предыдущим правилам. Фактическое моделирование движения для ветви будет взвешенной суммой моделируемых случаев. Поскольку все случаи представлены как периодические функции, нет никакой потребности явно решать задачу для изгиба, и скручивания. Такие ограничения смоделированы как модификаторы амплитуды для
периодических функций.

Поскольку получающееся движение - взвешенная сумма описанных случаев, сдвиги могут появиться на некоторых ветвях. Однако, такой побочный эффект визуально не заметен и может быть пренебрежён.

Комментариев нет:

Отправить комментарий