2017-06-29 14 views
6

Kameranın işaret ettiği bir yüzeye yerleştirilmiş bir küp (SCNNode) almayı başardım, ancak bunu yapmak çok zor. ?) metni aynı konuma yerleştirme görevi.ARKit: Bir SCNText'i kameranın önündeki belirli bir noktaya yerleştirme

SCNText ve sonraki SCNNode'u oluşturdum, ancak rootNode'a eklediğimde, metnin her zaman başımın üstüne eklendiği ve kameranın sağ tarafına eklendiği görüldü (ki bu bana global başlangıç ​​noktasını gösteriyor).

Küp için kullandığım aynı konum değerlerini kullandığımda bile, SCNText düğümü hala başımın üzerinde aynı noktaya yerleştirilir.

Eğer bu temel bir soru ise özür dilerim, daha önce SceneKit'te hiç çalışmamıştım.

cevap

12

SCNGeometry koordinat merkezi merkez noktasıdır. Ama eğer bir SCNText merkez noktasını oluştururken sol alt köşesinde bir yerdedir:

Center point for a box

Center point for text

Önce metni ortalamak gerekir.

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) 
} 

Düzenleme::

Ayrıca unutmayın Bu metni içeren düğümün sınırlayıcı kutuyu işaretleyip pivot gerçek merkeze metinler merkezini değiştirmeye dönüşümü ayarlayarak yapılabilir this answer, bazı ek tuzakları açıklar: 16 punto yazı boyutu olan bir metin 16 SceneKit birimi uzunluğundadır. Fakat ARKit 1 SceneKit ünitelerinde = 1 metre!

+0

Bu fikri nasıl yapabilirim? –

İlgili konular