簡體   English   中英

如何在iOS 11中使用Scenekit-ARKit獲取子節點位置?

[英]How to get Child Nodes position using Scenekit - ARKit in iOS 11?

我正在開發基於AR的應用程序。 我以https://docs-assets.developer.apple.com/published/c5ad3d23f4/Handling3DInteractionandUIControlsinAugmentedReality.zip為例。 我正在嘗試在具有相同文字說明的3D對象的每個子節點上實現覆蓋。

為此,我試圖獲取每個子節點的位置。 例如,如果我們以蘋果樣本中的椅子對象為例,當我查看Xcode場景編輯器時,所有子節點都放置在同一位置。 在這種情況下,如何獲取子節點的中心位置? 例如,如果我必須得到大約。 椅子腿的位置,該怎么做?

一個節點的位置始終相對於另一個節點,至少是場景的rootNode。 要獲得子節點相對於根節點的位置(即,在世界空間中的位置),可以使用convertPosition到:rootNode。 要獲取相對於父節點的子節點的位置,可以將其轉換為父節點的空間。

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

獲取世界空間坐標后,可以使用projectPoint將3D位置轉換為2D屏幕坐標: https : //developer.apple.com/documentation/scenekit/scnscenerenderer/1524089-projectpoint

如果椅子腿的樞軸不在腿的中心,則該位置也將不在其中心。 在這種情況下,要獲得中心,請使用節點邊界框​​的最小值和最大值的平均值(請參見SCNBoundingVolume),或僅在2D位置中使用一個偏移量作為疊加層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM