2016-08-01 57 views
0

Ich muss eine Ansicht mit Benachrichtigung in meiner Szene an einer bestimmten Position anzeigen. Diese Benachrichtigung sollte unabhängig von der Entfernung dieselbe Größe haben. Aber am wichtigsten ist, dass es wie 2D-Objekt aussehen sollte, egal welche Drehkamera es hat. Ich weiß nicht, ob ich tatsächlich ein 2D-Objekt einfügen kann, das wäre großartig. Bisher experimentiere ich mit SCNNodes, die Box enthalten. Ich weiß nicht, wie man sie immer in Richtung Kamera dreht (die in jeder Achse rotiert). Ich versuchte zu verwendenSceneKit - Anzeige der 2D-Ansicht innerhalb der Szene um (x, y, z)

Dies funktioniert fast, aber Knoten sind alle in einem beliebigen Winkel gedreht. Sieht aus wie UIView mit angewendeter Rotation. Kann mir jemand dabei helfen?

Antwort

0

Setzen Sie Ihre 2-D-Objekte auf eine SCNPlane. Machen Sie den Ebenenknoten zu einem Kind Ihres Kameraknotens. Positionieren und drehen Sie das Flugzeug nach Belieben und lassen Sie es dann in Ruhe. Jedes Mal, wenn sich die Kamera bewegt oder dreht, wird sich das Flugzeug bewegen und drehen, wobei es immer gleich aussieht.

+0

Das ist nicht wirklich, was ich brauche, ich möchte diese Objekte in 3D-Welt bei gegebenem X, Y, Z bleiben, so dass wenn ich Kamera Objekte wie in 3D-Welt drehen, können sie auf den Bildschirm gelangen. Aber ich muss diese Objekte in Richtung Kamera zeigen, was bei (0,0,0) ist. Ich habe versucht, SCNLookAtConstraint zu verwenden, aber ich hatte Probleme damit zu arbeiten, wenn Objekte verschoben wurden (sie müssen sich mit 1 Sekunde Animation bewegen). Ich bin mir sicher, dass es eine Methode gibt, den Drehpunkt für die gegebene Position zu berechnen, so dass der Knoten zur Kamera zeigt, aber ich kann ihn nicht finden. –

+0

Diese Methode funktioniert fast, aber es gibt ein Problem damit - wenn Bewegung Animation beginnt, springt Objekte zurück zu seiner ursprünglichen Drehung, weil ich Beschränkung entferne, und wenn Animation beendet wird, kippt zurück. Ich brauche diese Beschränkungen, um von altem Wert zu neuem zu animieren, also ist es fließend. Wahrscheinlich muss ich eine andere Methode verwenden, da dies nur funktioniert, wenn ich Constraint wie folgt zurücksetze. 'node.constraints = []' ' node.runAction (SCNAction.moveTo (enuLocation, Dauer: 1), completionHandler: { ' 'node.constraints = [SCNLookAtConstraint (target: self.cameraNode)]' ' }) ' –

0

Ok ich weiß, wie es jetzt geht. Erstellen Sie einen leeren Knoten ohne Geometrie und fügen Sie einen neuen Knoten mit SCNLookAtConstraint hinzu. Dann kann ich diesen unsichtbaren Knoten mit Animation bewegen, und der Unterknoten bleibt in der Kamera.