Как можно применить «импульс» к перемещению камеры, перемещаемому пользователем в SceneKit? - PullRequest
0 голосов
/ 26 мая 2020

Я думал, что это будет просто, но я изо всех сил пытаюсь понять, где это будет.

В нашем приложении мы отображаем трехмерную гистограмму со временем по оси X . Эта ось проходит далеко за края видимого экрана. У нас есть жест «перетаскивания», с помощью которого они могут перемещаться влево и вправо по графику, и он соответственно перемещает камеру и визуализирует ее. Достаточно просто.

Что мы пытаемся сделать, так это придать этому движению импульс, как UIScrollView, где, если они проведут пальцем, диаграмма продолжит движение после того, как они позволят go, замедляясь до тех пор, пока, наконец, не остановится.

Моя первая мысль - превратить камеру в физический объект, но я столкнулся с проблемами, пытаясь выполнить передачу от перетаскивания до момента, когда пользователь разрешает go, что-то, что UIScrollView делает за вас.

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

Так есть ли другой способ добиться этого?

Примечание: мы также пытались использовать allowsCameraControl, но мы хотим ограничить его только вдоль оси X без масштабирования или вращения, и я не видел, как ограничить это с SCNCameraControlConfiguration.

Использование Swift5 с iOS 13, если это важно.

...