Ограничитель «Обтягивание» (shrinkwrap constraint)

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

Как и другие ограничители, „Shrinkwrap“ игнорирует геометрию объекта-владельца ограничения и работает исключительно с его ориджином. Это означает, что если ориджин будет находиться в его центре, объект будет погружаться в „целевой“ меш, а не располагаться на его поверхности. Это можно компенсировать с помощью параметра „Distance“.

Опции (options)

../../../_images/animation_constraints_relationship_shrinkwrap_panel.png

Ограничитель «Обтягивание».

Цель (target)

Меш-объект, к которому будет производиться привязка.

Расстояние (distance)

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

Режим (mode)

Метод вычисления точки привязки на поверхности цели.

Ближайшая точка поверхности (nearest surface point):

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

Проецировать (project):

Проецирует исходное положение владельца вдоль определённой оси и производит его привязку к первому пересечению с поверхностью „цели“. См. раздел о настройках режима проецирования ниже.

Ближайшая вершина (nearest vertex):

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

Проецировать вдоль нормалей цели (target normal project):

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

Данный режим даёт более лучшие результаты, чем режим „Nearest Surface Point“, но также является и более медленным в вычислениях. Кроме того, нормаль поверхности вычисляется путём интерполяции нормалей окружающих вершин, которые могут не совпадать с ожидаемой нормалью, если меш использует плоский шейдинг.

Режим привязки (snap mode)

Определяет способ применения смещения на заданное „расстояние“.

На поверхности (on surface):

Производить привязку к точке, находящейся на „расстоянии“ от поверхности и расположенной на той же стороне, что и исходное положение владельца ограничения: если владелец ранее находился за пределами меша, он останется за её пределами, а если внутри – будет оставаться внутри.

Наружу к поверхности (outside surface):

Производить привязку к точке, находящейся на „расстоянии“ от поверхности и расположенной снаружи, независимо от того, где изначально находился владелец ограничения.

Над поверхностью (above surface):

Аналогично режиму „Outside Surface“, но смещение применяется вдоль интерполированной нормали поверхности. (В других режимах оно применяется вдоль линии между исходным положением владельца ограничения и точкой привязки на поверхности „цели“).

Внутри (inside):

«Прижимает» меш с определённого „расстояния“ и удерживает владельца ограничения внутри „цели“. (Если владелец уже находился внутри объёма, в котором действует прижимная сила, ограничение действовать не будет.)

Наружу (outside):

«Выталкивает» меш с определённого „расстояния“ за пределы внутреннего объёма „цели“. (Если владелец уже находился за пределами объёма, в котором действует выталкивающая сила, ограничение действовать не будет.)

Режимы „Inside“ и „Outside“ можно использовать для очень примитивного обнаружения столкновений. Поскольку они проверяют только ближайшую грань „целевого“ меша, они не дадут ожидаемого результата вблизи острых углов.

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

Выровнять по нормали (align to normal)

Выравнивает указанную локальную ось владельца ограничения по интерполированной нормали поверхности „цели“. Это делается с помощью колебательного вращения.

Недоступно для режима „Nearest Vertex“.

Влияние (influence)

Определяет величину воздействия ограничения на владельца.

Настройки режима „Project

Ось проецирования (project axis)

Ось и направление проекцирования. Если пересечение найдено не было, – положение владельца остаётся неизменным.

Пространство (space)

Координатное пространство для оси проецирования.

Расстояние (distance)

Расстояние отсечения, после которого предполагается, что проецирование не удалось, при этом положение остаётся неизменным. Значение „0“ означает отсутствие лимита.

Обратное проецирование (project opposite)

Также производить проецирование и в противоположном направлении (вдоль той же оси).

Отбрасывать на задние грани (face cull)
Выключить (off):

Производить привязку к первой встречной грани независимо от её нормали.

Спереди (front):

Не производить привязку в случае если проекция попала на переднюю сторону грани (в частности, если нормаль грани направлена к владельцу ограничения). В целом, это означает, что владелец будет привязан к поверхности, если он находится внутри целевого меша, и сохранит своё исходное положение в противном случае.

Сзади (back):

Не производить привязку в случае если проекция попала на обратную сторону грани (в частности, если нормаль грани направлена в сторону от владельца ограничения). В целом, это означает, что владелец будет привязан к поверхности, если он находится за пределами целевого меша, и сохранит своё исходное положение в противном случае.

Инвертировать отбрасывание (invert cull):

Если опция „Project Opposite“ была включена и было обнаружено пересечение в этом противоположном направлении, используйте опцию для обратного действия „Face Cull“ (то есть «назад», если было выбрано «спереди», и наоборот).

Пример