Если коротко:
Grip socket хранит положение и ориентацию руки относительно предмета, чтобы рукоять попадала в ладонь одинаково при каждом захвате. В Unreal Engine можно выбрать ближайшую допустимую точку, учесть левую и правую руку и связать сокет с позой кисти. Для двуручного предмета основная и вспомогательная точки должны иметь отдельные правила, а snap следует сочетать с понятной обратной связью.
VR grip sockets Unreal Engine хранит как авторские положения и ориентации руки относительно предмета.
Grip socket хранит положение и ориентацию руки относительно предмета. Без него система часто прикрепляет центр mesh к контроллеру, и рукоять оказывается сбоку от ладони. Сокеты делают хват повторяемым и отделяют авторскую позу от общей логики grab.
Структура данных
Для каждой точки храните transform, допустимую руку, тип хвата, приоритет и идентификатор позы пальцев. Эти данные удобнее держать в компоненте или asset, чем кодировать именами сокетов.
Имя может оставаться соглашением для быстрого поиска, но игровая логика должна проверять свойства явно.
Выбор точки
При нажатии система получает сокеты в радиусе и оценивает расстояние до ладони, угол подхода и доступность. Ближайший по позиции не всегда лучший: рука может находиться с обратной стороны рукояти.
Добавьте небольшую устойчивость выбора. Пока пользователь не вышел из зоны, подсветка не должна перескакивать между соседними точками.
Левая и правая рука
Поза может зеркалиться, если скелет и предмет симметричны. Для сложной формы надёжнее отдельные transforms. Проверяйте оси костей: простое отрицательное масштабирование способно перевернуть ориентацию.
Snap и свободный хват
Для инструмента полезен точный snap. Для коробки или камня естественнее свободная ближайшая точка поверхности. Один объект может поддерживать оба режима: основную рукоять и физический захват корпуса.
Переход к сокету можно интерполировать очень коротко, но пользователь не должен видеть, как предмет долго «улетает» из руки.
Поза кисти
Сокет задаёт ладонь, а pose asset — пальцы. Проверяйте пересечение с mesh для обеих рук и разных масштабов аватара. На кнопках оставьте пальцу возможность анимироваться независимо от основного хвата.
Вторая рука
Дополнительный сокет задаёт опорную точку. После захвата второй рукой предмет ориентируется по линии между руками или ограниченному transform. Ведущая рука сохраняет основное управление, чтобы система не меняла ось при небольшом шуме.
Отладка
Нарисуйте оси всех сокетов, радиус выбора и итоговый transform ладони. Отдельно тестируйте масштабированный mesh, смену руки и захват возле стены.
Базовая физика разобрана в руководстве физический захват предметов.
Итог
Grip sockets превращают случайное прикрепление в авторский хват. Храните их как данные, оценивайте не только расстояние, разделяйте левую и правую руку и связывайте transform с позой кисти. Тогда одна система поддерживает точный инструмент, свободный предмет и двуручное взаимодействие без отдельных Blueprint-костылей.