एआर (ऑगमेंटेड रिएलिटी) फ़ाउंडेशन के लिए ऑगमेंटेड फ़ेस डेवलपर गाइड

खुद के ऐप्लिकेशन में इंसानों के चेहरे के ऊपर एसेट रेंडर करने के लिए, ऑगमेंटेड फ़ेस की सुविधा इस्तेमाल करने का तरीका जानें.

ज़रूरी शर्तें

आगे बढ़ने से पहले, पक्का करें कि एआर (ऑगमेंटेड रिएलिटी) के बुनियादी सिद्धांतों और एआरकोर सेशन को कॉन्फ़िगर करने का तरीका समझ लिया गया हो.

चेहरे पहचानें

चेहरों को ARFace ऑब्जेक्ट से दिखाया जाता है, जिन्हें ARFaceManager बनाते हैं, अपडेट करते हैं, और हटाते हैं. हर फ़्रेम के बाद, ARFaceManager एक facesChanged इवेंट शुरू करता है, जिसमें तीन सूचियां होती हैं: वे चेहरे जो जोड़े गए हैं, वे चेहरे जो अपडेट किए गए हैं, और वे चेहरे जिन्हें आखिरी फ़्रेम से हटा दिया गया है. जब ARFaceManager सीन में किसी चेहरे का पता लगाता है, तो यह Prefab को इंस्टैंश करता है, ताकि चेहरे को ट्रैक करने के लिए, ARFace कॉम्पोनेंट अटैच किया जा सके. Prefb को null छोड़ा जा सकता है.

ARFaceManager सेट अप करने के लिए, नया गेम ऑब्जेक्ट बनाएं और उसमें ARFaceManager जोड़ें.

Face Prefab के लिए, फ़ेस अनलॉक करने की सुविधा का इस्तेमाल चेहरे के बीच वाले पोज़ पर किया जाता है. Maximum Face Count से यह पता चलता है कि ज़्यादा से ज़्यादा कितने चेहरे ट्रैक किए जा सकते हैं.

जिन चेहरों की पहचान की गई है उन्हें ऐक्सेस करें

ARFace कॉम्पोनेंट की मदद से, चेहरे की पहचान की जाती है. यह कॉम्पोनेंट फ़ेस फ़ेस की सुविधा से जुड़ा होता है. ARFace वर्टेक्स, इंडेक्स, वर्टेक्स नॉर्मल, और टेक्सचर कोऑर्डिनेट दिखाता है.

खोजे गए चेहरे के हिस्से

ऑगमेंटेड फ़ेस एपीआई के बीच में पोज़, तीन आस-पास की मुद्राएं, और 3D फ़ेस मेश है.

मध्य स्थिति

बीच की पोज़, जो उपयोगकर्ता के सिर के बीच में होती है, वह ARFaceManager से प्रीफ़ैब करने के लिए शुरुआती जगह होती है. यह खोपड़ी के अंदर नाक के पीछे होता है.

बीच की मुद्रा में ये ऐक्सिस नीचे दिए गए हैं:

  • पॉज़िटिव X-ऐक्सिस (X+) बाएं कान की ओर संकेत करता है
  • पॉज़िटिव Y-ऐक्सिस (Y+), चेहरे से ऊपर की ओर पॉइंट करता है
  • सकारात्मक Z-अक्ष (Z+) सिर के बीच की ओर संकेत करता है

क्षेत्र की मुद्रा

उपयोगकर्ता के चेहरे के खास हिस्से, बाईं ओर के माथे, दाएं माथे, और नाक के पिछले हिस्से पर दिखते हैं. क्षेत्र की मुद्रा, ऐक्सिस की दिशा को उसी तरह फ़ॉलो करती है जिस तरह बीच में पोज़ होती है.

क्षेत्र की पोज़ का इस्तेमाल करने के लिए, ARFaceManager के सबसिस्टम को ARCoreFaceSubsystem में डाउनग्रेड करें. साथ ही, हर क्षेत्र के लिए पोज़ की जानकारी पाने के लिए, subsystem.GetRegionPoses() का इस्तेमाल करें. ऐसा करने का तरीका जानने के लिए, GitHub पर Unity का इस्तेमाल का उदाहरण देखें.

3D फ़ेस मेश

फ़ेस मेश में 468 पॉइंट होते हैं, जो एक इंसान का चेहरा बनते हैं. इसे बीच की पोज़िशन के हिसाब से भी तय किया जाता है.

फ़ेस मेश को विज़ुअलाइज़ करने के लिए, Face Prefab में ARFaceMeshVisualizer लगाएं. ARFaceMeshVisualizer एक Mesh जनरेट करेगा जो कि पहचाने गए चेहरे से मेल खाएगा. साथ ही, इसे अटैच किए गए MeshFilter और MeshColliders में मेश के तौर पर सेट किया जाएगा. चेहरे को रेंडर करने के लिए इस्तेमाल किए जाने वाले Material को सेट करने के लिए, MeshRenderer का इस्तेमाल करें.

AR Default Face Prefab, पहचानी गई मेश नेटवर्क पर डिफ़ॉल्ट कॉन्टेंट रेंडर करता है.

एआर (ऑगमेंटेड रिएलिटी) डिफ़ॉल्ट फ़ेस का इस्तेमाल शुरू करने के लिए यह तरीका अपनाएं:

  1. ARFaceManager सेट अप करें.
  2. नया चेहरा ऑब्जेक्ट बनाने के लिए, Hierarchy टैब में, + > XR > AR Default Face का इस्तेमाल करें. यह ऑब्जेक्ट कुछ समय के लिए है. इसे फ़ेस प्रीफ़ेब बनाने के बाद मिटाया जा सकता है.

  3. इंस्पेक्टर में AR Default Face को ऐक्सेस करें.

  4. Prefab बनाने के लिए, नए बनाए गए एआर डिफ़ॉल्ट फ़ेस को Hierarchy टैब से Project Assets विंडो में खींचें और छोड़ें.

  5. ARFaceManager के Face Prefab फ़ील्ड में, नए बनाए गए फ़ैफ़ब को 'फ़ेस प्रीफ़ेब' के तौर पर सेट करें.

  6. Hierarchy टैब में, चेहरे की ऑब्जेक्ट मिटाएं, क्योंकि अब इसकी ज़रूरत नहीं है.

मेश चेहरे के अलग-अलग कोनों को ऐक्सेस करें

मेश के कोनों की पोज़िशन को ऐक्सेस करने के लिए, face.vertices का इस्तेमाल करें. इससे जुड़े वर्टेक्स को ऐक्सेस करने के लिए face.normals का इस्तेमाल करें.

मेश चेहरे के अलग-अलग कोनों को देखें

ब्लेंडर का इस्तेमाल करके, इंडेक्स किए गए उन नंबर को आसानी से देखा जा सकता है जो फ़ेस मेश के कोनों से मेल खाते हैं:

  1. Blender खोलें और GitHub से canonical_face_mesh.fbx इंपोर्ट करें.
  2. Edit > Preferences > Interface पर नेविगेट करें.
  3. Display मेन्यू में जाकर, Developer Extras चुनें.

  4. 3D व्यूपोर्ट में क्लिक करके चेहरा चुनें, और संपादन मोड में जाने के लिए Tab दबाएं.

  5. Overlays व्यूपोर्ट के आगे मौजूद ड्रॉप-डाउन मेन्यू खोलें और Indices चुनें.

    ब्लेंडर फ़ेस मेश इंडेक्स

  6. वह वर्टेक्स हाइलाइट करें जिसका इंडेक्स नंबर आप तय करना चाहते हैं. सभी शीर्षों को हाइलाइट करने के लिए, Select > All का उपयोग करें.