अपने ऐप्लिकेशन में, लोगों के चेहरों पर ऐसेट रेंडर करने के लिए, ऑगमेंटेड फ़ेस का इस्तेमाल करने का तरीका जानें.
ज़रूरी शर्तें
आगे बढ़ने से पहले, पक्का करें कि आपने एआर के बुनियादी कॉन्सेप्ट और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया हो.
चेहरे पहचानें
चेहरों को ARFace
ऑब्जेक्ट से दिखाया जाता है. इन्हें ARFaceManager
से बनाया, अपडेट, और हटाया जाता है. हर फ़्रेम के लिए, ARFaceManager
एक facesChanged
इवेंट को ट्रिगर करता है. इसमें तीन सूचियां होती हैं: जो चेहरे जोड़े गए हैं, जो चेहरे अपडेट किए गए हैं, और जो चेहरे पिछले फ़्रेम के बाद हटाए गए हैं. जब ARFaceManager
को सीन में किसी चेहरे का पता चलता है, तब यह चेहरे को ट्रैक करने के लिए एक ARFace
कॉम्पोनेंट अटैच करके Prefab को इंस्टैंशिएट करेगा. प्रीफ़ैब को null
पर सेट किया जा सकता है.
ARFaceManager
को सेट अप करने के लिए, एक नया गेम ऑब्जेक्ट बनाएं और उसमें ARFaceManager
जोड़ें.
Face Prefab, चेहरे के बीच वाले पोज़ में प्रीफ़ैब इंस्टैंशिएट किया हुआ है. Maximum Face Count से पता चलता है कि ज़्यादा से ज़्यादा कितने चेहरों पर नज़र रखी जा सकती है.
पहचाने गए चेहरों को ऐक्सेस करना
ARFace
कॉम्पोनेंट से, पहचाने गए चेहरों को ऐक्सेस किया जा सकता है. यह कॉम्पोनेंट, Face Prefab से जुड़ा होता है. ARFace
, वर्टिसेस, इंडेक्स, वर्टिक्स नॉर्मल, और टेक्स्चर कोऑर्डिनेट उपलब्ध कराता है.
पहचाने गए चेहरे के हिस्से
Augmented Faces API से आपको सेंटर पोज़, तीन रीजन पोज़, और एक 3D फ़ेस मेश मिल जाता है.
सेंटर पोज़
सेंटर पोज़, उपयोगकर्ता के सिर के बीच में होता है. यह ARFaceManager
से इंस्टैंशिएट किए गए प्रीफ़ैब का ऑरिजिन पॉइंट होता है. यह खोपड़ी के अंदर, नाक के पीछे होता है.
सेंटर पोज़ के ऐक्सिस इस तरह के होते हैं:
- पॉज़िटिव X-ऐक्सिस (X+) बाएं कान की ओर पॉइंट करता है
- पॉज़िटिव Y-ऐक्सिस (Y+), चेहरे से ऊपर की ओर इशारा करता है
- पॉज़िटिव Z-ऐक्सिस (Z+) सिर के बीच में होता है
क्षेत्र के हिसाब से पोज़
उपयोगकर्ता के चेहरे के अहम हिस्सों को बाएं माथे, दाएं माथे, और नाक के ऊपरी हिस्से में दिखाया जाता है. क्षेत्र पोज़ उसी ऐक्सिस ओरिएंटेशन का पालन करते हैं जो सेंटर पोज़ में होता है.
क्षेत्र के पोज़ का इस्तेमाल करने के लिए, ARFaceManager
के सबसिस्टम को ARCoreFaceSubsystem
पर डाउनकास्ट करें. साथ ही, हर क्षेत्र के पोज़ की जानकारी पाने के लिए, subsystem.GetRegionPoses()
का इस्तेमाल करें. ऐसा करने का उदाहरण देखने के लिए, GitHub पर Unity का इस्तेमाल का सैंपल देखें.
3D फ़ेस मेश
चेहरे के मेश में 468 पॉइंट होते हैं, जो किसी व्यक्ति के चेहरे को बनाते हैं. इस पोज़ को बीच वाले पोज़ के हिसाब से भी तय किया जाता है.
फ़ेस मेश को विज़ुअलाइज़ करने के लिए, Face Prefab में ARFaceMeshVisualizer
अटैच करें. ARFaceMeshVisualizer
, पहचाने गए चेहरे से जुड़ा Mesh
जनरेट करेगा. साथ ही, इसे अटैच किए गए MeshFilter
और MeshCollider
में मेश के तौर पर सेट करेगा. चेहरे को रेंडर करने के लिए इस्तेमाल होने वाले Material
को सेट करने के लिए, MeshRenderer
का इस्तेमाल करें.
AR Default Face Prefab, पहचाने गए चेहरे के मेश पर डिफ़ॉल्ट मटीरियल रेंडर करता है.
एआर की डिफ़ॉल्ट फ़ेस का इस्तेमाल शुरू करने के लिए, यह तरीका अपनाएं:
ARFaceManager
सेट अप करें.Hierarchy टैब में, नया फ़ेस ऑब्जेक्ट बनाने के लिए, + > XR > AR Default Face का इस्तेमाल करें. यह ऑब्जेक्ट कुछ समय के लिए है और इसे 'फ़ेस प्रीफ़ैब' बनाने के बाद मिटाया जा सकता है.
इंस्पेक्टर में AR Default Face को ऐक्सेस करें.
प्रीफ़ैब बनाने के लिए, Hierarchy टैब से बनाई गई नई एआर डिफ़ॉल्ट फ़ेस को खींचकर Project Assets विंडो में छोड़ें.
ARFaceManager
के Face Prefab फ़ील्ड में, नए बनाए गए प्रीफ़ैब को चेहरे के प्रीफ़ैब के तौर पर सेट करें.Hierarchy टैब में, चेहरे के ऑब्जेक्ट को मिटाएं, क्योंकि अब इसकी ज़रूरत नहीं है.
चेहरे के जाल के अलग-अलग कोनों को ऐक्सेस करें
चेहरे के मेश के वर्टिसेस की पोज़िशन ऐक्सेस करने के लिए, face.vertices
का इस्तेमाल करें. उससे जुड़े वर्टिक्स नॉर्मल ऐक्सेस करने के लिए, face.normals
का इस्तेमाल करें.
चेहरे के मेश के अलग-अलग वर्टिसेस को विज़ुअलाइज़ करना
Blender का इस्तेमाल करके, फ़ेस मेश के वर्टिसेस से जुड़े इंडेक्स नंबर आसानी से देखे जा सकते हैं:
- Blender खोलें और GitHub से
canonical_face_mesh.fbx
इंपोर्ट करें. - Edit > Preferences > Interface पर नेविगेट करें.
Display मेन्यू में जाकर, Developer Extras चुनें.
3D व्यूपोर्ट में जाकर, चेहरे पर क्लिक करके उसे चुनें. इसके बाद, बदलाव मोड में जाने के लिए Tab दबाएं.
Overlays व्यूपोर्ट के बगल में मौजूद ड्रॉप-डाउन मेन्यू खोलें और Indices चुनें.
उस वर्टेक्स को हाइलाइट करें जिसका इंडेक्स नंबर आपको तय करना है. सभी शीर्षों को हाइलाइट करने के लिए, Select > All का इस्तेमाल करें.