NodeIcon FixIntersections

Пытается зафиксировать самопересечения максимально жестким образом. Позволяет пользователю определить, какие вершины будут трансформированы и как конечный результат будет смешан с исходной моделью (для плавного перехода). Также позволяет указать геометрию для столкновения, которая не будет деформироваться, а будет использоваться для деформации входной геометрии в случае пересечения между ними.


Примечание

Для достижения желаемого результата может потребоваться настройка параметров.

В идеале геометрия не должна иметь отверстий. При их наличии, они заполняются изнутри, аналогично FillHoles (опция Веер треугольников с дополнительной точкой). Для этого требуется, чтобы геометрия была манифолдной. Чтобы создать манифолдную геометрию из неманифолдной, можно использовать RepairGeom.

Внимание

Нода может выдать плохой результат, если геометрия для столкновения имеет самопересечения.

Рекомендуется проверить не создала ли нода FillHoles каких либо самопересечений.

Случаи использования

  • Враппинг часто создает самопересекающуюся геометрию, причем наиболее часто в областях губ и глаз.

../../_images/Lips.png
  • Глазницы при враппинге обычно подвергаются жесткой трансформации, что может привести к пересечению их с веками.

../../_images/Eyes.png
  • Зубы обычно представляют собой отдельный объект и при слиянии образуют пересечение с губами и ротовой полостью.

../../_images/Teeth.png

Входы

Геометрия

Geometry Геометрия для исправления пересечений.

Маска вершин

VertexMask (необязательно) Набор вершин для трансформации, их позиции интерполируются между исходной моделью и конечным результатом в зависимости от значений маски, аналогично MixGeom.

Все вершины, если не указано.

Геометрия для столкновения

Geometry (необязательно) Геометрия, которая не будет деформироваться, а вместо этого будет использоваться для деформации Geometry.

Нет, если не указано.

Выход

Geometry Геометрия с исправленными внешними и самопересечениями.

Параметры

Максимум итераций:

Максимальное количество раз, когда будут обнаружены пересечения и запущена оптимизация.

Точность итерации:

Максимальная ошибка оптимизации по всем вершинам. Значения ближе к 0 теоретически приводят к более высокой точности, но могут значительно увеличить время вычислений.

Вес гладкости:

Насколько гладкой должна быть деформация.

Начальные веса вершин:

Насколько вершины должны придерживаться своих начальных позиций.

Вес столкновения:

Насколько приоритетным является разрешение коллизий.

Уменьшение веса при столкновении:

Насколько учитывать коллизии из предыдущих итераций. Диапазон значений от 0 (учитывать коллизии только из текущей итерации) до 1 (в равной степени учитывать коллизии из всех итераций).

Расстояние разрешения (см):

Желаемое расстояние между ранее пересекавшимися регионами.

Макс. расстояние столкновения (см):

Точки пересечения, разделенные расстоянием, превышающим это значение, учитываться не будут.

Обнаружение столкновения:

Если предоставлена геометрия для столкновения, алгоритм обнаружения столкновений будет использовать его вершины вместе с вершинами входной геометрии для обнаружения внешних пересечений.

Примечание

Вес гладкости, Начальный вес вершин и Вес столкновения подлежат балансировке. Например, более высокий показатель Вес гладкости может привести к незафиксированным пересечениям. Общее правило — сохранять их в диапазоне от 0 до 10. Однако устанавливать для Вес гладкости и Начальный вес вершин значение 0 не рекомендуется, так как это приводит к неоднозначности.

Примечание

Точность итерации, равная 0,1 или 0,01, обычно достаточна, но более сложные задачи могут потребовать большей точности. Если проблема достаточно проста, изменение Точности итерации может не привести к визуально заметной разнице.

Совет

Из-за особенностей оптимизации алгоритма полученные расстояния могут не совпадать в точности с Расстоянием разрешения (см). Более того, не все пересечения в конечном итоге могут быть исправлены. В этом случае попробуйте увеличить асстоянием разрешения (см). Альтернативное решение — увеличить Максимальное количество итераций, но это достигается за счет скорости.

Если результат неудовлетворительный (расстояния кажутся непоследовательными), разумным вариантом будет оставить небольшое (возможно, 0) значение Расстояние разрешения (см) и применить второе FixIntersections с желаемым Расстояние разрешения (см) на выходе.

Распространённые ошибки

Нет пересечения вершин

Алгоритм обнаружения столкновений использует вершины, чтобы определить, произошло ли пересечение. Пересечения между полигонами, не содержащие вершин, не будут обнаружены и, по сути, могут привести к ложным срабатываниям. Ложные срабатывания могут привести к тому, что непересекающиеся части модели будут перетаскиваться друг к другу, образуя «шипы».

Поэтому рекомендуется проверить, нет ли таких пересечений, или использовать SubdivideGeom, если таковые имеются.

../../_images/Vertices.png

Пики также могут появляться из-за нескольких перекрывающихся пересечений или нескольких пересечений разного типа. В этом случае попробуйте уменьшить значение Уменьшение веса при столкновении. Возможно, это результат одного из предыдущих столкновений. Если это не помогло, попробуйте уменьшить значение Максимальное расстояние столкновения (см), чтобы исключить ложные пересечения.