2017-09-21 2 views
2

Ich bin eine schwierige Situation mit Blick auf hitTest mit: Optionen: in SceneKit auf iOS 11.iOS 11 SceneKit hitTest: Optionen: nicht

In einer maping Anwendung ich einen Gelände Knoten haben. Mit hitTest: Optionen: Ich konnte durch eine Berührung auf dem Bildschirm lange einen Punkt im Gelände erkennen. Es funktioniert immer noch wie erwartet mit der freigegebenen Binärdatei auf iOS 11, und auch auf Xcode 9 kompiliert Binär für iOS 10 Simulator.

Aber iOS 11 binär auf iOS 11 SDK gibt insgesamt erratische Ergebnisse. Rückgabe Array von hitTest: Optionen: kann kein Ergebnis oder zu viele enthalten. Außerdem ist meistens keines der Ergebnisse gültig. Hier unten sind Bilder zur Veranschaulichung des Punktes. Alle Bilder stammen aus einer Szene ohne versteckten Knoten.

Bearbeiten: Ich habe heute einen Test mit hitTestWithSegmentFromPoint: toPoint: Optionen: und habe auch falsche Ergebnisse.

Zuerst mit Arbeitssimulator.

one hit ok Es zeigt einen normalen Treffer im Gelände. Der Trefferpunkt ist mit einem roten Ball dargestellt. Es ist halb im Gelände, da sein Zentrum direkt auf dem Gelände liegt.

3 hits ok 3 hits ok yaw Diese beiden Bilder zeigen einen Fall, in dem die „ray“ das Gelände 3 Mal überqueren. Wir haben 3 Treffer alle korrekt auf dem Gelände platziert. Das zweite Bild ändert den Blickwinkel, um die 3 Punkte anzuzeigen.

nun die fehlerhafte iOS 11 Situation:

one hit ko Auf diesem Bild haben wir einen Hit, aber es ist „nowhere“ zwischen den beiden Bergen, nicht auf dem Gelände.

Die letzten beiden Bilder zeigen weitere Versuche mit 4 und 16 Treffern, alle "im Blau" ohne Verbindung zum Gelände.

Manchmal sind die Treffer "weg" vorbei am Gelände, manchmal sind sie zwischen der Kamera und dem Gelände.

4 hits ko 16 hits ko

+2

Ich bin auch mit Themen seit iOS 11. Das erste, was mit Blick auf, half, was mir sehr viel stellte fest, dass Apple den Standard-Suchmodus auf "am nächsten" geändert hat. Versuchen Sie es mit den folgenden Optionen, ich hoffe, es wird Ihnen helfen. wenn #available (iOS 11.0 *) { hitTestOptions [SCNHitTestOption.searchMode] = SCNHitTestSearchMode.all.rawValue } –

+0

Thanks @ PéterKovács, das war genau mein Problem. Funktioniert wieder wie ein Zauber. –

+0

Für mich löst die Option all das Problem nicht. Immer noch Punkte "im Blau" sehen –

Antwort

1

ich auf iOS vor dem gleichen Problem 11. Meine Lösung:

var hitTestOptions = [SCNHitTestOption.sortResults : NSNumber(value: true), 
         SCNHitTestOption.boundingBoxOnly : NSNumber(value: true)] 

if #available(iOS 11.0, *) { 
    hitTestOptions[SCNHitTestOption.searchMode] = SCNHitTestSearchMode.all.rawValue as NSNumber 
} 
+0

Mein Fehlerbericht erhalten Follow-up von Apple. Der Fehler ist teilweise bei 11.2 Beta behoben. Hat immer noch einige Schwierigkeiten, einen Punkt zu bekommen. –