Je veux qu'un nœud que j'ajoute à ma scène pointe vers le nord. Je reçois les données d'en-tête de l'emplacement principal, ce qui représente la direction à laquelle le périphérique est actuellement confronté au moment où ma scène a été créée (et donc la direction de mon nœud racine), puis j'ajoute l'en-tête à mes nouveaux eulerAngles.y
pour le faire pivoter afin qu'il soit orienté vers le nord.Le «cap» du nœud racine d'ARSCNView ne correspond pas au cap du dispositif
func renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval) {
if sceneNode == nil,
let heading = self.locationManager.heading {
sceneNode = SCNNode()
sceneNode.eulerAngles.y += Float(heading).degreesToRadians
sceneView.scene.rootNode.addChildNode(sceneNode)
}
}
L'information de cap est correct, et par rotation de façon qui fait beaucoup tourner par la quantité nécessaire, en supposant que le titre est le même sens que mon nœud racine est confronté. Mais je constate que la direction de mon nœud racine n'est pas équivalente à l'endroit où se trouve le cap du périphérique, et peut parfois être sauvagement désactivée. Cela signifie que l'hypothèse que le titre est le même que le «titre» du nœud de la scène est incorrecte, et que je dois savoir à quelle distance du titre il est, pour pouvoir le corriger correctement dans mon sceneNode
.
Qu'est-ce que [world alignment] (https://developer.apple.com/documentation/arkit/arsessionconfiguration.worldalignment) utilisez-vous pour la configuration de votre session? – rickster
@rickster Ah. Ouais, c'était ce que je cherchais, si vous voulez ajouter ça comme réponse. – Andrew