2017-09-21 4 views
2

Je suis face à une situation difficile en utilisant HitTest: options: en SceneKit sur iOS 11.iOS 11 SceneKit hitTest: Options: ne

Dans une application Maping J'ai un noeud de terrain. Utilisation de hitTest: options: J'ai été capable de repérer un point sur le terrain depuis un contact sur l'écran. Il fonctionne toujours comme prévu avec binaire publié sur iOS 11, et également sur binaire compilé Xcode 9 pour iOS 10 simulateur.

Mais iOS 11 binaire sur iOS 11 SDK donne des résultats totalement erématiques. Renvoie le tableau de hitTest: options: peut ne contenir aucun résultat ou trop. De plus, la plupart du temps aucun des résultats n'est valide. Voici ci-dessous des images pour illustrer le point. Toutes les images proviennent d'une scène sans nœud caché.

Modifier: J'ai fait un test aujourd'hui en utilisant hitTestWithSegmentFromPoint: toPoint: options: et j'ai aussi obtenu des faux résultats.

D'abord avec un simulateur de travail.

one hit ok Il montre un hit normal sur le terrain. Le point de vie est illustré avec une boule rouge. Il est à moitié inséré dans le terrain car son centre est juste sur le terrain.

3 hits ok 3 hits ok yaw Ces deux images montrent un cas où le "rayon" traverser le terrain 3 fois. Nous avons obtenu 3 coups tous placés correctement sur le terrain. La deuxième image change l'angle de vue pour montrer les 3 points.

Maintenant, la situation iOS 11 ne:

one hit ko Sur cette image nous avons eu un coup, mais il est « nulle part » entre les deux montagnes, et non sur le terrain.

Les deux dernières images montrent d'autres tentatives avec 4 et 16 hits, toutes "dans le bleu" sans connexion au terrain. Parfois, le coup est «loin» du terrain, parfois entre la caméra et le terrain.

4 hits ko 16 hits ko

+2

Je suis également face à des problèmes depuis iOS 11. La première chose, ce qui m'a beaucoup aidé était de constater que Apple a changé le searchMode par défaut à «plus proche». Essayez avec les options suivantes, j'espère que cela vous aidera. si #available (iOS 11.0, *) { hitTestOptions [SCNHitTestOption.searchMode] = SCNHitTestSearchMode.all.rawValue } –

+0

Merci @ PéterKovács, c'est exactement mon problème. Fonctionne comme un charme à nouveau. –

+0

Pour moi, l'option tout ne résout pas le problème. Toujours voir des points "dans le bleu" –

Répondre

1

je faisais face au même problème sur iOS 11. Ma solution:

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

Mon rapport de bug est suivi par Apple. Le bug est en partie résolu sur 11.2 beta. Encore quelques difficultés pour avoir un point à tout moment. –