2017-09-19 6 views
0

Je travaille sur une application AR. J'utilise https://docs-assets.developer.apple.com/published/c5ad3d23f4/Handling3DInteractionandUIControlsinAugmentedReality.zip comme exemple. J'essaie d'implémenter une superposition sur chaque nœud enfant d'un objet 3D avec une description textuelle de celui-ci. Pour cela, j'ai essayé d'obtenir la position de chaque nœud enfant. Par exemple, si nous prenons l'objet chaise dans l'échantillon de la pomme, quand je regarde dans l'éditeur de scène Xcode, tous les nœuds enfants sont placés dans la même position. Comment obtenir la position centrale d'un nœud enfant dans ce cas? Par exemple, si je dois obtenir l'env. position des jambes de la chaise, comment faire cela?Comment obtenir la position des nœuds enfants en utilisant Scenekit - ARKit dans iOS 11?

Répondre

1

La position d'un nœud est toujours relative à un autre nœud, à tout le moins le nœud racine de la scène. Pour obtenir la position d'un nœud enfant par rapport au nœud racine (c'est-à-dire la position dans l'espace monde), vous pouvez utiliser convertPosition pour: rootNode. Pour obtenir la position d'un nœud enfant par rapport au parent, vous pouvez convertir la position dans l'espace du nœud parent.

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

Une fois que vous obtenez l'espace mondial coordonnées, vous pouvez utiliser ProjectPoint pour convertir la position 3D en coordonnées écran 2D: https://developer.apple.com/documentation/scenekit/scnscenerenderer/1524089-projectpoint

Si le pivot d'un pied de chaise ne se trouve pas au centre de les jambes, la position ne sera pas en son centre non plus. Dans ce cas, pour obtenir le centre, utilisez la moyenne des valeurs minimale et maximale de la zone de délimitation des nœuds (voir SCNBoundingVolume) ou utilisez simplement un décalage dans la position 2D pour la superposition.

+0

Oui, j'ai transformé la position par rapport à l'espace du monde, mais toutes les positions des nœuds enfants sont exactement les mêmes. Quand je regarde dans l'éditeur de scène Xcode, je peux voir que tous les nœuds enfants sont identiques. Quand cela arrivera-t-il? Est-ce un bug avec le modèle que j'utilise? Même pour le modèle de chaise, toute la position des nœuds enfants reste la même. – yaali