Наверно точнее будет не "против", а "вместо".
В примере будем использовать самые простые формы, чтобы легче было понять суть алгоритма.
Для начала немного теории. Параметры полотна будут интересны только если мы пожелаем дополнить метод. Но это может потребоваться в самом конце, для самых любознательных, поэтому их мы затрагивать не будем. Нам важны всего два параметра объекта твердой коллизии Depth и Offset. Разберемся как они работают.
Offset - расстояние которое будет выдержанно между поверхностью объекта твердой коллизии и полотном во время симуляции. Параметр работает со стороны поверхности в которую направлены нормали. Тут все просто.
Depth - несколько интереснее. Это расстояние от поверхности (обратите особое внимание, именно поверхности, а не объема) со стороны противоположной нормалям. Любая вершина полотна, проникшая на сторону противоположную направлению нормалей меньше заданного, будет вытолкнута на противоположную сторону. Это распространяется на все вершины, даже заблокированные, если они участвуют в твердой коллизии. Как можно видеть из прилагаемой схемы, его величина может быть большой только на плоских поверхностях, на объемах необходимо следить чтобы область его влияния на различных участках не пересекалась. Такое пересечение не критично, но если на вершину будут влиять сразу различные участки поверхности - это может приводить к нежелательным артефактам.
Оба параметра задаются в системных единицах.
Для примера за объект твердой коллизии (Wrap-To) возьмем геосферу.
Поверхность которой сделаем рельефной с помощью нойза.
В случаях когда рельеф очень глубокий нам потребуется сделать релакс поверхности, может быть и в несколько этапов. Делается это как раз для корректной работы параметра Depth в дальнейшем.
Наш объект твердой коллизии почти готов.
Теперь небольшое отступление. Отправимся в цех штамповки.Штамповка - процесс обработки заготовки давлением. Если простым языком, то заготовка помещается в пресс, где с помощью совмещения двух форм (пуансона и матрицы) она приобретает заданную ими форму. Именно этот алгоритм мы и воплотим в нашем виртуальном мире. ;)
Наш пресс - параметр Depth, наши пуансон и матрица - поверхность геосферы. Все что необходимо, это сделать поверхность двойной. Именно между ними будет укладываться нужная нам сетка. Накидываем модификатор Shell (1) . Толщину зададим в обе стороны в 1мм.(2) и в дальнейшем эту величину укажем в оффсете.
Выворачиваем нормали.
Теперь сама форма. Тут все что необходимо и угодно, на сколько хватит ваших потребностей, умения и фантазии. Если говорить о ретопологии, как одном вариантов применения данного алгоритма, то можно:
- путем нехитрых манипуляций создать форму из существующей ( оптимизация, квадрафикация, смуз сетки)
- создать лоу заготовку и затем сгладить
- отрисовать заготовку по поверхности и сгладить
- сглаженный примитив (чем мы и воспользуемся)
Боксик.
Сглаживаем до нужной плотности сетки (1) и центрируем с геосферой (2). Чем больше сетка будет приближенна по форме и объему к исходной, тем проще будет процесс симуляции.
На оба объекта модификатор Cloth, где бокс полотно, а геосфера - объект твердой коллизии. Для полотна уменьшим изгиб (1), позволим лучше растягиваться уменьшив стрейч (2) и в зависимости от формы изменим скейл (3).
Для геосферы - Depth исходя из выше изложенного (1), Offset на величину 1мм.(2) (как в Shell, если забыли). И также обнулим все трение (3).
В параметрах симулятора оставим только твердую коллизию (1). Все что осталось - это несколько раз запустить процесс симуляции (2). А между ними последовательно, начиная с верхнего, убирать сделанный на геосфере релакс.
Результат достигнут, наша форма точно повторила исходную.
Файл примера можно забрать тут , версия 2010.
Разумеется сразу напрашиваются вопросы: "Зачем это? Как это использовать? Если для ретопологии, то существует множество других, более простых способов." Спорить не буду. Грешен и я использованием змешера.) Сам использую данный алгоритм или его части в процессе моделирования, для быстрого восстановления формы после релакса, нарезки, смуза.
Описывая данный метод, я не сколько не претендую на то, что он быстрее и лучше других подойдет под те или иные задачи. Он просто другой. И отсюда ему доступно то, что не смогут остальные.
Как Вы могли понять, основное отличие данного алгоритма от других это то, что мы как бы обтягиваем исходную форму эластичным, плотно прилегающим материалом. А следовательно есть небольшое продолжение.
Пока в стеке висит клоуз мы получаем дополнительный возможности, доступные для редактирования полотна.
-заблокировав нужные вершины и устанавливая их положение через вершину стека, можно добиться их точного положения необходимого нам.
-используя группы можем стянуть или расслабить сетку в нужных местах.
-подтянут полотно в интерактивном режиме.
-и даже остается вариант редактирования формы через исходную.
Вот! Как то так! :)
Если что не так, Извините ! Удачи !!!