Ich versuche, meinen Kopf um Apples ARKit API zu wickeln, und ich habe ihre example ARKitExample
project auf GitHub geschoben. In diesem Demo/Beispielprojekt bewegen Sie Ihre Telefonkamera in Ihrer Umgebung und es erscheint , um flache Oberflächen automatisch zu erkennen und eine Reihe von "Fokusquadrate" über der Stelle zu platzieren, an der Ihre Kamera über dieser Oberfläche zentriert ist. Wenn Sie dann eine "+"
UI-Schaltfläche drücken und aus einem von mehreren Objekten (Lampe, Becher, Vase usw.) auswählen, wird das virtuelle Objekt anstelle der Fokusquadrate gerendert. Sie können das alles in Aktion sehen right here das ist wahrscheinlich besser als ich versuche, es zu erklären!ARKit API von Beispiel
Ich versuche, den Platz im Code zu finden, wo das virtuelle Objekt tatsächlich aufgerufen und auf dem Bildschirm gerendert wird. Dies wäre nur, nachdem es ausgewählt ist, die ich denke stattfinden here:
@IBAction func chooseObject(_ button: UIButton) {
// Abort if we are about to load another object to avoid concurrent modifications of the scene.
if isLoadingObject { return }
textManager.cancelScheduledMessage(forType: .contentPlacement)
performSegue(withIdentifier: SegueIdentifier.showObjects.rawValue, sender: button)
}
Aber im Grunde wählt der Benutzer ein virtuelles Objekt und dann wird es gemacht, wo der Fokus Platz derzeit befindet - I Suchst du, wo das passiert, irgendwelche Ideen?
Sie in der Nähe sind. Die 'performSegue'-Funktion sollte Ihnen sagen, dass die Aktion in einem anderen' ViewController' passiert ist, in diesem Fall 'ViewController + ObjectSelection.swift' und genauer gesagt' virtualObjectSelectionViewController (_: VirtualObjectSelectionViewController, didSelectObjectAt index: Int) '. – axelspark
Danke @axelspark (+1) - so sieht es aus wie "virtualObjectManager.loadVirtualObject" ist, wo Objekte geladen werden zu einem bestimmten Ort auf dem Bildschirm dann? – smeeb
wird es ja aber nicht zu einem bestimmten Ort auf dem Bildschirm des Geräts geladen. Der dritte Parameter dieser Funktion wandelt die "bildschirmlokale" Koordinate in eine "reale Welt-global" -Koordinate um, so dass Sie Ihre Kameraansicht "vom Bildschirm des Geräts" entfernen können, das Objekt jedoch immer noch an der gleichen Position bleibt, wenn Sie die Kamera bewegen zurück – axelspark