Nicht in der Lage zu drehen ein SCNNode in ARKit
Ich bin versucht zu drehen SCNNode auf der y-Achse, so meine Knoten (Pfeil) Punkte in die richtige Richtung. Ich möchte eine navigation-app, die verwendet ARKit; jeder Pfeil muss auf den nächsten Ort der route, die ich erhalten habe. Der Abruf der route funktioniert einwandfrei.
Die Knoten werden Hinzugefügt, um die Stammknotens der Szene. Irgendwann habe ich Durchlaufen ein array von Knoten, um Sie zu positionieren in der Szene und gelten Skalierung der Knoten (aufgrund der Entfernung), die alles richtig gemacht haben. Allerdings, wenn ich mich bewerben rotation, hat dies keine Auswirkung. Die Drehung erfolgt durch ändern der Eigenschaft "Drehung" der Knoten:
directionNode.rotation = SCNVector4(x:0, y:1:, z:0, w:Float(bearing))
Dies hat nicht die gewünschte Wirkung. Ich habe auch versucht, den runAction Methode, auch keine Wirkung:
directionNode.runAction(SCNAction.rotateBy(x: 0, y: CGFloat(bearing), z: 0, duration: 0))
Hier ist der code, Positionen und skaliert den Knoten.
for i in 0...(directionNodes.count - 1) {
let directionNode = directionNodes[i]
let translation = MatrixHelper.transformMatrix(for: matrix_identity_float4x4, originLocation: startingLocation, location: directionNode.location)
let position = SCNVector3.positionFromTransform(translation)
let distance = directionNode.location.distance(from: startingLocation)
DispatchQueue.main.async {
let scale = 100 / Float(distance)
directionNode.scale = SCNVector3(x: scale, y: scale, z: scale)
directionNode.anchor = ARAnchor(transform: translation)
directionNode.position = position
if (i < (self.directionNodes.count - 1)) {
// Apply rotation to the arrow
let successiveStepLocation = self.directionNodes[i + 1].location!
let bearing = directionNode.location.bearingToLocationRadian(successiveStepLocation)
// rotate
directionNode.rotation = SCNVector4(x:0, y:1:, z:0, w:Float(bearing))
}
}
}
Dies ist alles verpackt in einem SCNTransaction.
Kann mir jemand sagen, warum die rotation der Knoten nicht funktioniert? Jede Hilfe wird sehr geschätzt.