2017-06-29 8 views
6

मैंने कैमरे की ओर इशारा करते हुए एक सतह पर एक घन (एससीएनएनओडी) प्राप्त करने में कामयाब रहा है, हालांकि मुझे सरल करना बहुत कठिन लगता है (?) एक ही स्थिति में पाठ रखने का कार्य।ARKit: कैमरे के सामने एक विशेष बिंदु पर एक एससीएनटीएक्स्ट रखना

मैंने एससीएनटीएक्स्ट और बाद में एससीएनएनोड बनाया है, हालांकि जब मैं इसे रूट नोड में जोड़ता हूं तो टेक्स्ट हमेशा मेरे सिर से ऊपर और कैमरे को दाईं ओर जोड़ता है (जो मुझे वैश्विक मूल बिंदु बताता है)।

यहां तक ​​कि जब मैं घन के लिए उपयोग की गई स्थिति के सटीक वही मानों का उपयोग करता हूं, तब भी SCNText नोड एक ही स्थान पर मेरे सिर के ऊपर रखा जाता है।

क्षमा करें यदि यह एक मूल प्रश्न है, तो मैंने पहले कभी सीनिट में काम नहीं किया है।

उत्तर

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 सीनकिट इकाइयों लंबा है। लेकिन ARKit 1 SceneKit इकाइयों = 1 मीटर में!

+0

किसी भी विचार को obj-c में यह कैसे करना है? –

संबंधित मुद्दे