Я пытаюсь направить круг со стрелкой вверху на узел в сценическом наборе, но всегда держу его ограниченным или плоским к точке обзора. Кажется, что при рассмотрении ограничения, ограничение билборда игнорируется.
Вот настройка для ограничений:
let billboardConstraint = SCNBillboardConstraint ()
billboardConstraint.freeAxes = SCNBillboardAxis.Y
let lookatConstraint = SCNLookAtConstraint ( target: targetNode )
lookatConstraint.localFront = SCNVector3Make ( 0, 1, 0 )
lookatConstraint.worldUp = SCNVector3Make ( 0, 1, 0 )
arrowNode.constraints = [billboardConstraint, lookatConstraint]
self.sceneView.pointOfView?.addChildNode ( arrowNode )
Вот примеры изображений проблемы. Первое изображение - это то, как я хочу его сохранить, второе изображение показывает уплощение, которое я не могу контролировать:
Независимо от того, что я пытаюсь, он не остается лицом к камере. Я попытался приравнять расстояние по оси z как к узлу стрелки, так и к целевому узлу (все еще вращает узел стрелки, нежелательно), попытался установить блокировку карданного подвеса (откидывает узел стрелки), попытался отрегулировать углы для узла стрелки, чтобы сохранить он "смотрел" на точку зрения и пытался использовать SCNCone в качестве указателя.
Я также попытался просто переместить этот узел стрелки в вид изображения в оверлее, с невидимым узлом стрелки внутри Scenekit, но не смог получить правильную математику при попытке CGAffineTransform 2d UIImageView. Я попытался получить вектор вращения для SCNNode, который имеет SCNLookatConstraint, пробовал projectpoint и т. Д. c. Не совсем понял. Может быть, я должен был уделять больше внимания в старшей школе: - (
У кого-нибудь есть идеи: