Dans ARKit/SceneKit, lorsque l'utilisateur appuie sur le bouton, je souhaite appliquer une impulsion à mon nœud. Je veux que l'impulsion vienne du point de vue de l'utilisateur actuel. Cela signifie que le nœud s'éloignerait de la perspective de l'utilisateur. Je suis en mesure d'obtenir l'orientation/direction actuelle, grâce à ce code:Comment appliquer SCNVector3 force/impulsion à partir d'une orientation dans scenekit?
func getUserVector() -> (SCNVector3, SCNVector3) { // (direction, position)
if let frame = self.sceneView.session.currentFrame {
let mat = SCNMatrix4(frame.camera.transform) // 4x4 transform matrix describing camera in world space
let dir = SCNVector3(-1 * mat.m31, -1 * mat.m32, -1 * mat.m33) // orientation of camera in world space
let pos = SCNVector3(mat.m41, mat.m42, mat.m43) // location of camera in world space
return (dir, pos)
}
return (SCNVector3(0, 0, -1), SCNVector3(0, 0, -0.2))
}
via https://github.com/farice/ARShooter/blob/master/ARViewer/ViewController.swift#L191
J'ai un SCNVector arbitraire, que je l'ai créé. Il contient des informations sur la hauteur (axe des ordonnées), combien à gauche ou à droite, et combien à transmettre au nœud.
Je souhaite convertir/traduire mon SCNVector3 pour qu'il provienne de l'orientation/direction de la caméra.
Signification, je
let (direction, position) = self.getUserVector()
let force = SCNVector3(x: 1.67, y: 13.83, z: -18.3)
Comment puis-je appliquer le force
du lieu/origine du direction
?