2017-06-29 58 views
6

我已經成功地獲得放置在指向相機表面上的立方體(SCNNode)的前一個特定的點,但我發現很難做簡單的( ?)也將文字置於同一位置。ARKit:配售SCNText在相機

我已經創建了SCNText和隨後的SCNNode,但是當我將它添加到rootNode時,文本總是似乎被添加到我的頭上方並且離開相機到右邊(這告訴我這是全局原點)。

即使當我用我用的立方體位置完全相同的值,則SCNText節點仍然得到在同一地點放在我頭上。

道歉,如果這是一個基本的問題,我從來沒有在SceneKit工作過。

回答

12

座標中心爲SCNGeometry是其中心點。但是,當你創建一個SCNText中心點是在某處左下角:

Center point for a box

Center point for text

您需要首先將文本居中。

func center(node: SCNNode) { 
    let (min, max) = node.boundingBox 

    let dx = min.x + 0.5 * (max.x - min.x) 
    let dy = min.y + 0.5 * (max.y - min.y) 
    let dz = min.z + 0.5 * (max.z - min.z) 
    node.pivot = SCNMatrix4MakeTranslation(dx, dy, dz) 
} 

編輯:

還要注意這可以通過檢查包含文本節點的邊框,並設置一個支點轉換爲文本中心更改其實際中心完成this answer,它解釋了一些額外的陷阱: 16磅字體大小的文本是16個SceneKit單位高。但在ARKit 1 SceneKit單位= 1米!

+0

任何想法如何在obj-c中做到這一點? –