Как мне повернуть узел SCNNode, чтобы посмотреть на другой узел, сохраняя при этом его уровень крена и шага с камерой?
Я использую ARKit, чтобы направить людей в положение в физическом мире, используя стрелку, прикрепленную к узлу камеры. Применение lookAtConstraint к стрелке с целью узла в месте, которое я хочу, почти делает то, что мне нужно. Однако мне нужно остановить движение стрелки влево и вправо и наклон вверх и вниз. Пример пользовательского интерфейса
1 ответ
Вы пробовали установку isGimbalLockEnabled
в true
ограничить вращение рулона? В документации Apple упоминает: "Например, когда вы заставляете камеру следовать за движущимся объектом, установка этого свойства в true гарантирует, что горизонт остается ровным с точки зрения камеры".
Если это по-прежнему не то, что вы ищете, вам может понадобиться написать собственное ограничение, используя функцию класса SCNTransformConstraint.orientationConstraint
, Вы можете написать ограничение как вторичное ограничение, которое в основном ограничивает повороты по осям X и Z, или вы можете написать собственное ограничение просмотра с большим количеством ограничений (в этом случае я бы рекомендовал посмотреть на simd.look(at:)
функции, а затем ограничивая оси ориентации оттуда).
Это должно помочь вам в этом, или я могу добавить код позже, если он не работает. Удачи!