2017-09-19 2 views
0

Ich arbeite an einer AR-basierten Anwendung. Ich verwende https://docs-assets.developer.apple.com/published/c5ad3d23f4/Handling3DInteractionandUIControlsinAugmentedReality.zip als Beispiel. Ich versuche, eine Überlagerung über jeden Kindknoten eines 3D-Objekts mit Textbeschreibung desselben zu implementieren.Wie bekomme ich Child Nodes Position mit Scenekit - ARKit in iOS 11?

Dafür habe ich versucht, die Position jedes Kindknoten zu bekommen. Zum Beispiel, wenn wir Stuhlobjekt in der Probe des Apfels nehmen, wenn ich in den Xcode-Szeneneditor schaue, werden alle Kindknoten an der gleichen Position platziert. Wie erhält man in diesem Fall die zentrale Position eines Kindknotens? Zum Beispiel wenn ich die ca. Position der Stuhlbeine, wie geht das?

Antwort

1

Die Position eines Knotens ist immer relativ zu einem anderen Knoten, zumindest dem rootNode der Szene. Um die Position eines Childnodes relativ zum Rootnode (d. H. Die Position im Weltbereich) zu erhalten, können Sie convertPosition in: rootNode verwenden. Um die Position eines Childnode relativ zum Parent zu erhalten, können Sie die Position in den Space des Elternknotens umwandeln.

https://developer.apple.com/documentation/scenekit/scnnode/1407990-convertposition

Nachdem Sie die Welt-Raum erhalten Koordinaten Sie Project können die 3D-Position in 2D-Bildschirm konvertieren Koordinaten: https://developer.apple.com/documentation/scenekit/scnscenerenderer/1524089-projectpoint

Wenn der Dreh eines Stuhlbein nicht im Zentrum von entfernt die Beine, die Position wird auch nicht in der Mitte sein. Verwenden Sie in diesem Fall den Mittelwert des Min- und Max-Werts der Bounding-Box der Knoten (siehe SCNBoundingVolume) oder verwenden Sie einfach einen Versatz in der 2D-Position für die Überlagerung.

+0

Ja, ich habe die Position relativ zum Welt-Raum transformiert, aber immer noch alle Kind-Knoten-Position sind genau gleich. Wenn ich in den Xcode Scene Editor schaue, kann ich sehen, dass die Position aller Kindknoten gleich ist. Wann wird das passieren? Ist es ein Fehler mit dem Modell, das ich verwende? Selbst für das Stuhlmodell bleibt die Position aller Kindknoten gleich. – yaali

Verwandte Themen