2017-10-11 10 views
0

Donc,ARKit: Place SCNNode (géométrie plane) à une position donnée, face à SCNCamera mais avec un décalage d'angle autour de Y?

J'ai la position exacte à laquelle je veux placer le nœud. Si je teste des choses avec une géométrie de la sphère, je peux placer des sphères dans le monde en disant le nœud:

node.simdPosition = Position

(je fournis la « position » comme entrée à la fonction).

Qui place avec succès l'objet dans le monde exactement où je veux qu'il aille.

Ce que je veux vraiment faire est de placer un avion:

 let plane = SCNPlane(width: 0.2, height: 0.3) 
     plane.cornerRadius = plane.width/10 
     plane.firstMaterial?.diffuse.contents = UIColor.red 
     plane.firstMaterial?.specular.contents = UIColor.white 
     let node = SCNNode(geometry: plane) 

ensuite dire à être placé à la « position »:

node.simdPosition = position 

Tout cela fonctionne avec le plan aussi bien. Ce que j'ai des problèmes avec l'angle:

Je veux dire le nœud de l'avion à placer avec un "angle" donné (autour de Y) décalage à la caméra. J'ai essayé cela, mais il ne fonctionne pas:

node.rotation = SCNVector4Make(0, 1, 0, currentFrame.camera.eulerAngles.z - angle) 

Alors, la question est, comment un nœud peut être placé à une certaine position et au moment où il se place dans le monde, ont aussi un certain angle Y décalage de la perpendiculaire à la caméra?

+0

cela a fonctionné: node.eulerAngles = SCNVector3Make (0, cameraEulerAngles.y - Float (0.7), 0) – zumzum

Répondre

0

j'utilisais le mauvais angle d'Euler ... (z)

Cela fait fonctionner:

node.eulerAngles = SCNVector3Make (0, cameraEulerAngles.y - flotteur (0,7), 0)